At the time, being an entry-level SW engineer, my colleagues and I were curious about the individual contributor career path. There are many questions to be answered, but some repeated frequently. Among them were — What is the meaning of being a tech lead? How’s it different from being an experienced team member who is familiar with all the bits and bytes of the language, framework, and domain that he uses daily?
I’ve heard various answers to these questions, such as — A senior is a job role while a tech lead is a team role. Or that a senior is an engineer who has enough expertise to lead in technical tasks as design, providing effort estimation, performing code reviews, mentor others, and more. On the other hand, tech lead is a person on the team, which in charge of the technical decisions and approaches, a sort of software architect. Besides, he does management tasks, i.e., motivation, career guidance, coordination, and planning. Aha, and that you can be both at the same time.
Well, it is quite challenging to draw the line between the two positions. Both share the same qualities, with one significant different — seniors are suggested to demonstrate those skills, whilst a tech lead is expected to master them.
In the paragraphs below, I’ll try to focus on several key attributes that, in my opinion, emphasize the differences between each role.
What do you know, and how well do you know it. For example, take a programming language. A senior would say: “I know language x, I’ve worked with it for some years, so I’m experienced with it”, but for a tech lead the expectations are bit varied:
- One that can quickly identify the optimal way of solving a problem. Whether it will be a defect fixing or during a code review, a tech lead would instantly say, “you should try Y”. He bases his opinion on his vast domain experience, project timeline, and the teammate’s proficiency (taking into consideration her growth-path).
- Knowing isn’t enough. How you gain knowledge is more important. After careful consideration, one should make sure to attend the right tech conferences, read insightful books, develop some side projects, participate in meetups, and find mentors that fit him. Thus, enhancing his ability to understand any concept, platform, or whatever it may be to make his work better.
- Be up to date with any emerged software engineering trends (frameworks, platforms, concepts, languages, etc…). Either by reading diverse sources, listening to podcasts, or any different suitable approach for you. Furthermore, maintaining a profile at one of the SW engineering blogs, where you answer questions about those trends, not only for helping others but for expanding your understanding. You become an expert that teaches others, and it is known as the best way to learn.
- Creating an online opensource repository. Basically, for learning language X, developing a sample project, even a simple hello-world, just for the sake of getting your hands dirty, would teach you a lot. In the future, others might comment on, share, or contribute.
- Pushing yourself forward. You know what you don’t know, and every passing day you think about how to bridge that gap and understand more about it.
- Lastly, It isn’t about being a world-renown expert, saying that you appreciate who are the leading personas in your field and follow their steps for trying to become one.
In my experience, a tech lead would have at least three expertise that fall into the above checklist.
As a senior, your influence is, in no doubt, essential. You affect your team members through various technical discussions and by collaborating with other teams too. Whereas, a tech lead is expected to have both and to influence customers, adjacent groups, and the organization’s leaders. He should know when to share information, as well as when to lend an ear. His everyday work is to help others improve their skills set by guidance and mainly listening (a vital skill of being a leader).
The value you deliver. For example, You’ve found a problem and can think of a solution for solving it. You may have solved it by yourself, but what would be more fundamental, is leading into acceptable completion. Also, the impact might be a new initiative no one has thought of or even a significant refactoring of existing code that improves the product’s quality. Those actions (and more) are translated into a high quantity of business value.
You could find technical expertise as your primary focus, you can be the leading software engineer in your domain, being known for your knowledge, but you aren’t a tech lead. A careful balance is a key between the presented three areas and it's on the individual contributor to make sure he grows in each one of them.