What does it take to be a successful manager in a progressive software development company? What are the traits you need to have to build solid software development teams and ship great products? I have recently read a great book The Hard Thing About Hard Things by Ben Horowitz and in one of the chapters he is pointing out something he wrote years ago when building his product management team: Good Product Manager / Bad Product Manager. This made me think about what does it take to be successful as software development manager and this is what I came up with…
Good engineering managers understand the development process, constantly strive to improve it and make sure team follows what was agreed. They understand the key priorities for the team and are able to make difficult decisions when the team is being forced to handle more than possible. Good engineering managers take it on their shoulders to have the tough discussions with other stakeholders. They challenge the team’s estimates and push for as realistic view of the work as possible.
Bad engineering managers push the team to follow the process mindlessly without understanding that the process is just the means to some end and not the end by itself. They are afraid to make difficult decisions. They would rather push the team to provide unrealistic estimates than face the other stakeholders and tell them that the requirements are not doable.
Good engineering managers know the industry and what is the standard. They are constantly in touch with Product Managers, Sales and Technical Support to know what the market looks like, what the product strategy is and why there are certain priorities in the product. Bad engineering managers wait for product management to tell the team what to do and are not able to provide the engineering team the big picture.
Good engineering managers focus on creating value for customers. They drive the team to focus on reducing issues related to installation, upgrade, integration, supportability and maintainability. They negotiate hard with product management to limit the amount of technical debt. Bad engineering managers just stay away from any engineering related decisions on the product.
Good engineering managers understand the content of the release, what is behind every single feature and are able to explain the current status even when woken up in the middle of the night. Good engineering managers know what is the product team working on every single day, they are actively identifying issues and risks and drive them to resolution.
Bad engineering managers are just proxies. They rely on information fed them by the team leads. They bring no real values neither to the project, nor to the team. Bad engineering managers communicate poorly outside of engineering, and frequently hide the issues in the hopes that it will get somehow resolved. When being asked for the status, content of the release or biggest risks they have to go back to the team and ask.
Good engineering managers provide feedback, raise risks and issues and make sure these are discussed and resolved. Good engineering managers ensures that the teams follow the best engineering practices and that these are shared between the teams. Bad engineering managers don’t even know what their product does, they treat people as numbers and have no idea who the best and worst performers on their teams are. They take no interest in understanding the technologies and people. They are essentially just administrators who shuffle paperwork around.
Good engineering managers own the escalated issues from Sales and Support and ensure their prompt resolution. In urgent or sensitive cases they are willing to jump on a call with a customer to explain the situation and discuss the steps to resolution. Bad engineering managers hide from responsibility and hope that someone else will have the difficult conversations when dealing with customer issues. They always point to problems somewhere else rather than fixing real (or perceived) issues within their teams.
Good engineering managers regularly communicate with all stakeholders and build good relationship with them in the times of peace so when there is a hot issue to be resolved they can tap into the pool of goodwill and resolve it promptly and to everyone’s satisfaction. Bad engineering managers just sit back and talk to other stakeholders only when being triggered by them. They don’t care about relationship building and then they are unable to resolve issues without escalating to higher management.
Good engineering managers understand business priorities and are willing to shift resources around as needed. They leverage teams around the globe and are willing to help other products outside their own sphere of responsibility. Bad engineering managers are unwilling to release their people to other more important products being afraid of losing power. They are always looking for excuses why their product is more important and don’t keep the business needs in mind.
Good engineering managers are heavily involved in recruitment understanding that only by getting the right people on-board they can build first class products. They develop their people and provide opportunities. Good engineering managers understand that only by building a strong team under them they can get to the next level themselves. They take no short cuts and know that developing people takes time and effort. They know that one of the key tasks of successful leader is to inspire the team, set clear expectations and provide feedback. With this in mind they are actively participating in on-boarding of new team members and ensure that every person on the team know what is the expected behavior, what makes this company successful and what will make him successful as well.
Bad engineering managers focus so much on politics and numbers that they forget about the people who do the work. They don’t provide feedback, and don’t talk to their teams. Bad engineering managers spend the time only with team leads and delegate any interaction with the rest of the team to his team lead. Bad engineering managers are so busy dealing with current issues that they are not able to build scalable team that would eventually prevent the issues in the first place.
Good engineering managers are able to use money wisely and train the team to do the same. They understand that only because there is a budget for something it doesn’t need to be spent if there is more cost effective way to solve the problem. Bad engineering managers constantly complain that there is not enough budget for all the things they would like to do without trying to work around it and come up with less expensive options.
What is your recipe for a great manager responsible for software development? What are the skills and behaviors you are looking for?
Originally posted at LinkedIn.