I made a transition from an individual contributor to a leadership role 6 years ago, in February 2013. If you’ve made this transition in the software development world, you probably know that it can be difficult and there can be a few things that people may struggle with at the beginning. If you are thinking about moving to a leadership role, or have recently moved, this post may help. Here I’ll share some of my thoughts and some of the advice that helped me successfully make the transition.
An element of my new role I recall struggling with very early-on was the feeling that I was no longer making a tangible contribution to a software development project i.e. committing code to Git or testing other developers code. It took me a while to realize that I needed to now begin focusing on the project delivery as a whole and ensuring that was successful, and not necessarily get down into the weeds unless I really had to. The other item a new manager needs to be able to do early-on is to trust his or her team, and some may struggle with this, especially if they have come from a technical lead position in the team. This can manifest in a dictatorial style of management, which is not good for the team, or the business, and ultimately will not end in a successful outcome.
I’d like to share a few key pieces of advice I was given early on in my career, that have helped me make the transition from individual contributor.
“Be a leader, not a manager.”
This is rather cliché, and if you have ever attended any management training over the years, or read certain authors, you’ve probably heard this a lot. In my opinion, a manager is a strictly human-resources centric term – they handle general people management items like holding 1-1 meetings, performance reviews, they track leave balances, and perhaps annoy developers when they are 5 minutes late back from lunch. I picture someone with a clip-board and a pen every time I hear the word ‘manager’.
A leader is engaged day-to-day on the projects their team is working on. They know what is going on in each one, not necessarily every line of code, but they are familiar with each feature and the status. They are technical and can weigh in on technical discussions if required (although they generally don’t, as they trust their team’s ability to make the right decisions, and learn from their mistakes when they don’t). They have a continual eye on quality – quality of ongoing projects, and quality processes and how they can be improved. Leaders care about people’s development and ensuring that their team are working towards their ultimate career goals (for employees who have them, for those who don’t, that’s OK too). Leaders build a strong working relationship with their direct reports. Leaders are also looking to future – what are the technologies their team should be investing in? What opportunities are we not exploiting? How can we do what we do better?
“If your team is successful, you will be successful.”
This is a simple piece of advice, yet very, very powerful. As an individual contributor, you can ensure that your assigned work is completed to the highest level of quality, but the project may still fail due to another area not being implemented successfully, or some external dependency not being fulfilled. As a leader, you need to ensure you have oversight in all areas that may impact or impede your team’s progress, and be actively working to ensure that any unknowns are clarified, any blockers are removed, any external issues are resolved quickly, and ensuring your team members are focused on what they do best. At times, you will also need to protect your team from external distractions (e.g. getting pulled into unplanned work owned by another team). In my experience, your team will be in a better position to execute successfully if you are actively looking at these items (daily), and by extension you will be successful.
“Your network is important.”
I’ve been told this many times over the years, and only realized the importance of it a few years ago when I wanted to transition to a new role. It’s easy to neglect this, especially if you are new to a leadership role, but I would stress the importance of growing your network with relevant contacts, as you never know what opportunities those contacts may present in the future, or what synergies you can create between for example, different teams based in the same location.
There will be hard times, and there will always be challenges.
As a software development leader, people will look to you for answers that you don’t always have. You will need to assimilate and recall large amounts of information. You will need to be able to account for your teams time when needed. You will need to explain your failures. You will always need to champion the team’s achievements, stepping back and giving your team the credit that they deserve. You will need to continually learn about new technologies and understand them to enable you to take part in technical discussions. You will need to manage demanding executives, other leaders, stakeholders and customers, and always protect your team in the process.
In a challenging time, I always remember the Winston Churchill quote:
“If You’re Going Through Hell, Keep Going.“
One of my favorite TED talks by Richard St. John in which he outlines his thoughts on the secrets of success, captures the essence of day-to-day leadership excellently I think – you basically have to persist through CRAP – Criticism, Rejection, Assholes, and Pressure.
The key for me to any leadership position is ensuring that you are continually learning. Remember that in any situation, good or bad, you can learn – especially from the bad situations.