The majority of technical organisations I’ve worked for have had teams whose software engineers are led by a team lead. This is usually a role that’s part-line management and part-technical. There’s a growing number of organisations, however, that are doing away with the team lead role in favour of a flatter hierarchy. Here at OVO, we’ve gone down that route. We don’t have team leads, and all the software engineers on two or three teams are line managed by a software engineering manager. In this post, I want to briefly discuss some of the advantages and disadvantages of this model.
More open communication: The team lead usually has the deciding vote on technical matters. Even if they invite opinions from all, the team lead is the direct line manager of the engineers. This can lead to many engineers (consciously or unconsciously) going along with their line manager’s views, whether they agree with them or not.
Having line managers sitting on the outside of teams looking in allows the engineers to make technical choices that are informed by the views of all the team, not disproportionately by the team lead. It leads to all members of the team feeling a greater sense of ownership and responsibility.
Better line management: Often, a team lead is a strong software engineer who gets promoted solely on the basis of their technical skill. They then find themselves with line management responsibilities such a career development and performance appraisals that they have no great inclination to do. They often feel mildly resentful of the time it takes away from their technical duties.
No team leads often results in better line management for engineers. From my experience, the crossover in skillset between “great manager” and “great engineer” is actually not all that common.
No single point of failure: Having a single arbiter on technical matters within a team can cause real issues when that person leaves the team or company, goes on a holiday, or is off sick for a long period.
A flat engineering hierarchy means the team tend to take ownership of their technical estate, rather than a single person.
Less burn-out: Often the competing pressures of leadership and line management, as well as having to write code and make technical decisions, leads to over-long hours, stress, and anxiety for team leads.
Where do people get experience in technical line management? This is the big one for me. As an engineering manager, I got my start as a team lead. I grew to appreciate the art of people management by starting out slow, with just a few direct reports. If I feel one of my direct reports shows the aptitude and desire to be a technical manager, how can I help with their career development if there’s no team lead role to start out in?
The gap between software engineer with zero management responsibility and software engineering manager, with line management responsibility for multiple teams, means it’s very hard to promote from within or to help aspiring technical managers develop.
We’ve not quite solved this problem yet, but we can still help engineers develop some of these management skills. We can offer the opportunity to lead other types of community (for instance, at OVO we have engineer-led communities based around practices such as DevSecOps, and technology platforms such as Kafka). We can encourage engineers to engage in coaching or mentoring roles with other engineers. As software engineering managers, we can make our own ways of working more transparent to our direct reports, or engage in mentoring ourselves.
Time to awesome: There are many benefits to a team with no team lead. However, most people aren’t too used to this way of working yet, and it can take a while for engineers to get their heads around it. Also, not having that ultimate technical authority means that engineers really have to develop their communication skills and ways of working. The ability to rationally argue a case, listen to multiple colleagues, and to go along with ideas they may disagree with are a lot harder and more complex than simply doing what the team lead says.
With no team leads, you really need roles like agile coaches and engineering managers putting in a lot of time with team ways of working and mentoring engineers in soft skills.
Teams with no team leads take more time (not infrequently a LOT more time) to arrive at that state where they’re moving like a well-oiled machine. In my opinion, this actually isn’t too much of a long-term disadvantage- you just need to put more work in at the start, but the end result is worth it. It’s an absolutely fantastic feeling to see a team putting months of hard work into their ways of working, weathering various crises of faith or personality clashes, and come out of it at the end as a confident, mature, and independent group of people who deliver amazing software.