If you are new to Leadership Letters, this is a periodic publication where I share insights into leadership qualities and challenges that are commonly encountered but not frequently discussed. Drawing from my experiences in the industry, working with leaders at prominent companies such as Apple, Google (#faang), and beyond, I aim to explore effective engineering leadership styles. My goal is to infuse a sense of enjoyment into technology, as it rightfully should be for all.
Pledge: I am never going to enable payments on these contents as it directly goes against my goal of spreading leadership lessons widely. If you like my content and want to show your support, please share with your friends and subscribe.
In the last post we talked about a TL’s job and how it drastically changes from being an individual contributor on the team. Specifically we looked into how TLs are expected to divide a larger project into multiple independent work items and work with the team to find the right owners for individual pieces. At the end of the day this work adds a lot of overheads and might make a new lead feel overwhelmed and unproductive. Today we are going to talk about this unavoidable transition and channel that energy into action.
My Tech Lead Rookie Mistakes
You know that feeling when you finally refactor a gnarly legacy system? Years of focused work to make it clean and efficient. Maybe some lucky timing helps, but ultimately, it's your iterative improvements that get the job done. I hit that point: smooth operations, tackling problems like elegant algorithms. Turns out, even when you've streamlined your workflow, the 'Tech Lead' upgrade reboots the whole system with a whole new set of challenges.
I thrived on that cycle of coding, deploying, seeing the impact. The TL role broke that loop. Sure, I was influencing larger systems, but the feedback was slower, less directly tied to my actions. That left me with a nagging sense of...did I actually do anything today? Gone were the days of my code powering production - now it was design docs and cross-team debates. Productivity? What's that? Coding time vanished, replaced by this nagging sense of... not building anything.
Despite likely meeting the role's expectations, I felt a constant sense of underachievement. I started having conversations with my leader about me feeling unproductive and reasons behind them. Discussions with my leader revealed this struggle is surprisingly common. Our individual contributor mindset is wired for tangible output–lines of code shipped (I don’t encourage writing unnecessary code, it’s just a figure of speech) and that is a very objective measurement. Leadership, however, requires shifting beyond those objective metrics into a space where success is far more nuanced.
The TL Productivity Playbook
Since I became TL for the first time at Google (it’s been a while), I have become far more experienced in leadership principles. Later in my career when I moved to Apple in a leadership role, I did not get the same downward unproductive feeling. So what changed? Over the years as I became more familiar with leadership roles, I built a framework and a set of principles to keep me motivated.
The TL role still involves coding, though at a reduced scale. Your primary focus is now on safeguarding the bigger picture and finding the right balance between hands-on work and strategic guidance. I've found it incredibly helpful to track progress in a work log. This highlights all your successes, especially those crucial 'behind-the-scenes' leadership achievements. Consider implementing below principles into your daily work-life:
Time Boxing: Allocate chunks for focused coding, review, and planning. Prevents a single aspect from overshadowing the others. Plan your days, weeks ahead of time.
Unblock others before unblocking yourself: Build a habit of unblocking others as a priority, remember now more people rely on you to complete their job, and your success is directly tied to making sure they succeed.
Celebrate the 'Unseen' Wins: Did you clear communication channels? Successfully negotiate a thorny feature decision? These leadership wins merit acknowledgement, even if they aren't lines of code.
In the final part of this post, I will share my personal framework that I used to effectively perform as a TL.
Unblocking OthersÂ
Become a bottleneck hunter: Develop a radar for project roadblocks. Are delays stemming from technical challenges, unclear requirements, or misaligned resources?Â
Don't be afraid to clear the path: Sometimes it means rolling up your sleeves to unblock technical debt, other times it means mediating miscommunication between teams.Â
Prioritize 'teaching to fish': Give guidance when needed, but focus on creating space for team members to navigate roadblocks independently in the future, so they can feel empowered, remember your job is not to empower, it comes from within.
Growing OthersÂ
Identify strengths and development areas: Actively observe your team. Where do individuals excel? In which areas could they stretch themselves?Â
Become a matchmaker (for growth): Pair people with tasks and projects that play to their strengths, while gently pushing their comfort zones.Â
Provide meaningful feedback: Be specific, focus on both successes and areas of improvement. Make feedback a regular aspect of your conversations.
Your Own DevelopmentÂ
Learn to say 'I don't know (but I'll find out): Tech leadership involves plenty of problems you won't have solved before. Acknowledge gaps, show you're invested in finding the answers.
Delegate to learn: Take calculated risks on assigning new challenges to team members. You might uncover hidden talents, while you create space to expand your own knowledge.
And finally, read books... There are plenty of books that talk about the struggles you might be going through - technical or around leadership. Reading books to develop a systematic approach to solve your issue is how you will grow. (My recommendations are for another time!)
That’s it for today! We discussed the overwhelming feeling most TLs go through and the mistakes that I personally made when I first became a TL. If you’re in a similar position today, trust me more often than not you are probably doing great! All you need is a constructive way of looking at the problem and realizing the shift in horizon. Try implementing the framework we discussed today and see if it helps!
If you enjoyed this content, please share it with friends and consider subscribing if you haven’t already.