Somebody recently asked:
How do you learn to be a tech lead?
Knowing her background, I replied with another question:
Do you mean tech lead or team lead?
The difference was not obvious to me until I worked as a tech lead in a team that had a team lead.
On that particular job, as a tech lead, my responsibilities were:
- Choose the right tool for the job: be aware of existing tools/libraries/frameworks, their trade-offs and what was appropriate for the company’s context.
- Code contributions.
- Code quality (aka bugs).
- Production issues/outages.
- Design and architecture, including NFRs.
- Developer productivity: from testing, CI/CD, release, monitoring, …
- Technical mentoring.
- Awareness on other parts of the system: functionality available, technologies used, trade-off, high level workings, lessons learned.
- Applying the company’s architecture constraints, principles and practices, and raising concerns when we wanted to deviate from…