There comes a time in every developers career when you will have to make a decision about your own progression. Do you stay as a developer / senior developer and focus mostly on code, or do you make a jump into a management level position as a Lead Developer who has to manage staff or a Development Manager.
I had this same choice back in 2011. I was a Senior Developer for a large internet bank. I didn’t directly manage any staff although I was a mentor to a few. I got involved with an academy program where we would offer work placements to university students and train them up for a year. I started on this program as a mentor, but eventually I ended up running the academy as-well as carrying on with my normal role as a senior developer. This was my first proper go at directly managing a team of people, and I really enjoyed it. From there I moved onto my current role (Current for the next 2 weeks of writing as I accepted another job) at a consumer finance company as a Lead Developer. This role still involved some coding (but no where near as much as I was used too) but focused mainly on leading a multi disciplined team of software developers.
It has largely been a good experience for me and I enjoy leading as-well as coding, but it isn’t for everyone. Seeing as I am about to take on a new role as a Development Manager for a new organisation, I thought I would put an article together on making the transition from Developer to Manager based on my experiences. I hope that it will help anyone who is trying to decide whether it is the right career change for them.
Is it Right for Me?
Managing a team of people isn’t for everyone. The transition can be a tough one, so making the decision to lead people should be thought through very carefully. You need to look at the reasons why you might want to make the jump. If it is just because you want a pay rise, then let me tell you now, you will end up very disappointed. You may get a bump in salary, but how long will that keep you motivated? Not very long?
You need to make the choice to lead people because you want to help develop peoples skills so that they make a strong team who will deliver for the business. At the end of the day, your reason for running that team is to deliver. If you don’t deliver, it doesn’t matter how skilled your people are, or how good they are at software development, you will have failed. You need to get a balance between building up a technically competent team using all the latest techniques and processes. Some of the decisions you have to make as a manager might well go against a decision you would have made as a developer because you have to come at it from a different perspective.
Get a Mentor / Coach
When you first become a manager, you need to get help. Park arrogance at the door, and get a mentor. This may be your own boss, or you may have identified someone else in the company. You don’t have to make it too formal. Just go and get a coffee once a week for an hour and talk through what you are currently working and ask for advice. You may have to make some decisions soon and just want to run the options by someone. Whilst working at my previous job my mentor was my Development Manager, who was also my boss. I would regularly talk through what I was doing with him to get advice.
One example where I needed some mentoring advice was where I had to put a developer on a performance management plan for under-performance and start formal disciplinary proceedings. This was the first time I had done that when there was a chance the developer may loose their job at the end of it. I certainly would not have wanted to go into this without getting advice.
Get some Leadership Training
If you go into a managerial / supervision role, then take all the training you can get. Most large companies offer internal training courses, but if they don’t try to get on some external courses. As a developer I have never seen the point in class room based training and I don’t think this is the best way for developers to learn, but when it comes to leadership training, or soft skills training, then I think class room based training is very valuable as it is all about how you interact with people. I recommend doing training courses in Mentoring / Coaching, Conflict Resolution, Critical Thinking, Time Management, Appraisals and Objective Setting. You might also be lucky enough to get on a formal leadership training program that involved 360 peer review and feedback. I also recommend reading books on the training subjects above.
Get to Know the People on your Team
As a manager you are going to rely on the people in your team, so you need to be a people person. If they fail, then you have failed. The only way you can help them succeed is by getting to know them. You need to know what their career goals are? What their current skills are? What their skills gaps are? You need to meet regularly with them in a 1 to 1 setting so you can discuss what they are working on, what problems they may be having, what your expectations are of them, and what they should expect from you. The more you know your team members, the better you can help them.
It is important that you are a people person when you become a manager. If you are the type of programmer that just wants to be left alone in the corner whilst you code, then being a leader really is not going to be something that you enjoy.
Every person on your team is different and you will find you have to adapt your overall and individual leadership styles to suite the person or situation.
Be Prepared to Fire who you Hire
Being a manager isn’t always about the good times. Sometimes you may have a member of staff who isn’t pulling their weight and is dragging down the team. Your first port of call is to try and find out why there is a problem. Is it the fact that they can’t do something and they need help? If this is the case, then you can address that. Or is it the case that they won’t do something? If you can’t get to the bottom of this and stop it from happening then you may be faced with the difficult decision to enter a disciplinary process and potentially manage someone out of the organisation. If they have done something that constituted gross misconduct at your organisation, then this is quite quick, you can tell them to leave straight away, but if this is more of an attitude issue then you will need to follow your companies disciplinary process. This can be a long and hard process for everyone involved and is generally not very pleasant, but it comes with the territory. Don’t go into this alone. Make use of your mentor, and also make sure Human Resources is involved at all stages to make sure you follow the process correctly.
Another bit of good advice that I was once given was you should always be prepared to fire who you hire. When you work as a hiring manager in a company, you may be tempted to hire friends or people that you know. This generally is ok if they are suitable for the role. But what if after time something goes wrong and you have to discipline them or potentially manage them out of the organisation? If the member of staff is a personal friend or a colleague you have work with for years, could you follow through with it? If not, then don’t hire them.
Running an effective team is all about a gentle balance of personalities working together. If you get a bad egg, or someone who is dragging everyone else down, then you have to react. Dismissal is always the very last resort, but if you have for example someone who persistently complains and moans very vocally in the team, it is only a matter of time before they start to effect attitude of everyone else, and then they don’t deliver, and then you have a really big problem.
Get good at Time Management
As a manager you will get pulled in all sorts of directions. You have to focus on your team and their development and managing stakeholders in the business etc. You will find your diary starts filling up all the time. This is where you need to start managing your time effectively and balancing what meetings you need to attend. You don’t necessarily have to attend every meeting that gets booked, but you need to spend some time evaluating if you need to attend, or if you can send someone else in your place.
Keep your Technical Skills up to Date
When you start managing a team, you will stop writing as much code depending on what your position is. When I was a Lead Developer who managed a large team, I generally didn’t write code on any of the main projects as I didn’t want to become a bottle neck on the project as I had other responsibilities. This doesn’t mean you should stop writing code all together though as you need to keep your skills up to date. I tackled this in a couple of ways. I worked on some systems outside of our normal projects where there wasn’t any set deadlines. Some examples of this was a log monitoring tool and research into a PCI DSS Card Tokenisation Vault. I also embarked on a few pet projects of my own as I do still enjoy coding.
I developed my open source tools SafePad and Text Shredder primarily as a way to keep coding. I have actually found that I have learnt to enjoy coding again from a new perspective as I tend to write more code for my self as opposed to someone else. I believe you should also read a lot of books. I do this as I have an hour commute on the train each way to work, so I spend that time reading. I really suggest getting a Safari Books Online subscription, then you have a huge pool of technical and leadership books at your disposal.
Be There for Your Team
As I have stated above, you need to be there for your team and help develop them so that they can deliver for the business. This also means being what I like to call a “Shit Umbrella”. I tend to spend a lot of time shielding my team from what comes from management above. This isn’t necessarily always bad things, but what you really want to do is ensure your team doesn’t get bogged down with unnecessary information that will stop them from doing their jobs. Now, I don’t mean that you have to keep everything from them, far from it, I believe in transparency, but sometimes, there is just stuff they do not need to get involved with, which is why I use the analogy of an umbrella. They won’t necessarily know this is going on, and if you are doing it right, then they shouldn’t notice, but it is still very necessary.
You will also be the first port of call for working allocation coming into your team. You need to know what they are working on and what they are capable off. You want to try and avoid over committing the team if at all possible as you could end up burning them out, which is counter productive. Of course, it is not always possible to avoid over committing as sometimes the business calls for it. An example of this was a load of compliance work my team had to take on. They were definitely over committed, but we had no choice as the penalties were quite severe if we failed.
This is the hardest thing to get to grips with when deciding whether to go into management from software development. Letting Go. By this I mean can you go from a position where you write code all day to a position where you may write none. If the answer is a definite NO, then don’t become a manager as you will end up disappointed. If the answer is YES, then go for it, but don’t make a snap decision. You need time to think about it.
Just because you answered Yes, doesn’t mean the transition will be easy. I found it very hard to let go. It takes time. It’s a bit like weaning off alcohol or drugs! When you start out as a manager, you need to resist the urge of jumping in and helping the team with every technical issue that comes about. This doesn’t mean you should stop doing it all together, but don’t do it all the time. Your developers are the ones hired to solve technical problems. If you jump in all the time, you may come across as a micro manager, and that is not something you want to be known as.
Are you Ready?
If you are at the point of deciding whether you want to go from software development into management, then I hope this article has been a help to you. My advice is to think about it carefully before you go jumping in to it. If you do decide to become a manager, and you do it well, then it is very rewarding when your team delivers, but it can also be stressful as ultimately, you are accountable for your team. If your team fails, then it is your failure and you will be held accountable for the failure.
If you have made the transition from developer to manager, then please let me know your experiences in the comments below? If you are thinking of making the jump and want to talk to someone who has already been through the process, then please get in touch either by the comments, or via the contact form at the top of this blog.