In the past couple of weeks, I finally found a time to read a book that I wanted to read long time ago, ‘Sapiens’ by Yuval Noah Harari. It is excellent book about evolution of mankind and how we survived and evolved over other species over the decades. Several notes that I took to myself and it can be connected very well to leadership concept.
‘The way of thinking and communication constitutes the cognitive revolution’
‘Large number of strangers can cooperate successful by believing in common myths’
These points are excellent example of why we the smartest and strongest species on the planet. One of the main key to the success of corporations (This is the myth part, explained more in the book) are strong leaders and this brought me the idea to share my learning and path I made to become development manager (Dev manager), and what impacted me and teach me through my journey.
Before we start to deep dive about myself, I want to start from the question that I was asked several times in the past 4 years from my team members, “What I am missing to become dev manager?”, this is very tricky question as there is a definition of what is expected but there are many things that are hard to teach or explain. The simplest points that should guide anyone who become dev manager is that this person should be a leader, kind of person that his teammates will follow him, support him and work as one unit in a full trust to achieve the common goal. Look on it from the point of alfa male that leading a tribe for a hunting. As I mentioned earlier the book ‘Sapiens’, opened for me a new point of view how to observe things, and made me to think a little bit different. People in your team expecting from you guidance, direction of what they should do in order to achieve their goals, it is naturally expected from you and it is your responsibility to monitor if the team going in the right direction!
Not less important is that you need feel the team, are they happy? Or are they stressed? Otherwise you totally failed!
To summarize the main characteristic of dev manager and expectations from him are delivery (execution), quality, stability, happiness of the team, grooming of the team and achievement of KPI’s (Part of execution).
One very important point about dev manager is that you are not expected to be the smartest person in the team (Will be great if you are) and expected from you to hear what team has to say and take the right decision from all that arguments in front of you. You are the person that expected to take the call eventually, if you are not ready for that, you are not ready to become dev manager.
People management is a small part of dev manager responsibility, he has the dev part in the role name and it will consume the most of his time for technical reviews, discussions and building of roadmap and vision of the system and collaboration with other teams.
The way you will build the team impacts a lot of its performance. I was not always lucky to have a team with leaders in it and it is harder to build a team that can run itself, and then it requests a lot of focus on this team to take it to the right performance. Part of my goals is to grow the next leaders, the next dev managers. Need to think about scalability of the team and it will help build better structure and communication.
You can call me lucky/unlucky in the sense of my journey as from my first days and until today had managed teams of 15–20 peoples, in the beginning it was a jump to a deep water without knowing how to swim, but as time goes and support of my manager I learned how to operate myself to handle the teams and the teams to handle me.
The rules are simple, you must have number 2 in the team, again if you lucky to have one, your life will be much easier, if not, you need to grow one! The is no way single person can handle more then 10 direct report and success, you will need help with that!
Good, healthy and balanced structure is the key. If you don’t have enough strong people in the team that can help you, it is a time to grow one otherwise ask from another team or hire one.
No one is perfect! Not you, not your manager, neither your team! You will always have conflicts in your team, you can call it as healthy relationship. Conflicts can come from different direction, from unhappy person, missed goals, bored worker, under performer and more. It can come from team member, from your manager and even from you.
Handling conflicts is hard work, but I have good news, it is easier as you gain more experience of working with people, as more you practice how to handle them it is easier to handle them.
Some of conflicts that I deal with where, under performance and technical grows. Both are talking about the same issue but from two different directions. One is about not good enough, and the second is ready to next step. Both requiring attention from you and action about them. The solution for both is the same, you need to find the week points that are missing to achieve the goal, give constructive feedback, define goals and help to guide how to get things done.
Other type of conflicts can come from other places, for example projects related, you need to be ready to report about your project and prioritize accordingly by performance of needs of your job. Sometimes priority is very hard job to do. How to define what is more important and what is less.
Each issue has its own impact, and cost. If the fix is easy and the impact is high so it’s clear that is going to the top priority, if the impact is low and fix is difficult will go to lower priority. And this point is hard to understand in the beginning, the think of business. As engineer we are always looking for problems to solve, and our preferred priority will go to the direction of as much complex the problem this is high priority we want to solve, but as manager is not like that. As manager you need to consider couple of important points, business value will be the first of them in this case.
Most of the time dev manager as part of his role working closely with product owners that defining the product direction and building business requirements, in this point the role of dev manager is very important as he will need to find and negotiate about the right balance between tech and business.
As I mentioned earlier, there is no magic or guidance that can be provided, most of the solutions you will need to learn by yourself! But from other hand you are not alone, you have your manager, and don’t forget that he was in your position too, and probably had the same issues as well. The best way to learn is to ask more experience people about how they would behave in different situations and try different approaches to see how it works for you.
Team is the main solution for all the problems and trust is the key to success. When you are building the team, your priority should be of providing all the tools the team need in order to keep focus on the important things, development. Thing that need to focus is stability of the system, good monitoring and easy deployment.
- Stability can be achieved by good architecture, flexible design and the right testing, starting from unit test, continue with integration tests and finishing with regression/automation.
- Monitoring and visibility should be integrated part of your system, as you want to have ability to see what is happening with your system, its performance and option to look inside the logs if something goes wrong.
- Deployment pipeline is huge headache and will impact a lot of performance of your team, long waiting in a queue, flaky tests and manual processes that can be automated.
Investment in the beginning will be huge benefit for your team and you in the future, your team will thank you later.
Communication is powerful tool, and as manager you should use it a lot, it should be the most important way of making things to be done. Delegation is another way of executing things and if you build your team in the right way and build trust in this team’s delegation can accelerate a lot of things in the same way as threads working in your system. Delegation bring one more important value not only to you, its bring important value to your team members as you are giving them ownership and opportunity to show the best out of them, can be good way to groom next generations of leaders.