The software engineer’s career path is pretty straight forward at most companies. Starting at the intern or new grad level, there’s essentially a number of levels to progress through, each adding some amount of responsibility and technical complexity, until the rungs culminate into a position of leadership within a team. That position is either a Tech Lead (or its equivalent) or an Engineering Manager, or something in between.
The way I define these roles are:
- Tech Leads (TL) set the technical direction for the team. They act as de facto architects on projects, and are respected by the rest of the team as someone with the technical chops and often the seniority and experience to make the right decisions. They’re usually relied upon to deal with the most daunting and difficult coding challenges.
- Engineering Managers (EM) provide mentorship, career guidance, and personnel management. They’re responsible for the well-being of their team, finding ways to deal with the day-to-day whirlwind of work-related happenings, and fill in the many gaps that keep a group of engineers from success.
There’s a third role that I’ve seen, which is a hybrid of the two main ones: the Tech Lead/Manager (TL/M). Once in a while it’s due to an EM still wanting to code, but many times it’s simply due to a TL wanting to try on managing folks, or even coerced into management to continue moving up the career ladder. I used to think this encapsulates the best of both worlds; now I think it’s actually a bad idea.
From a TL standpoint, a natural issue with the TL/M role is that the M part should take up a significant chunk of time, which reduces time and energy available to truly invest in the TL part of the job. A bigger problem is that there’s an inherent conflict in the TL/M’s reports also being subject to his or her technical decisions; the healthy feedback loop that should exist between a TL and the rest of the team is threatened by the reporting structure. If we take an optimistic view of this arrangement, the TL can be making mostly the right calls and simply slow down his or her technical growth.
From the managerial EM perspective, holding the TL title and responsibilities can seriously hinder the career growth of the team, specifically by taking the opportunity away from someone else who may have stepped up. Not every team has someone who is able and willing to make the leap, but it’s of course the EM’s job to coach his or her engineers to fill that role, even if they’re a few major milestones away from an ideal TL candidate. That said, throughout my career at startups as well as with big and small companies, I’ve been consistently impressed by how well my colleagues were able to answer the call of leadership via filling a vacant TL position1.
There are legitimate transition paths from TL → TL/M → EM or from TL → TL/M → TL. The former is someone easing into management; the latter is a trial and declination to proceed. In both cases, I’m starting to think that the best option is to try to end the TL/M period as soon as possible.
How are past and current TL/Ms finding the role? Is my experience completely detached from reality?
One caveat here is that the performance of the team is some multiplier on the sum of its individual people, and so a part of the TL’s output is an amplifier on the rest of the team’s work, and is measured relative to the output without this TL moving into their position. That is, unless the EM promotes a TL who makes terrible calls and negatively drags down the team.↩