What’s the Tech Lead Doing Anyway ?

Some days ago when having a discussion at work about the responsibility of the tech lead in an agile team, I’ve realized that this is not a so simple subject as I thought it was. Therefore, good subject for a post : )

But before being dictatorial and just writing my opinion, I ran a small twitter poll asking about this subject. Fortunately, most of the answers matched what I think in some level, so hopefully I will be able to cover it all here.

Before starting, a last note. I was reminded that the term tech lead might not be so used and known as I think it is, so if you don’t use this term at all, sorry : ). You can replace tech lead for architect, technical manager, master jedi, whatever you feel like…

Giving an introduction, the tech lead (TL)  term is defined here as a person who has the technical overview over a specific project. Some people disagree about the need for a tech lead at all, but that’s the topic for another post, and here we will assume that the tech lead exists and is a single person. Ok, that was the easy part.

Now the more subtle (and polemic) part comes here, so I will give my opinion on it (with the help from @dtsato and @flessa).

What a tech lead should be doing:

Have a technical overview over the whole project – As a developer doing everyday work, it is easy to lose the long term perspective about where the project is going and make decisions that will be better in the short term, but harm the project in the long way. It’s the job of the TL to keep that in the mind of the development team.

Make sure the project has a common faceStandards are important IMO, and making sure the project still makes sense as a whole, avoiding knowledge silos it’s the job of the TL. He shouldn’t have to enforce standards or ways to develop code, but facilitate the discussion within the team.

Remove technical impediments – As the most experienced person in the project, its natural that sometimes the TL will be the person in the best position to remove technical blockages that the team might have.

Bring people to a good technical level – If the team has different levels of experience, the TL should work to help people achieve a good work quality by sharing his knowledge and incentive others to do the same.

Write code. Write a lot of code – The TL is not a superior being that gives directions from the top of a mountain. Don’t know about your opinion, but if I can’t rely on the TL to sit down and pair with me when I have a problem I can’t solve, it’s no good to me.

I think that is enough for now. Now, for what the tech lead should not be doing:

Be the person responsible for the code – Being the tech lead doesn’t mean being the owner of the code, or the team’s boss. It’s everyone’s job to create high quality software, and the TL should only expose problems to the team and lead them in the right direction (emphasis on lead, not mandate).

Making all the difficult decisions alone - During a project, the team will be exposed to different technical decisions that will have to be made. Allowing the TL to take them alone just expose the team to more risk, since they won’t understand/care about what was decided. What we want to achieve is that Paulo exemplified here.

Impose his opinion – This is probably the most important point. Remember collective code ownership ? It is still very important. No matter how brilliant a TL can be, if he can’t share his knowledge/decisions and specially the responsability with the rest of the team, things will go bad.

7 Comments

What's the Tech Lead Doing Anyway ? | Agile Software Development | kozmom news  on August 11th, 2009

[...] View original post here: What's the Tech Lead Doing Anyway ? | Agile Software Development [...]

Jag's software guide  on August 12th, 2009

Nice article on Team Lead.

snewman  on August 13th, 2009

What’s this? First you rip off the Lego XP game, and now you’re ripping off my Tech Lead Manifesto: http://www.magpiebrain.com/blog/2006/09/12/a-tech-lead-manifesto/

The cheek!

Still, great minds obviously think alike :-)

franktrindade  on August 13th, 2009

I just saw your post after I wrote mine.

Was coming home today thinking about writing a comment about it so that people could see it, but you were too fast (with less style, I have to say).

Anyway, I liked to see you had some of the same things to say and I have to admit yours was much better written :)

Marcos Sousa  on August 15th, 2009

Great post! I think that even in self-organizing teams the tech lead is needed, but not in a strong way as it occurs in a waterfall model.

rpoli  on August 17th, 2009

In my opinion, this is better said than done, as the team needs to rely on a single person as the “tech lead”. As a rule of the software world, any decision taken by a single person alone is wrong. It is good to have the technical lead as a reference, but it is even more important to stablish a high-throughput-communication mindset among virtually everyone in the project. And that is not a technology task.

andrigo  on February 23rd, 2010

If I replace “Tech Lead” by “Scrum Master” in all the text above, and the do’s and don’ts would still make a lot of sense to me.

Aren’t we just reinventing a name for an already existing role?

Leave a Comment