On my current project, I'm playing the role of a Team Lead. It is one of those roles, whose responsibilities many people understand differently and often confused with a Senior role. In this post, I want to clarify this question and describe how I see the responsibilities of a Team Lead.
Let's start with the Senior role. Senior role in a team is closer to the technical side of the project — they are some kind of gurus who deeply understand the project (its development stack, its architecture), they help to solve arising technical issues, teach newcomers, share their experience and build high-level solutions (sometimes they try on the role of a Software Architect).
Team Lead is a role that implies not only a deep understanding of the technical side of the project but also team management. Team Lead solves problems and deals with blockers of team members on a much higher level and contributes to the project growth. He acts as a shield — protects their team from managers and customers allowing the team to stay focused and motivated. They are some kind of bridge from management(delivery manager, project manager, customer) to the development team and vice versa. Also, they are responsible for team activity monitoring, time reporting, and controlling the phases of the project development aside, of course, solving technical problems.
The difference between a Senior role and a Team Lead is that a Team Lead is a managing role. It implies process control but not the execution process, which is the responsibility of developers. However, it's still a technical role and the real Team Lead should deeply understand technical decisions that were made by his team. Besides, developers are herd animals — they can't be properly managed as long as they do not recognize technical skills in their Team Lead. If they see in their Team Lead only a manager then credibility is quickly running out, but if they can learn something from their Team Lead, for example, in a used framework, then they accept the leadership of the Team Lead.
Typical Team Lead's working day:
- consideration of new tasks and their delegation
- standup with a team
- software engineering
- solving architecture questions
- code review
In my experience, in healthy organizations, the role of Team Leader has usually been taken by developers who feel more responsible for the fate of the product being developed than anyone else. They often demonstrate hyper-responsibility that is often exploited by management.