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.
Team vs Technical 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 those.
- Technology proof of concept.
- Technical assessment of candidates.
- Technical debt prioritisation.
My fellow team lead would take care of:
- People's career progression.
- Performance appraisals.
- 1-2-1.
- Reporting up and down.
- Recruitment, team composition.
- Onboarding.
- Internal and inter-team conflicts.
- Project management.
- Inter-team coordination and dependencies.
- And a myriad of other things that I was not aware of.
What we will both do:
- Backlog grooming: me for feasibility and rough sizing. Team lead to know if we had the capacity and for stakeholder management.
- Development process improvements: me more to suggest, team lead more as Scrum Master and lean/agile coach.
Basically I will become a software architect while the team lead would become an engineering manager.
Choices
Continuing with the conversation:
Me: "What path are you asking about? You cannot do both."
Tech lead: "Both is actually what I have been asked to do."
Me: "How is the experience of trying to do both?"
Tech lead: "Is it a lot. I spend most of the time doing management, admin and planning."
Me: "So you are team leading, not tech leading. But if you are not doing the tech leading (because you have no time), then you should raise it with your manager."
Tech lead: "Haven't you ever act as both the team and tech lead?"
Me: "In my very early days (~2002-2004), in a very small company in a team of ~6 people. Of the list above, I know I did not had to (or did not know I had to):
- Production issues/outages: never got anything successful in production, hence no users, hence no production issues.
- Design and architecture: system that we built were simple.
- Developer productivity: mostly unknown things for me back then.
- Awareness on other parts of the system: there were no other parts, not other teams.
- Applying the company's architecture constraints: No such a thing.
- Technology proof of concept: no time for this.
- Technical debt prioritisation:
- People's career progression: we were trying to survive, not planning long or mid term, also I was probably not aware.
- Performance appraisals: see above.
- 1-2-1: see above.
- Reporting up and down: company was small enough to not need this.
- Recruitment, team composition: recruitment yes, but the team composition was pretty static.
- Internal and inter-team conflicts: Internal yes, but no other teams.
- Inter-team coordination and dependencies: no other teams."
That is a long list of things I did not do.
Are you asking too much from your team/tech lead?
If so, what is she neglecting? Do you agree with her choices?
Top comments (3)
In small startups you inevitably sit on both chairs (if not more), and thus this role of tech+team lead is probably one of the most exhaustive indeed.
Team Leads, also called Engineering Managers should focus on Career and Growth (People) + Enabling the team to be at their best. TL's role is to drive technical and engineering excellence + deliver the product. There still some overlap in responsibilities, especially around growing other engineers. The TL though should focus more on the technical side of things but it doesn't hurt if he coach people on project management, communications etc, these are equally important skills.
But in the end wont the Tech leader also, at some point, also have to deal with the People aspect? OK, maybe the next step for you was Software Architect?
And after that? Maybe System or Solution Architect? After that? Architecture Manager?
At some point the the "Manager" role will be in your career path, except for some companies, it's pretty difficult to keep going up, and stay 100% on the technical side.
So is it being exposed to it early that bad? Yes, wearing both heads can be more than you can carry.
But is your manager, or whoever decided you could do both the only responsible for it? How transparent are we about the things we neglect because it's too much for us to handle?
If we are pretending to be able to handle it all, isn't it part our fault as well?