What are the attributes of a good software development manager?
The term “manager” means different things in different fields. In music, for example, the role of a band manager is to ensure ideal conditions for the artists to create and perform, while making sure things don’t fall apart. This involves suggesting behavior and action rather than enforcing it. In sports, on the other hand, the manager usually has the authority to demand that everyone fall in line tactically and culturally, all the while putting the players in the spotlight to do what they do best.
So, what makes a good software development manager? Before we answer that question, let us ask why we need a good software development manager.
Why a Good Software Development Manager?
If we take as a starting premise that a good software development team begets good software, then the reasons for necessitating a good manager become clearer.
First, we need a good manager to clear impediments for the team to perform with minimal distractions and obstacles. If the team has to deviate from its focus in order to address side issues, then its performance and efficiency in creating good software must necessarily decrease.
A second reason for needing a good software development manager is to motivate and engage the team consistently throughout the project lifecycle, in good times and in not-so-good ones. A software development team is (usually) composed of human beings; understanding how each individual functions is essential to guiding the group towards a common goal.
Finally, a good manager identifies and manages fault lines. Katerina Bezrukova, an assistant professor of group dynamics at the University of Santa Clara, studied Silicon Valley tech companies to determine whether chemistry can be predicted, as well as its importance to success. Fault lines are essentially attributes that lead to group divisions, like age, gender, ethnicity, career motivation, hobbies and interests. These divisions serve to understand group composition effects, i.e. team chemistry. Diversity can cause fault lines, but having the ability to bridge them – to create overlapping groups obviating these divisions – will help in establishing networks to resolve potential conflicts.
There are many more excellent reasons why a good software development manager is worth their weight in gold, but the three listed above will guide us as we examine the attributes that let you become one.
Good teams do not jell by fluke – it requires a good understanding of each team member and, more importantly, realizing that their worldview and perspective may differ from yours. A good manager will observe and process different behaviors and reactions. However, there is no substitute for active listening. Often, frustrated managers won’t understand why their engagement technique (common goal and shared cultural values, common enemy or reward-system) is not effective. Those managers tend to quickly resort to the “my way or the highway” style of management.
A lack of empathy for team members can actually create additional fault lines, leading to group divisions within the team.
Both clients and software developers stress their enormous appreciation of managers that anticipate reactions and outcomes. Such managers have taken the time to analyze how a given outcome may affect a wide range of behaviors, and have a plan to address them. This type of managerial behaviour validates the various personalities and life experiences of team members, instead of trying to mold them into a zombie-like group of workers with predictable inputs and outputs.
A manager’s ability to anticipate solidifies the underlying feeling that the manager has everyone’s back – the team’s and the client’s – which gives team members the peace of mind that helps them focus on their mission.
We would be remiss if we didn’t stress once again the importance of active listening as a key part of communication. A good manager that exhibits good active listening skills will also lead by example, giving team members their cue to also employ active listening with each other whenever conflicts arise. The opposite is true as well: a manager that is a bad listener will cause team members to fight among themselves to get their voices heard.
Teams work better when mistrust is kept at bay. To avoid breeding mistrust, a good manager must know what message they want to convey, when to deliver it (timing) and how (tone). Achieving the right balance of what, when and how will require the Empathy and Anticipation that helped us achieve an understanding of group dynamics.
In keeping with the theme of “reading the room”, be aware of the potential negative impact of over-communicating. Sometimes, it is wiser to adapt a “no sudden movements” strategy to avoid inducing panic or exacerbating anxiety within the team. Give your team the time (and trust) to work out the issues.
Whether you are a top-down or bottom-up manager, your team looks to you in terms of decision-making and accountability. Courage in decision-making is not about taking risks, but rather about being firm, decisive and accountable for a path taken. While competence and title help support credibility, a lack of courage is an instant credibility saboteur.
Finally, competence is still important for a manager. And we do not mean the ability to code or to know your clients’ business and industry better than anyone. Rather, it’s all about being good at the points listed above: competence in Empathy, competence in Anticipation and planning, competence in Communication and competence in Decision-Making.
Be honest about your level of competence with your team; this gives your team a chance to organically fine-tune its dynamics until everyone reaches their maximum potential competence in each area.
It is sometimes argued that software developers do not need managers. While it is true that a team can always muddle along, in the absence of management, the challenges that need to be addressed do not simply go away. If anything, they keep developers from focusing on the mission, since they are now responsible for efficient group dynamics and other challenges that arise from working with other human beings. Conversely, bad managers impose their will on the team and create different channels to try to make themselves indispensable to progress.
Thus, it is to the benefit of the entire team – client and software developers – to have a good manager to guide and shepherd your software development project. It may be difficult to isolate and quantify the value of a good manager’s role; however, the value is clearer once you look at the increase of performance from everyone else in the team.