In a technology company, a manager is an intersection between the technology, the business, the user experience, and the delivery team who makes all this happen. However, the key role of the manager is that of a facilitator, an individual who ensures the end result is produced within the defined time and a specified budget.
Managers are often told that they need to focus on the people and processes, not on the programming. Getting the hands dirty with code is the job of the team. However, we feel that to lead a technical team, along with having exemplary people-management and business skills, a manager also should know how to code, and to code well.
Here are some reasons why we feel so:
The art of empathy
Managers are the problem-solvers for a team. And good problem-solving capabilities emerge not only from an innovative mind but also from the capability to empathize with the team’s challenges and problems.
Knowing how to code, having a deep understanding of elements like technical debt, the unreliability of estimation, the capability to implement a critical bug fix, etc. give managers insights into the kind of challenges developers might face in their development journey. Having coding knowledge also helps managers empathize with the technical difficulties a team faces ‘right now’, determining what needs to be done, helping in prioritizing work, and proactively assuaging the challenges a team can be facing.
This empathy also helps managers motivate their team members, show them how their work is important and where it fits in the bigger picture.
Given the pace of technological change and customer expectations, it becomes imperative for development teams to have meaningful conversations to build a great product or service. Which is the right technology for the product or service? What should the product road map look like? How can you build the product using the current technology stack? What kind of technical debt could you be looking at as a result of the technology choice? How should the feature prioritization take place? Clearly, building a great product in today’s market requires the teams to cover their ground more comprehensively.
A good manager with strong coding skills can help teams navigate these challenging and yet, pertinent conversations. She can help the team remove technology bias and leverage a technology stack that is right for the project. Strong technical skills help managers identify if the challenges the team is facing are really hard or if they are ignorant of how to make things easier and solve a problem. A technically strong manager can make good decisions for a team and build meaningful interactions around how the software should work, about the trade-offs involved, and ask tough questions, and also once in a while, call someone’s bluff.
Help developers make good programming decisions
As the leader of a team, a manager has the prime responsibility to help their team build products and services that help in achieving business objectives. Knowing good programming techniques and practices, agile techniques, good domain knowledge, design principles, solid knowledge of coding and testing standards, etc. help them in assisting developers to make good programming decisions.
The programmers also tend to respect and implement these decisions since they know that these learnings come from hands-on experience. A great manager can field questions like which tool to use, how to set the programming pace, which module to prioritize, refactor now or later, etc. and give solutions to the team, answer their questions, and help them make better programming decisions.
Become the solution driver
Great managers are representatives of the team. How can they be great representatives if they are not able to solve the challenges the team faces or are unable to come up with technical solutions in the time of need? It is always the manager who the team looks towards when they have their back to the wall.
There are so many moving parts in the development universe, and it becomes essential to know how each influences the other. For a manager well-versed in technology and coding experiences, taking a solutions-driven approach to all challenges becomes a mainstay.
Knowing what the alternative option is, what are the trade-offs between them, what are the risks involved, etc. and how the project is likely to get impacted as a result of these decisions can only come from having gotten your hands dirty.
With a strong coding background managers can provide solutions to challenges the team faces. This also leads to many ‘teaching moments’ where the manager can help their team become more solution-driven by helping them learn and understand the right questions to ask.
In conclusion – Be a better team representative
A good manager is also one who can represent their teams’ work well to others. Given the sheer number of stakeholders in a software project, one role of the manager is to also provide reporting on and showing the progress report of the team. This can often lead to technical questions, and having the technical ability to answer them with confidence comes from the practice of doing the ground-level work.
Being involved in all technical decisions, understanding why certain trade-offs are made, why certain programming and development practices were chosen, etc. help the managers become better team representatives. It also helps the team see how their work matters. Consequently, it also helps to build team morale. Because the team then knows that the manager is walking the talk…not just talking it.