Just other day, I was talking to a friend of mine who transitioned from the role of a world class Developer to be a Development Manager. He is struggling with his new role and questioning his contribution. He came from the mindset, if there is no code produced by him, then he has not contributed.
This blog entry is answering the narrow question of new Development Managers, who recently transitioned from dev and wondering about their contribution when their output is not code.
I tried to explain to him –
“The role of a Development Manager is like a conductor of an orchestra. The conductor never produces a sound himself but rather guides others to create sound.
I think as a development manager your role is more of an enabler. I see a good manager as a training wheel on a kids bike, they come in play only when kids is out of balance.
If you are a Dev Manager of a large team, with multiple projects under you, then you cannot code the product by yourself. You need to make sure to have people in team who can help you achieve your goal. The first quality of a Leader is to get work done from others by inspiring them.
A strong Dev. Manager cannot be the excited developer who runs after every new and shiny objects (new frameworks/languages/new paradigms), but instead you are the adult in team, you must accept new frameworks and adopt technologies deliberately and with caution. Every theoretical claims must be backed by empirical data. Often you contribute not only by adding features to product, but what you decided not to do.
You are the voice of customer. You must have extreme empathy with customers. Technology for the sake of technology is of no use.
Like the conductor, who understands every instrument, and their role in symphony, you need to understand every aspect of development. You need to know what’s the best language to use to solve a certain problem. You need to know about testing, you need to be a good Product and a good Project Manager.
You need to know your team, their passion, their weakness and their strengths.Your job becomes more interesting as you not only deal with machines and software but the humans are involved. They are the most sophisticated machines with emotions and attitudes.
Like a good conductor, you should be able to play any instrument and show what exactly you want. You should be able to code but while not coding for the final symphony. You should be able to tell a bad design from a good design. You should be able to tell how an algorithm be improved. How a shiny code will crumble in production. You keep an eye for maintainability, security, extensibility, complexity and performance implication of any design.
A note of caution, don’t manage too much. Don’t be in every decision. Have smart people in your team, and get the heck out of their way. I think, your success is not measured by how many right decisions made, but how many right decisions made without you!
Sometimes big complex projects are more difficult than conducting a Symphony.
In software development, often symphonies are written as we go along.
Often end product is not well defined, no one knows how it will look in the end. As a Dev Manager, it becomes your job to explain, motivate, and guide the team to build something which is not known or seen by anyone. Often different products, developed by different teams, in different countries, by different people come together forming a perfectly beautiful product.