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.

    • Not Team Lead. This is about Tech Lead. Different roles.

  1. 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 :)

  2. 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.

  3. rpoli said:

    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.

  4. andrigo said:

    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?

  5. Thyagaraju Govardhan said:

    Its is been a tough ride for me, as i get pulled into all sorts of management and technical tasks, which sometimes left wondering about my role and responsibilities. Your article provides good understanding, Thanks.

  6. Amit said:

    I was struggling with my project’s tech lead’s role and responsibility. Then I thought to write it down and give them in writing so that they can use it for a reference. I prepared one good presentation with all the details. While writing the presentation, I thought that this should be a good topic to post on the blog. You have written it very well. However, I have gone into more details. I would like to take your feedback. I will send you the link once I will post it in a day or two. Thanks for posting it on the web.

    • Hi Amit,

      thanks for your comment, glad that it helped you. Please send me a link with your post when it’s ready so I can read it too.

%d bloggers like this: