Managing a software development team is a tricky process that demands an approach that is simultaneously organised and adaptable. Lead developers have to try and coordinate a diverse group of individuals that are both creative and logical, and oftentimes highly opinionated.
The right combination of people under the right management is the key to securing a successful software development team. But building such a team requires skill and a certain degree of intuition.
When it comes down it, writing good software is essentially a creative exercise and managing creative people is infamously difficult. Countless programmes and applications have fallen flat because of poor leadership. Ineffective managers breed discontent among their team which invariably grinds productivity to a halt. As a result, delivery dates have to be continuously pushed back.
The role of a good development manager is to create a working environment that enables coders to do their best thinking and be creative. To help you keep your team happy and productive, Venturi’s Voice spoke to Ruban Siva, a Senior Software Developer at HSBC. Here are five essential tips on how to manage a software team:
1. Communicate Clearly and Directly
As the leader of the team, communication is of paramount importance. From the outset you have to be clear on what you want to achieve and how you intend to achieve it. Ruban said that a good way to do this is through visualisation strategies.
“I normally set out the goals of the project by drawing a high level architecture diagram then creating an initial prototype which is effective for a technical audience. I find these help to visualise the overall technical road map and also serve as a good reference point we can return to throughout the project,” he said.
It is also the manager’s job to ensure each member of the team knows what their role is and what’s expected of them. However, care must be taken to avoid micromanaging.
“I like to give my team members the autonomy to be able to choose and select tasks rather than having them handed to them. This means they are able to develop a broad skill set without being pigeon-holed into a specific technology by a manager,” said Ruban.
The project leader should also work to resolve any conflict that arises in the team. Its simply not possible to avoid conflict altogether (especially when the delivery date is approaching), but when it does flare up the manager should work to address the underlying issue ASAP.
“A good way to clear the air is to have regular team meetings where team members can raise issues with the aim of constructively resolving them without any finger pointing,” said Ruban.
2. Determine Your Needs
Development team leads must figure out exactly what their team needs – even the very best developers are of little use without the right hardware and resources. To keep things ticking along smoothly you need to plan in advance to ensure that you are fully equipped to see your project through from beginning to end.
3. Don’t try to control everything
The great irony of management is that the higher up you go, the less actual control you have. As a coder, you can make the computer do exactly what you want. Management isn’t that straightforward. For the most part, lead developers can only seek to communicate as clearly as they can and then have faith that their team will progress through the project correctly and in a timely manner.
Throughout the process, it is important for team leads to seeking input from their team about what can be achieved within a given time frame. This helps to keep project goals realistic and attainable.
“Involving the team in the task estimation process ensures that everyone is able to understand what’s involved and how long it will take. This is much better than having a timeline imposed from the top down by a line manager,” said Ruban.
Ruban also pointed out that in order to lead effectively, you must be willing to relinquish control over the technical design.“Projects often deliver or fail based on whether the technical design solves the underlying business requirement. If developers feel they don’t have a say in the technical design, apathy tends to set in quite quickly. But ultimately, the lead developer still needs to have the final say on technical decisions,” he said.
4. Do the boring stuff yourself
Basically, a manager’s job is to make other people more productive. One of the best ways to do this is to do the work that is getting in their way. This means finding out what kind of important work your developers dislike the most and do it for them.
“I find that developers don’t like tasks that are non-technical, whether it’s filling in task progress reports or writing up useful accompanying documentation,” said Ruban.
5. Understand people aren’t perfect
Developers are people, not machines. As a manager, you have to be prepared for the reality that people will make mistakes, ignore you, pester you, disappear or even quit, frequently and for no good reason. Project leaders need to take this in their stride. It is crucial that you develop an early-warning sense of people's problems and have contingency plans in place.
“When developers make mistakes the only way to respond is to help them make amends and ensure processes are in place so that the same mistake is not repeated,” said Ruban.
Following this advice should help you avoid running into any major disasters in the project delivery process. However, it is important to remember that effective management is more of an art form than an exact science.
Each project is unique, as is each developer on a team. Taking these factors into consideration, you must assess what challenges you are likely to encounter and be ready to respond to them as you progress through the project.