Friday, 7 November 2014

How to lead software developers

I want to start with the keyword 'lead' in the title of this post, and not the word 'manage'. If you can lead a software development team to success it means you are managing them well. But 'managing' a team in no way guarantees greatness.


Work as part of the team

Be a leader who works closely with their team, who sits with them in an open plan environment. If you are always working directly with your team you will absorb so much more about people in your team like:
  • What they excel at.
  • Areas they are struggling in.
  • Any frustrations they may have.
  • Who in other departments is causing distractions to your team (this is critical to understand).
  • If they are being efficient in their day-to-day, or just getting distracted.
  • If they are being challenged or are just bored at work.
  • Understanding the overall sentiment and culture of your team.
You don't want to be that manager guy who sits in his closed off (or open door) office that is sending commands down the wire to his troops.

Remember, software developers are humans just like you.

Don't keep changing priorities of the team

Developers like to understand the scope of work, figure out how to develop it and then start coding away. If you are running a team that has constantly changing priorities that results in already coded solutions being thrown out or re-done just because the scope was outlined wrong, it will really get your developers offside.

How would you like it if you were told to go to a meeting at one of your suppliers, then only to arrive to find out it was actually meant to be in your company's board room, then going back to your office only to then find out it was rescheduled till the following week? Frustrating right? That's the same as a manager constantly changing priorities on a developers day-to-day work.

Developers understand that priorities do change due to financial reasons, change of company direction, but there is no excuse in priorities changing week after week after week.

Running an Agile development environment using SCRUM in 2 week sprints is a great way to define priorities for a 2 week block of work and allow your developers to focus on delivering those priorities without interruption for 2 solid weeks.

Provide feedback in realtime

I admit this is one of the hardest things to do, especially if it is critical feedback. But I always put myself in a developers shoes and think, I would rather know how to improve something I'm doing wrong now so I can better myself now, rather than hearing about it in 3 months or 6 months time when I can barely remember what happened.

As a leader, providing critical feedback comes with the responsibility of providing different ways your team member can improve themselves - be constructive with your critical feedback.

Positive feedback on the other hand is a lot easier. It's much easier to tell a person they are doing a great job and even a thanks for putting in extra hours to get a project over the line.

Also be cautious about giving feedback in public (in a team meeting) or in private (email or one-on-one chat) - different people prefer different methods. It's up to you to be able to understand what each member of your team prefers.

Always make time for your team

This goes for leading any team. If a team member makes the time to come up to you to ask a question, or for help on a problem, they have taken the time to do so, so make the time yourself to listen to them and help them in their query. It's important to stop what you are doing and really interact with them - don't sit at your computer typing away at a financial report while only listening to 50% of what they say - it's rude to them and its making you less efficient in what you are doing. If you always put your team first no matter what you are doing they will respect a whole lot more.

Earn their respect


Respect is a very hard thing to earn, especially if you are walking into a new team. Respect is earned in many ways and it's usually different with every developer. Some areas that help earn respect include:

  • Stand up for you team - don't let 'your' managers control or boss around 'your' team.
  • Be flexible with working hours - understanding team members have a life outside of work.
  • Really technical developers often want a manager to prove they can play ball in the technical space. Show them you can cut code, or help them solve a day to day issue they have been having with a software platform they were working on.
  • Remove distractions - show your team that you can give them an environment that allows them to focus and get the work done.

Performance Reviews

Some people love them, some people hate them, but official performance reviews are an important part of running a business and leading a team. It is so important to frequently catchup with each member (once a fortnight is a good frequency). This means that there are little to no surprises for both of you when you need to do an official performance review. In a performance review, give your team heads up so they can prepare, give them some questions to think about before hand. Within the review, focus on what they did well, areas they can improve on, also provide direction on how they can further their career etc...

Celebrate releases and team successes

Software development goes in cycles of high intensity during projects and slower cycles usually a few weeks after a release. It is really important to celebrate the success of a release or a job well done. Different teams like to celebrate in different ways, whether its going to the pub after work for a few beers, or taking the afternoon off for a few hours of online gaming - be open to whatever your team wants - just make it happen.

Challenge your developers

Most developers love a challenge in their work. There is normally nothing worse than working on bug fixes day in and day out. Developers are usually creative in their own way in how they tackle a software problem or how they code a new feature. You need to balance giving your developers enough scope so they build the solution inline with the requirements, but not enough scope that you are telling them how to code the solution (as that is why you hired them).

Sometimes its helpful to recommend different approaches you would take but ultimately let your developer explore a bit and learn some things for themselves. This way they get more satisfaction about delivering the solution to you as it's their solution. However, it is very important to keep an eye on progress so there aren't any surprises 2 weeks later when the wrong feature was built - this is why daily stand ups are a great way for transparency within the team.

Create an amazing work environment

Work should be fun, it's where you spend more than 8hours a day. As a leader it is up to you make the work environment for your team amazing. Whether that's supplying MacBooks to all your team, setting up a Foosball table, purchasing a PS4 with FIFA or giving the team a fridge full of beers - it's up to you. Just make it fun to work as part of your team!


0 comments:

Post a Comment