Monday 12 August 2013

Development Manager - Demystified

In my pursuit to demystify a development manager role,(journey started from the post here) I went across a lot of articles and also a lot of job descriptions for the same. The job descriptions were highly inconsistent. Some wanted the candidate to have knowledge of some specific programming languages and be very much hands on into coding or code review etc, some others looked for someone who could understand people psychology and manage people well, yet another wanted PMO and other such certifications and the list goes on. And, as you know, even my experience so far with my development managers has been widespread.However, there were some common points that came out from all the places. I intend to summarize what I understood from it all.
Definition of a development manager: If you are a development manager, you can be most precisely described as a "man in the middle" who at times can be under "Attack" from all the sides and should have the "capability" to "counter the attack" in a "constructive and productive" manner. Well, sounds confusing?Same here. Let me break it down.
Man in the middle: What this means is that you are a link or bridge between your team and the rest of the world outside your team which would include the other teams, business or sales people, upper management or leadership of the organization, and everyone else that the team needs to interact with. In this role, you need to balance the expectations from both the ends , maintain good relationship on both the sides and help your team deliver the products / features, providing them the necessary cover from external distractions.
Your primary responsibilities as a development manager include the following:
1. Take the team along on the success road: You, as a development manager, not just need your
team to implement the features or products that you own, you are also responsible to see through the personal development of each and every team member. For this, you need to understand each individual in the team at a 'human' level, understand the strengths and weaknesses of each one of them. Then, you should be able to set short and long term goals for each one of them. These goals should align with the overall vision of the product and the organization and at the same time , every individual in the team should grow towards his/her own career aspirations as and when they achieve these goals.
2. Get the product out of the doors: Development manager is primarily responsible for resource planning, and align it with the product features and deliverable, within the given constraints of timeline and budget.During this process, you should plan to harness the strengths of each individual in your team to the best possible extent to get the maximum efficiency.
3. Be end - to - end accountable: From the initial planning to delivering the product out to the customer , each step is a development manager's own responsibility and accountability. Ofcourse, he/she needs to delegate work to the team in best possible way to achieve the same, and should definitely do work delegation.
4. Manage relationships: You need to manage relationship with the external folks like sales and customers. At the same time, you need to manage relationship within your team itself. Find out who has been in the company and for how long, get to know them better, keep track of small things like birthdays and anniversaries and other such details about the team and acknowledge these important times. Stand by your team in the crisis situation and extend moral support whenever required.
5. Follow processes: Every organization has its own unique set of processes and sometimes it can be overwhelming to follow new processes. Sometimes, when you are in start-up kind of environment, there may not be too many processes in place. Because of these reasons, a brilliant development manager always has some simple processes to follow, no matter what kind of organization he/she works for. Following your own set of processes to plan, keep track of things etc. in the best possible way that suits you, gets you going within no time.
6. Technical hands-on:You should have a good understanding of the product architecture, and if you
have hands on the technologies that are used in your project, its an added advantage. But, you should stop here, draw a boundary and not get into too much of technicalities. You should also be aware of new technologies, and you should be able to figure out your team's needs to learn new tools and technologies or to more efficiently use existing technology. You should encourage them to take trainings that enhances their technical skills. But you should leave the core technical decisions and details to the technical leads and senior designers and developers in your team.There's a reason they are there in your team - so that they can carry the technical expertise while you can focus on other responsibilities of yours in the organization. Of-course, you should participate in the design discussions and other technical discussions,if you can do justice to rest of your responsibilities and still have time for these.
7. Development:  Its a well-known saying in the IT industry that the best programmers make lousy managers. You need to have a basic understanding of best practices to write good code and you should ensure that your team is following the same, but you should never get into the details yourself here.
8. Administrative and staffing responsibilities: As a development manager, you would need to take care of a lot of administrative and staffing responsibilities. You would need to calculate the budget for your project, you would have to keep track of the project progress with respect to the budget and the timelines, you would need to take care of each individual's development and last but not the least, you should be able to account and accommodate for both hiring and firing or employee moving on in your team.
So, overall, there are a lot of responsibilities tied to this role, unlike an individual contributor role where the responsibility is mostly one - technical most of the time. The key to being a good development manager, in my opinion, is to be able to strike a balance , where-in you are able to divide your time between all of the above responsibilities and carry out each one of them. It's definitely not possible to please everyone at every point of time. So, being a development manager, you have to be able to make tough calls, and take definitive stands when required, but, there are some definite don't(s) defined for you:
1. Don't let arrogance or ego take up : " O! I have a bunch of people at my command, I am powerful!". "O! I have the ability to handle others and get whatever I want done from them". "O! N people report to me"."O!What I think is always right", "O! I was good at design before becoming a manager, so I can do that as well!" - Never let this kind of false ego or arrogance build inside you. You are a mere bridge between the team and external world, and people report to you for a streamlined organization structure - nothing more than that. You always have much more to learn at each point of time, you can never be always right, give space to others creativity.
2. Don't forget to distribute credit : You are nothing without your team! Always remember to
distribute credit for good technical achievements to your team - call out individuals who strode that extra mile, or thought out of the box, or coded efficiently or made a wise technical decision or what not - that eventually contributed to the overall success of your project. Remember that human race is always hungry for praises and its the simplest tool to increase their zeal to achieve more and get better.
3. Don't treat your team as a mere tool : "I can get any kind of work done, because I have a team whom I can make work on anything and everything and definitely deliver it" . Again wrong. You have a set of people with certain skill sets and yet another set of skill sets that they want to develop.Treat them human because that's what they are. Never ignore their own aspirations and progress, treat them equal and give them sufficient space to innovate, and create. Accept the fact that they may come up with something which can be better than what you thought of, and the end result can be much better for the team as a whole.
4. Don't neglect any of your responsibilities : "O! I have good relation within my team, I need not spend too much energy trying to bond with that sales guy, if the team makes a brilliant product, sales will be bound to sell it". OR "O! I have to make relation with external folks , I can look inside the team later on". You would be in trouble in both the cases. Don't neglect any of your responsibilities. You might have to prioritize one over the other, but at the end of a month or so, you should look back and reflect, and only be satisfied if you have done justice to all of them over the period of that one month.
5. Don't judge too fast : Your primary responsibility is to deal with people in and out - means people within your team and people outside your team. You should give yourself time and understand each one of them, figure out their strengths and potential improvement areas. Don't judge people too fast. This way, you might yourself end up having wrong expectations or misjudging the efficiency or potential of a team member - which would impact the effectiveness of your resource plan etc.
6. Don't play the blame game: When it comes to crisis, stand by your team. Don't blame a failure on your individual team members. Talk to the team members concerned, point out the error to them in a one-on-one kind of discussion so that they can improve upon it, but when facing the external world - never try to make an individual the guinea ping of your project failure. Be a team player.
7. Avoid Micromanagement : You have got to trust your team. Nothing can be achieved without trust. You need to delegate work to senior team members, set timelines and see through tools that they are on track, you need to delegate the micromanagement of very junior folks to these senior members, who can be their mentors as well. But you need not be dancing on the head of your team for getting things done, majority of the times, that leads to the team being rather unproductive. If you want your team to be more productive, the right way of achieving that is to generate motivation and interest in the team with respect to the work that they are doing. Keep them motivated by helping them grow, providing them the big picture of organization, maintaining transparency and giving them the business insight. Provide them the sense of achievement and contribution.

With that, I come to a summary of the learning that I could gather from my studies on the subject. Please suggest more additions, lets try to compile an idle development manager requirement :)

1 comment: