Life before a software engineering career is commonly a series of time-bound efforts to gain competency in a new area. This semester you learn geometry. That semester you learn history. Next semester you learn calculus. And so on.
As a result, most people entering the software engineering workforce equate learning with learning a brand new topic. I didn’t know ruby, I learned ruby. I didn’t know SQL, now I know SQL.
This kind of thinking leads people to 2 year cycles. On most modern software teams, it takes roughly one year to really feel like you have your feet under you. By that time the kind of learning novelty people are used to isn’t there. By 16 months they’re restless. By 24 months they’re gone.
This is a problem. It’s a problem because the majority of durable and transferable knowledge comes after achieving basic competency. Mastery of a skillset, understanding and learning from the outcomes of decisions made years ago, architecture and design, leading projects - these all come well after basic competency.
Not only does a life of cyclic learning work against reaching these next levels, but your ego and willpower also work against you. Those next-level skills are harder to learn. And once you’ve gained competency you lose the excuse of “I’m onboarding” or “still ramping up” when something goes wrong.
I always challenge engineers that want to make big changes in what they’re working on to consider whether they’re simply at the end of a novelty cycle. I always encourage them to go after those next level skills.
On the hiring front, I see a lot of people who have a career’s worth of 2-year stints. You can do that successfully for an entire career, and there are even some people that’ll tell you it’s a way to optimize earnings over time. If it does, I believe it only optimizes earnings for people who can’t get to those next level skills. The biggest earnings come from building and growing with a winning company.
24-monthers never deeply learn how things work. They’ll typically add value to a new company by carrying a collection of things they’ve seen before and shallowly applying them to similar problems. But when faced with a new problem that doesn’t map easily to the solutions they’ve seen, things start to break down.
The end-games for both careers are very different.
24-monthers eventually can get into C-level positions where it’s not uncommon to bring in someone who can just apply the common solutions to the similar task at hand. Their stints usually end right around the time where they’ve upleveled the company in some way and don’t know how to grow their team or evolve their strategy or deal with the short-comings of some of their decisions.
People who learn next level skills and how to deeply understand and react to the tasks at hand lead companies to uniquely successful outcomes. The best CEOs, the best CTOs, the best C-level anything - their careers are often a small handful of long-duration roles where they didn’t apply rote practices but innovated and reacted to change and created novel solutions based on deep understanding.
I’m not saying you should stay with any given job. There are bad roles and bad bosses and everything in between. And skill diversification is important. But every job has problems. If you’re leaving because you’re chasing novelty or avoiding tackling your company’s challenges, you’ll start over in the cycle. Leave enough places for these reasons and you’ll find you’ve seriously limited your opportunities and earnings over time.