As the development team working on a particular project grows, there becomes a need to divide the duties and responsibilities amongst all team members. After a few years of testing different options, we went with the Technical Leader approach and we are pretty confident with the role definition.
In contrast to the Senior/Regular/Junior classification, senior and intermediate developers can posses the role of Tech Lead.
Below are the eight qualities that every Tech Lead should posses. And this is the role model we came up with and stick to at Monterail.
A Tech Lead is responsible for the codebase quality of her project. This usually means doing code review of other developers, reviewing pull requests, etc. This does not mean that the Tech Lead is the only person who should perform code reviews and merges. In bigger teams this should be everyone's job, but it's the responsibility of the Tech Lead to make it happen.
While the whole development team should be engaged in discussions about technical solutions, toolset choices and the software architecture of a project, ultimately it is the Tech Lead's call to make a final decision.
Research, prototypes, PoC
In cases with unusual requirements, the Tech Lead is responsible for doing the research and preparing prototypes or proof of concepts. Those tasks can be delegated to other team members.
Contact with clients
When there is a need to talk with someone from the client's side about technical matters, a Tech Lead is the first person that the PM approaches. The Tech Lead can delegate the conversation to other developers from her team or she can do this herself.
A Tech Lead is supposed to have the best knowledge of her project. She should be able to answer all technical questions about the project. A Tech Lead should also ensure that the project's documentation is up to date.
A Tech Lead is responsible for the project's security. This includes keeping all libraries up to date, reacting to any CVE (both application and server side) and ensuring that any change to the codebase does not introduce any vulnerability. It is also Tech Lead's role to allocate time for those updates and explain the need (and risks) for it to happen to the PM and the client if needed.
A Tech Lead should be a mentor to other team members - help them solve technical problems, drive their learning path.
As already mentioned several times before in this post, a Tech Lead can delegate various technical tasks to other team members. This doesn't mean she has to. Even so, a Tech Lead remains directly responsible for the outcome.
As a side-effect, it turnes out that after replacing the project with company and the Tech Lead with CTO, this list of eight qualities makes a great Chief Technical Officer. One could say that a CTO is a Tech Lead of a company.