Becoming Tech Lead again
It’s been a while since my last post. During this time, I started working for another company as a regular software developer, not as a Tech Lead. Does that mean I need to close this blog and start a new one with a more fitting title? Just kidding, of course.
My goal is to become a Tech Lead again in my current team, and I believe that writing about the Tech Lead journey will be a good way to reflect on my progress. I also hope it will be educational and insightful for developers like you.
At the time of writing, I've been with this company for about 2.5 months, but this post summarizes my first month working towards becoming a Tech Lead.
Why do I want to be a Tech Lead?
This section explains my motivation for becoming a Tech Lead and highlights factors you could consider when planning your next career move in software development.
My motivation to become a Tech Lead stems from a combination of four key areas:
What I enjoy
Feeling impactful and responsible for both the technical and people-management aspects of projects
What I excel at
Recognizing patterns, analyzing problems, solving complex issues, and optimizing team workflows in software projects.What I want to challenge myself in
Selecting solutions that align with business goals and making architecture-level decisions that improve long-term scalability.Compensation
Typically, the more impactful a role is, the better the pay. More importantly, I believe I bring significant value to the companies I work with, and I want to be fairly compensated for that.
Note on #3: I purposefully titled this point "What I want to challenge myself in" rather than "What I want to develop" because challenges excite me more. This distinction is important when I revisit this post for career motivation or when making future decisions.
My Plan to Become a Tech Lead
In my previous job, I became a Tech Lead because I was the most experienced developer, with strong domain knowledge and expertise in software engineering. However, that’s not the case in my current team. This project is also far more demanding in terms of services performance compared to my previous projects.
This presents a new challenge for me, especially since I’d like to assume the Tech Lead role in a relatively short time. So, what's my plan?
Act Like a Tech Lead from Day One
I want to show that I have the skills and mindset required to be a Tech Lead. I also want my teammates to see what they can expect from me, both as a developer and a potential team leader (though I’m not sure they know about my ambition). This is stressful because it involves suggesting changes to people with far greater project knowledge and ingrained work habits. What helps me manage this stress is:
Determination to reach my goal
Confidence in my software engineering skills and belief that I can propose valuable ideas
A history of failed attempts that have made these situations less intimidating
Acknowledging that I might be wrong, which helps me communicate humbly and listen carefully
But what value can I bring from day one, when I have minimal domain knowledge? Fortunately, programming languages, solid engineering practices, and design patterns are fairly universal. So, I can review code and suggest improvements based on my general expertise.
That’s what I started with, and I received positive feedback for “suggesting a good improvement and bringing fresh energy to the project.” A strong start, I'd say! Code reviews are also a great way to understand team coding practices and what matters most during reviews.
(I was a bit nervous that someone might tell me to ease up on the comments, but no one did. Either my teammates are very patient, or my suggestions were actually valuable.)
Listen, Observe, Identify Problems, and Plan Solutions
My main goal during the first month was to observe the way of working, types of tasks, team dynamics, meet people, and understand the project’s challenges.
Meetings with teammates, the architect, and project managers didn’t provide as much insight as I had hoped. However, I learned about two key challenges:
Many bugs were being reported by users.
The team lacked initiative, heavily relying on the Tech Lead, who had been moved to another area. (Spoiler alert - that has improved really fast without anyone’s intervention)
In hindsight, it may have been too early to expect major findings. My ability to dig into issues relies on connecting dots, and I didn’t have enough knowledge at that point. However, the positive side is that I broke the ice with my teammates and other colleagues in the company.
Learning the Domain
Domain knowledge is crucial for speeding up feature implementation and problem-solving, so it’s an area I wanted to focus on. However, I must admit that I didn’t make as much progress as I had hoped.
I expected more thorough onboarding into the domain and services my team maintains, but that didn’t happen. In hindsight, I should have requested more detailed onboarding or taken proactive steps to learn on my own.
What I did manage to do was actively participate in feature refinement sessions. My approach in these meetings was to act as a full and equal team member, asking for explanations when I didn’t understand something. This might sound bold for someone new to the team, but I believed I could contribute once I understood the project better.
My questions and paraphrasing revealed that not everyone shared the same understanding of certain problems, and some key details were missed. So, I did manage to add value, even at this early stage.
I encourage anyone onboarding to a new project to adopt the mindset of “I deserve to understand,” as it’s a great way to gain domain knowledge. Many people are too afraid to ask for clarifications, but it’s essential.
Areas for Improvement and Future Plans
As I mentioned earlier, domain knowledge is essential, and I’m not satisfied with my progress in this area. Therefore, it will be my top priority over the coming months. In my previous projects, solving bugs proved to be one of the best ways to gain this knowledge, so that’s how I plan to achieve this goal.
Despite my initial disappointment with bug analysis, I plan to continue efforts to reduce the number of bugs in our project. I’ll organize a brainstorming session to explore strategies for achieving this goal.
Subscribe to my newsletter
Read articles from Artur Stępniak directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Artur Stępniak
Artur Stępniak
My name is Artur Stępniak. I focus on achieving business goals with help of my technical expertise. I started my professional software development journey in 2010 with C++ embedded system development and after a few years transitioned to Python. I’ve been different kinds of lead since 2012.