From obsessing over keystrokes to discovering who I actually am
The 3 levels of software mastery that unlock $1M+
After 15 years of coding professionally, I started to feel it in my wrists. I switched over to a Kinesis Advantage 2 keyboard, which has a ton of ergonomic features. There are key-wells to match the shape of your hands. The thumb cluster reduces strain on the weaker pinkies. The keys are ortholinear, which is fancy for not staggered, like the seats in a movie theater.
And all of a sudden, I couldn’t type anymore.
Every morning I’d show up to work early, fire up GNU Typist, and learn how to type all over again. It took a few weeks to relearn how to type and my wrists thanked me.
It’s been a few years since this happened. I eventually switched back to a staggered layout (with the Ultimate Hacking Keyboard) and forgot about this whole story. Until I talked with John on the Coding Chats Podcast about the three stages of career development:
Craftsmanship
Leadership
Specialization
You don’t have to go through all stages. You can have a wonderful and fulfilling career focusing solely on your craftsmanship. If you do choose to go all the way, a $1M+ annual salary is just one of the benefits that you can unlock.
The trick is that “specialization” does not mean what you think it means.
Craftsmanship
But we have to start at the beginning. Software development is not an art. It also isn’t a field of engineering, despite the common framing. Rather, it’s a craft.
Learning touch typing is just one small aspect of honing the craft. Every tool you touch shapes what you can build.
Early on in my professional career, I’d spend time looking at how the compiler converted my C++ code to assembly. This investment helped me pierce through the abstractions and build a deeper sense of how my code actually worked. It paid off multiple times, especially when debugging or profiling a performance bottleneck.
Speaking of languages, the language itself is a tool. I believe strongly that you need to master a few diverse languages early in your career. You need to develop a deep understanding of a few languages so that you can understand the trade-offs in the language design. It’s this understanding that unlocks productivity irrespective of the specific language that you’re using.
Here’s a fun story. Two of my colleagues pulled me aside and asked me to help them work through some C code that wasn’t compiling. Everything looked correct, until I remembered that they were working with a compiler for an embedded chip. These compilers are notorious for being out of date with terrible error messages.
The problem? The compiler only supported an older C standard (ANSI C/C89/C90), where you had to declare variables only at the start of the function. I remembered this small piece of trivia mostly because Pascal enforced a similar constraint.
The bottom line, you have to develop your craft, and that means mastering your tools. The keyboard, your operating system, power tools, languages, compilers, profilers, experimentation frameworks, observability tools, etc.
Your craft is a moving target. The day you stop learning is the day you start falling behind.
But here’s what everyone misses...
You can spend 20 years getting better at the same tools. You’ll plateau around $300K. Maybe $400K at a top company.
The leap to $1M+ doesn’t come from mastering one more language.
Leadership
With a basic proficiency in your craft, you can start to build your leadership skill set. You need to become the person that others choose to follow. It is 100% a skill that you can build from the ground up.
I pushed back on making this jump formal several times, mostly because I didn’t feel I had invested enough in mastering my craft yet. When I did make this transition, the beginning was... rough.
For me, the “aha” moment happened when I was in a not-for-profit. All of a sudden, I had to lead people much older than me. People who had more experience and many of whom were financially much ahead of where I was. All of a sudden, I had to lead without any real authority.
I learned to be me.
I stopped pretending to be someone else. You see, I had a picture of what great leaders were like, and I tried to act like them. The moment I stopped trying to be someone else was the moment I really started my leadership journey.
It wasn’t any of the countless blogs or books that I devoured. It was a simple realization that I can still be myself and lead. All it took was a Brain Refactor.
This was me. You will have a different growth trajectory. Unlike the Craftsmanship stage, the learning is more personal. There is one piece of advice that helps most people.
Don’t be Frodo. Be Samwise Gamgee.
I learned this metaphor during my time at Meta. Anuja Jaiswal wrote an internal post that really struck a chord with me. Your job as a leader is to be the side-kick, not the hero. In fact, most of your job really is to make them the hero.
One of the biggest risks at this stage of your growth is neglecting your basic craftsmanship. Leaders who neglect this part will not just get stuck at the second rung of the ladder, they’ll actually fall behind. It’s a subtle shift, very hard to detect in real time, but it crashes careers.
Developing both is hard.
And if you can manage it, there’s one more step to climb.
Specialization
There are fun click-bait articles on the common traits of successful entrepreneurs. What do Elon Musk, Steve Jobs, and Rafaela Diamant have in common. Besides one trait (hint: open up relentless dot com), there really is very little in common.
The top 1% of the 1% are unique.
And if you aim to be at the top of your profession, then you too have to be unique. You have to be uniquely you.
I spent some time interviewing very senior individual contributors (ICs) at Meta. The most common trait that they had? They knew exactly what they were great at. And they knew what they weren’t great at.
For example, I once asked one such engineer for help with a project. They refused. They shared exactly why they were not the right person for this job, and suggested some alternatives. It wasn’t a bandwidth or focus issue, it just wasn’t aligned with their strengths. And they were laser focused on their strengths.
One of the biggest and hardest lessons that I had to unlearn is that I can identify my own strengths. And that you can’t identify your own strengths.
We all look at the world from behind our own eyes.
To see ourselves, we need a mirror.
Most people think they know what they are good at. They are usually wrong. More often, people know what they are not good at—and even then more people are wrong than right.
-- Peter Drucker
When you practice your craft publicly, and when you lead others authentically, others can see you: your strengths and your weaknesses. If you have the courage to seek feedback, with purpose and great effort, then you will get your mirror.
You will see yourself.
And then embrace what you see. Double and triple down on it.
Summary
The path to the top of the engineering field is simple, even if walking it is hard.
Master the tools of the trade. Never stop learning and practicing.
Become a leader that people choose to follow. Be authentic.
Journey to find your strengths, then focus on them.
Several times in my career I ran very detailed and intimate feedback circles. These sessions let me see my own weaknesses and strengths. Any time I focused on my strengths, my career soared.
Then I became a solopreneur.
No more feedback circles. No more mirror.
I’m still figuring out what makes me uniquely me in this new chapter. Still learning which strengths matter when you’re building alone.
20 years in, I’m still on this journey.
Where are you in your journey?