I’ve been a technical leader for the last 10 years, in roles ranging from Team Lead to Head of Engineering. During that time, I’ve found a scarcity of resources assisting developers in transitioning from Individual Contributor (IC) to Team Leader. One reason this area is not well covered is that becoming an effective leader doesn’t have a one-size-fits-all solution but is a personal journey about learning your strengths and mitigating your weaknesses. From my own personal experience and drawing on some patterns observed mentoring others through the journey, I am going to outline what the first three months of this transition could look like. This isn’t a comprehensive list; instead, it’s focused on learning more about yourself, your team, and developing your leadership style.
Before we delve into the list, it’s crucial to address two fundamental shifts you’ll need to make in your mindset.
Promoting the most talented software engineers to leadership positions is a common pattern among software engineering organizations, often without providing the necessary support for this transition. As a result, very effective ICs often find themselves in leadership positions without necessarily having developed the required skills for the role. Personally, I believe that the skills making people excellent coders can lay the groundwork for effective leadership, given the right support and development.
The first trap to avoid as a new technical leader is relying too heavily on your technical skills to solve all your problems, this has several negative outcomes:
I’m not suggesting that you should stop committing code, but it’s crucial to recognize that your primary duty is now to help your team become better developers, communicators, and team members. First and foremost, shift your mindset from “I need to get this job done” to “we as a team need to get this job done”.
The second change is about accountability. As a leader, you bear the ultimate responsibility for the team’s successes and failures. From an outside perspective, success is a team effort and should be celebrated by the entire team. Failure, however, falls on you. Internally, this may not truly reflect reality, but it’s one of the hard truths of leadership.
If your team misses a deadline because someone is underperforming, you need to identify this problem, adjust your planning, develop an improvement plan, or in certain cases, consider letting them go. If your team is short-staffed, it’s your responsibility to communicate that, ask for help, and/or adjust your time-frames accordingly.
At the end of the day, leadership is about accountability. If something isn’t working, it’s your responsibility to fix the issue or, at the very least, communicate the problem to other leaders in the company for future planning. Accept that as a leader, you’re accountable for your team’s ultimate success and failure.
Once you’ve made these mental transitions, it’s time to start cultivating your leadership skills. Everything on this list requires practice - the more you do it, the easier it becomes. Each of these steps merits a blog post in its own right, but here is a heavily summarized version:
Begin by delegating a simple technical task that you would ordinarily do. Do not dictate how it should be done. You can provide guidance and structure, but accept that it won’t necessarily be done the way you would do it. Offer feedback and look for ways to improve the code together. This will aid you in gaining a better understanding of your team’s skills and learning to let go of control. Over time, start escalating the number and importance of the delegated tasks.
Set aside some time each week to talk to your team members individually. Start building a rapport and improving your understanding of them:
Crucially, these sessions are not just about you; give them time and space to talk. If they’re not opening up, you can prompt them:
Once you’ve built this base, you can start to evolve these sessions into more formalized one-on-ones.
Be conscious of your emotions and body language. People will look to you for cues on what behavior is appropriate and what is not. If you appear irritated, angry, or frustrated, that will suggest to some people that such behavior is acceptable and will make others hesitate before approaching you with problems or issues. Of course everyone is human; there will be times when you struggle to control your emotions. In these situations, the best thing you can do is be aware of them and distance yourself from your team while you regain control.
Always ask the “dumb” questions. If you don’t understand a term or concept, stop and ask. Doing so sets a precedent that your team will follow and creates a culture of learning and curiosity. As an extension of this, if it’s clear that people in the room don’t understand an idea, ask the question for them. Importantly, ask on your behalf, don’t suggest you’re asking for someone else. People who are wondering will be grateful for you speaking up, and other leaders in the room will recognize what you’re doing.
Start thinking about your own strengths and how they contribute to your leadership style. Leadership is deeply personal and must be considered on a case-by-case basis. Set aside time each week to reflect on how things went. Evaluate what strategies worked, what didn’t, and how you can approach the situation differently next time.
Becoming an effective leader is a lifelong journey; it’s incredibly challenging yet deeply satisfying. This post only scratches the surface when it comes to learning about leadership, but it should set you off in the right direction.