Companies are shifting away from hiring for specific programming skills and know-how in lieu of finding candidates who are adaptable and quick to learn on their feet. But once you find these individuals, it’s crucial that you maintain that learning environment, for the sake of the software engineer as well as the company.
Ron Lichty, consultant and co-author of Managing the Unmanageable, has decades of experience in this area. From leading Apple’s Finder and Applications group — the team developing the Macintosh’s user interface, which some say is what set Apple apart from their competition — to building the first investor tools at Charles Schwab, he’s seen just how much learning opportunities can motivate and empower software engineers.
Furthermore, he’s seen these learning opportunities not only make for a stronger team but a more robust product. In Managing the Unmanageable, Lichty and co-author Mickey W. Mantle explore Frederick Herzberg’s seminal work from the 1950s, which identified what people are motivated (and demotivated) by. Lichty and Mantle took this one step further and applied it to software engineers. Learning is second in the list for satisfaction and as they point out, is not only essential for keeping your software engineers happy, but for making your product successful.
There are two primary reasons why this principle is important:
1) To maintain client or customer advantage, we need our programming teams to find the best solutions.
2) To maintain stability (and with stable code, the ability to go fast), we need to identify and hone in on best practices.
Enabling your software engineering team to find the best solution possible while maintaining the stability of your product is key to a successful business. This can be facilitated a few different ways:
Let your engineering team know that their feedback is valued and that all opinions are welcome. Empowering them to bring different options to the table encourages a thirst for knowledge as well as an awareness of advances in their specific field of technology. This exploration should be balanced with making sure you don’t reinvent the wheel. Lichty explains:
“It’s really important not to solve problems that have already been solved. The Internet is a crucial tool for looking for and seeing if a solution already exists. One reason why programming is hard is that it’s hard to estimate whether we should be doing something new or simply reusing what’s already out there. If there’s a stable and reliable solution that already exists, our mission should be to find that solution, rather than create our own.”
Allow for Mistakes.
Blameless postmortems are an important part of DevOps and Agile cultures. This means you view mistakes and errors with a perspective of learning instead of liability. As John Allspaw, Founder of Adaptive Capacity Labs, says,
“Having a Just Culture means that you’re making effort to balance safety and accountability. It means that by investigating mistakes in a way that focuses on the situational aspects of a failure’s mechanism and the decision-making process of individuals proximate to the failure, an organization can come out safer than it would normally be if it had simply punished the actors involved as a remediation.”
Hire for Empathy.
Make sure that the problem you’re solving for addresses the root of the issue, not just the superficial complaint. By building a team of software engineers who are excited about solving problems for customers, you’ll not only be taking care of bugs but building out features and solutions that will facilitate further success for your customers.
The next question is, how do you, as a manager, foster this type of effective learning environment? Stay tuned for more advice from Ron Lichty and the team at PlusPlus, coming soon.
Originally published at plusplus.co on October 10, 2018.
Soft skills are as critical as technical skills for a software engineer. No one works in isolation. Each person has to deal with teammates, colleagues, managers, etc. Therefore team interpersonal skills are essential too. Soft skills include things like good communication, honesty, teamwork, integrity, organization, empathy, etc.