Do You Need Tech Leads
This is a response to a blog post recently disputing the need for a tech lead on your projects to which I respectfully disagree. Teams and projects that range in size and scope can have varying degrees of success with technical leads but, IMHO, it is all but the smallest of teams that can function without some technical leadership.
In the diagram we see the range of developers on a team is going to vary based on how tactical vs. strategic they are and their breadth of skills. Having a specialized developer and SMEs on your team are critical in that they provide that in-depth knowledge of the application, the language, or the business processes that you can’t get from those with a wider breadth of skills. Same goes for your utility developers. They can quickly be ramped up in different areas of the team to assist with deliverables but they don’t have the strategic outlook to see the project as a whole and will typically be more task oriented.
Technical leads have both that wide breadth of skills and the strategic view of the project to give the guidance but don’t have the capacity to get “down in the weeds” for with a lot of very specific deliverables and tasks. This allows them to focus on quality, decision making, and interfaces within the application. This is particularly important if you have a team with more junior programmers for which a technical lead is going to provide the guidance and mentorship that these devs need to be successful.
Depending on the size of the team the Technical Lead could serve different purposes. On smaller teams it may seem like a technical lead is overkill. It can be difficult, however, even on the smallest teams to delegate work appropriately. Having a technical lead puts that ownership on one person to make sure that every task is properly assigned. On medium size teams, as the projects tend to scale upwards, it becomes more imperative to divide an conquer. Projects get broken into modules and it is the responsibility of the technical lead to make sure that the interfaces are in place so the project works as a single, cohesive entity. Finally is your large scale enterprise projects. This is where you may need technical leads in different areas because the application spans different languages and architectures. The roles of the technical lead now becomes much more strategic in that they have to understand how it will be able to scale, sustain maintenance releases, and incorporate new features.
The role of the technical lead is unique in that they don’t do as much heads-down coding as their peers but they are not managers. The big difference between tech leads and managers is that tech leads understand the implementation whereas managers don’t (nor do they need to) understand it. They provide technical accountability of the project as a whole.
Obviously this is not a one size fits all approach. There are plenty of teams that can function without a tech lead. If you happen to have a small, exceptionally skilled team it might not make sense for you to fill this role. For the rest of us, however, it is a critical path to success.