The exact role or title will vary.
CTO. Tech lead. Lead developer. Staff engineer. Engineering manager.
All require leadership and people skills. All require technical expertise. The ratio may be different in depending on the role, but both aspects are essential.
The metaphor I like to use when thinking about tech leadership is laying the track so that the train can continue ahead smoothly.
The train, in this case, is the people building whatever technology it is that needs to be built. They need consistency, flow, and enough context to see ahead of them and know what’s coming up but not so much they get overwhelmed or distracted.
Your job as a leader is to be ahead of them: seeing the wider landscape and knowing if there are certain places they need to get to at certain times. With this vision, we can decide on the direction of the track, avoid and remove blocks, and ensure as much speed and consistency as possible.
I believe this to be true whether you are a staff engineer or architect, focused purely on the technical direction of the company or department, as it is if you’re the CTO of a company or tech lead of an individual team.
The landscape you’re surveying may differ - it could be market competition, new frameworks and architectural patterns, or customer feedback that informs your decision-making.
How you lay the track will depend too: it could be ADRs, all-hands meetings, conversations in one-to-ones or team retros.
Our job as tech leaders, then, is to define a vision of the future, and then hold it to support others to achieve it.
That vision will be defined by cultivating the optionality of the software we are responsible for, balancing increased future value with the need to deliver value today.
It’s not easy, and it never will be. There is always an irreconcilable yet fruitful tension at the heart of tech leadership.
It is by leaning into the discomfort, rather than shying away from it, that we truly shine.