A few days ago, I came across this tweet from antirez, author of Redis:
A soccer player can have a great idea of the game tactic and strategy, the sense of her/his buddies in the field of game, but anyway to be able to kick the ball well is absolutely required. It’s the same for programmers: I’m proud to be a coder.
Years ago I was talking to a younger programmer about how he wanted to grow as a programmer.
He was officially a junior, but in some ways already ahead of that title. A remarkable written communicator, for example. His commit messages were extensive, nicely formatted, describing the Why, the What, the How. He was empathetic and humble in the way he wrote, always open to the possibility that he “might be missing something here. Can you explain?” Every i dotted, every list bulleted.
When I asked him what his goals were, he said: have you ever seen Formula 1? There are these guys in each racing team. They sit next to the track, in these boxes, and wear headphones. They monitor the race and give directions. I want to be like them! Thinking strategically, communicating directions and ideas.
Ah, I thought, I know what he’s getting at. He wants to be a tech lead, or staff engineer.
From where I was sitting, though, it looked to me like he could still get a lot better at coding. At testing, at debugging, at changing complex pieces of code, at anticipating side-effects of changes he was making, at understanding his tools and languages. I also thought it was still possible and useful to get faster: faster at producing working code, faster at reading and understanding code, faster at fixing failing tests and reproducing bugs, faster at shipping.
I said: yes, I know that position in Formula 1. Have you ever watched soccer? There are guys like this in soccer too. Midfielders, strategists, high-level thinkers. Players like Zidane, who can read the game like barely anyone else and know exactly who will be where on the pitch and when. They are not known for their running, but for their thinking. But make no mistake: even Zidane can run for 90 minutes and kick the ball into the goal from any spot on the field. No one would care about his pitch-reading if he couldn’t score when he had to.
Reminds me of this post by Nat Bennett:
https://www.simplermachines.com/career-advice-for-engineers-who-arent-supposed-to-exist/
Similar to your advice, he recommends:
Keep your eye on the long view
Don't let yourself get caught up in performance review
Get faster with deliberate practice
Get faster by building stuff
Stay technical
Used to that guy although I never came that good at communication. Sometimes the need for greater coding skills need to be injected.