Hacks for efficient management of Software Development teams
Here are my thoughts on how to effectively lead and manage high performance software development teams. Please feel free to comment.
Background: Software Development is a unique industry where everything pretty much depends on how good the people who work in it are. This is a 100% people-centric industry which is heavily dependent on not just the skill of the people, but also overall organizational structure which can make use of these skills.
Managing Software development teams requires deep understanding of product, people (including customers) along with broader understanding of market space, technologies and competition. A successful leader-manager will also map key stakeholders for a project and clearly establishes operational mechanics for communication and escalation.
I am collecting my thoughts in below points.
1. Hiring: It all begins here. A good and successful manager should be eternally in hiring mode. He/She should be constantly on the lookout for better engineers both inside and outside the organization. A good hire done is half job done! Hire people who love their work and who need minimal to zero hand holding. Micromanagement is not liked by both managers and employees. There are ‘n’ number of hacks available to do effective technical interviews. I will talk about that in a separate article. But do go out of the way to get the best set of people (given organizational constraints). Hiring is not binary. Take a calculated informed call on candidates and support that decision.
2. On board new hires and ensure smooth assimilation: Your job as a manager is not complete once offer is made. On the contrary, fun part begins there. Irrespective of whether you are building a new team from scratch or hiring for an existing team, ensure new hire on-board is done smoothly and efficiently and you own the process (and hence the results) end-to-end. Expand your span of influence if on-boarding experience is pretty much handled by teams in HR or other organizational groups. Developers love gadgets, surprise them with top class laptop and infrastructure. Fight with stake holders in-case a cubicle next to toilet entrance is allocated…what I mean by this is: do whatever it takes! First day and First week experience pretty much seals the kind of impression you want to make on a new hire. Focus on it! Also note that typically great engineers will have more than one offer in hand when they join you. If they are not impressed in first week, you run in to the risk of losing them. They can desert you immediately!
3. Establish high standards and demand the best: It is absolutely essential to create gold standard and defining it properly. Articulate it in clear simple words and communicate the same to team effectively. Set a culture in team where each one demands the best out of each other resulting in overall quality improvement of deliverables in team at each phase. Mediocrity will surely creep in if bar is not raised daily.
4. Process which works for the team: No team can run without process and defining one and following it is absolutely essential for maintain sanity within the team. However always allow team members to define the process which works for them. If team is not able to figure out, let the process evolve over a period of time. Do not force fit a process to the team just because you like it or you have seen success with that. Guide the team but let the team select, follow and enforce it.
5. Get out of the way! Actively seek opportunities to let go of control and delegate. Yes!! this is sort of counter intuitive to few managers but the trick lies in doing it right at the right time in the right way. Just because you are in-charge does not mean you are in control as this is pretty much the reality when you are managing a bunch of smart people who come with their own ideas and thought process. Smart people are hired to figure out what needs to be done and how. Given the context and expectations, allow team to figure out and trust them to do it both correctly and in-time. Take decisive steps and deliberately step back in occasions to let senior developers flex their muscles and own up a solution to a problem. Step-in only when you see them going horribly wrong or they come to you for your guidance.
6. Listen more and communicate effectively: Don’t listen to respond, listen to understand. Observe the body language, vibes and behaviors and match that with words. Try to understand the intent as much as possible. Also I believe it is better to err on the side of over communication than under. Your team members will not respect you if they get to know some information which they ought to know from someone outside the team. Develop predictable rituals like weekly staff meeting, lunch meetings, one-on-one meetings and huddles. You should not wait for these occasions but these rituals help team provide opportunities to ask questions and for you to communicate information in formal/informal manner.
7. Reward and Recognize the right set of behaviors: Recognize often and reward only those which are above the mark. Recognition should look and sound genuine and make sure to quote data points and testimonials. The crux of recognition is the way in which it is communicated. Take care of that aspect. Also remember, recognize only those behaviors which are over and above a person’s job description. You don’t recognize someone for doing their job.
Recognize often and reward rare. When you decide to reward, make sure not to butter spread the same across the team which has varying levels of experience and expertise. Don’t reward behaviors which are part of job descriptions or role expectations. Be conscious that each time you reward someone, you are automatically setting a benchmark and team will start expecting similar treatment to similar tasks in future.
8. Don’t strive to be a Know-All: Leader of a team need not know everything. You have a team and the team has distributed leadership on the product and collectively takes the accountability of the outcome. You will lose the big picture understanding if you want to get in to each line of code and understand product development minutely.
9. Accommodate the eccentricities: As an engineering leader, you will bump in to various characteristics and behaviors in engineers which might not suit your thought process or in line with you value system. However as a leader, one should develop the capability to stomach these eccentricities and nurture the engineers rather than expecting them to act/behave like how you want it to be. Only a diverse team succeeds in longer term.
10. Walk the talk: Engineers are very sensitive about this. They expect their immediate managers to walk to the talk. If you want people to turn up to stand-up meetings on time, you be there on time first. If you want minutes of meeting to be documented and circulated, you start that practice first. Demonstration of desired behavior by leader is a powerful influence for others in team and is also a subtle way to convey something which is difficult to convey verbally.
Healthcare Technologist | Enhancing patient care with technology | Building personalised, Real-Time, Actionable Insights for better outcomes | Fractional Leadership |
5 年anything!