I got promoted to tech lead on a Tuesday. By Friday, I had rewritten the authentication service. Not because it needed rewriting, but because I didn't know what else to do with my hands. I'd been a senior developer for six years, and suddenly I was supposed to lead a team of five. Everyone told me it was a 'people role' now, but I nodded and went right back to my IDE. That was my first mistake.
The second mistake was worse. We had a deadline for a customer-facing dashboard, and I was neck-deep in a refactor of our logging pipeline. I told myself I was improving the system, but really I was avoiding the uncomfortable work of planning, delegating, and checking in. The dashboard slipped by two weeks. My manager asked me why, and I gave a technical answer. The truth was simpler: I hadn't assigned owners, hadn't written down acceptance criteria, hadn't done any of the boring stuff that makes a team actually ship. I was still acting like a developer, just with a fancier title.
The wake-up call came from a junior engineer on my team. She'd been stuck for three days on a payment integration because I kept saying 'I'll take a look later' and later never came. Finally, she walked over to my desk and said, 'You're the bottleneck. Every decision has to go through you, and you're not available.' It stung. I wanted to defend myself, but she was right. I had become the single point of failure. The same thing I used to complain about in my old tech leads.
So I started changing. I blocked off two hours every morning for code reviews and unblocking people. I wrote specs for every new feature, even short ones, so the team didn't have to guess. I delegated the refactor I'd been hoarding to two senior devs and stayed out of the code except for emergencies. At first, it felt like losing control. But within a month, the team's velocity nearly doubled. Not because they got smarter, but because I got out of their way.
The hardest part was accepting that my identity as a coder was fading. I still write code, but now it's spikes, prototypes, and the occasional hotfix. I measure my day differently. Instead of counting commits, I count conversations that unblock someone. Instead of polishing my own code, I review theirs and try to teach without taking over. It's less glamorous, but it's more leverage.
I miss the deep focus of a hard problem, the satisfaction of a clean pull request. But I've learned that leading a team is its own kind of engineering. You're building a system of people, not just modules. And the best code in the world doesn't matter if your team can't ship it.