What is a tech lead?
"Leading a development team is no easy task. An effective Tech Lead establishes a technical vision with the development team and works with developers to turn it into reality. Along the way, a Tech Lead takes on traits that other roles may have, such as a Team Lead, Architect or Software Engineering Manager but they remain hands-on with code."
I believe the above article explains well what a tech lead is. I can mention some more details like code reviewer or responsible for merging to production etc. All these and more other make the tech lead role a reference for people in and out of the team.
What about coding?
Tech Leads usually code at least 30% of their time because a) normally they are good at it and b) their code style is (should) an example for others to follow. The reason that they cannot code 100% is that they have to be some steps ahead in designing, thinking and analyzing bigger areas of the solution and prepare the ground for others.
Some times instead of code they produce documents and diagrams which will be a kind of requirements for other devs and also they provide helpful information about technical problems and how they should be resolved.
What about Scrum Teams?
Let's remember what scrum guide says.
"Development Teams have the following characteristics:
- They are self-organizing. No one (not even the Scrum Master) tells the Development Team
how to turn Product Backlog into Increments of potentially releasable functionality;
- Development Teams are cross-functional, with all of the skills as a team necessary to create
a product Increment;
- Scrum recognizes no titles for Development Team members other than Developer,regardless of the work being performed by the person; there are no exceptions to this rule;
- Scrum recognizes no sub-teams in the Development Team, regardless of particular domains that need to be addressed like testing or business analysis; there are no exceptions to this rule; and,
- Individual Development Team members may have specialized skills and areas of focus, but accountability belongs to the Development Team as a whole"
I intentionally highlighted these two bullet points because they seem to raise the questions:
a) Is Tech Lead a title that scrum does not recognize and what if so?
b) Can this role be replaced from just a senior developer with some broad technical knowledge?
Obviously it is a title and scrum does not recognize it. But let's see which are the prons and cons in each case.
Pros and Risks of starting a team with an official Tech Lead role given.
Sometimes when a scrum team forms, members skills are not the same. This leads to an easy management decision to give to a senior developer the tech lead title. This has some goods and some risks.
- Most of technical decisions will come from this person with no much debate. This will lead to faster results.
- People will feel more relief that they don't have to take hard technical decisions
-People outside of the team use this person as a point of reference and the communication channels are smaller so its better for them (at least is what is they thing)
- Usually if the person is "really" a good developer with broad knowledge of technologies will lead to good technical solutions
- Other devs may not agree with what the tech lead proposes but since he has the title they are hesitating to speak their minds
- People could stay in a passive mode waiting for instructions of how they are going to implement something
- In case of absence the team cannot move forward easily
- Responsibility of the results may be considered as something that only the tech lead has
- Could reduce the "team" spirit and lead to a manager-developer schema
- Difficult to change the mindset later if you want
Pros and Risks of starting a team without an official Tech Lead role given.
On the other hand, no role is recognized from scrum. That means a team could begin without a tech lead role given. Let's see which are the pros and risks.
- Team members may feel more comfortable to speak up their minds about technical issues and decisions.
- Leads to cohesive decisions so the responsibility is shared among team members.
- Could lead to more active people who take initiatives and suggest alternatives.
- Could increase the "team" spirit
- People could feel insecure of the decisions they make so they begin to hide in the "backstage"
- Slow decisions due to disagreements
- Decisions that could create technical debt in case they are missing a senior software developer
What about a tech lead emerges from within the team?
Well this is what happens most of the times when you start a team without an official tech lead role given to any member. You just have to have one or two senior people inside and probably after some time the other devs will start to listen their proposals about technical decisions more easily.
This is good also because the title is most of the times the reason of the risks mentioned in a team which starts with the official role. Probably a person emerged from inside the team, never gets officially the title but his actions are very close to the responsibilities this role has. The difference is that she will not get all these responsibilities and this will be good because it may "force" other team members to take initiatives.
What if things do not go as planned?
That's another reason you need an agile coach (or scrum master). Because most of the times things tend not to go so well and the agile coach must be there to raise the consciousness of what is considered best practice in the Agile world.
The agile coach must be on guard and watch for behaviors in the team that lead them away from the agile values. She must take immediate actions to coach people and try to make clear the wished mindset.