If you want a fast-moving career, think of each job as a stepping stone. A good stepping stone is one that gets you closer to the next stone in your path, towards your end-goal.
The end-goal is your dream job or ideal career.
The thing about stepping stones is that you have to make a jump if you want to reach the next one. You can stand on a stone as long as you want but it's not going to move on its own.
A slow and steady career, on the other hand, is more like floating downstream in a slow steady river. You're not going to go as fast, but you don't need to do as much jumping. And you don't have as much say about where you're going to end up.
Choosing to make the jump
Years ago I was at a crossroads in my career where I had a job offer to work in PHP and another offer at a different company to work on JavaScript and Node.js.
I was much more comfortable in PHP. My knowledge of JavaScript had a lot of holes in it and I didn't know much about Node.js except for what I had learned in a few hackathon projects.
I would have been in my comfort zone with PHP. I wasn't looking for comfort, though. I was looking to keep my career moving and jump to the next stepping stone.
Jumping into the deep end
So I took the JavaScript job. I have to be honest, it was a lot of work to get up to speed. I had to learn how Node.js does things, which was very different from PHP -- and also different from Rails and Django which I had used before.
But I knew that JS is where I wanted to take my career next. I wanted to go after where I saw the action. The opportunities were there and when I looked at Node.js, which was relatively new, I saw a platform that was picking up steam at breakneck speed.
I could have worked on my JS skills in my free time while working in a comfortable, slow-moving day job. I could have played with Node.js in my personal projects, while writing code in PHP at work.
But I didn't have the patience, nor the extra time and energy for that.
That's why when this opportunity came knocking, I'm glad I recognized it. It was an employer who was willing to take a risk on me and my skills, and who basically wanted to pay me to learn things.
Choose your next job strategically
Not all employers will give you this kind of opportunity. In fact, the majority of employers are not willing to take risks, and many of them are bad at hiring overall. To be fair, hiring well is a really hard process.
How to maximize the chance of finding good stepping stone job opportunities?
- Decide if you want to take some risks and if you want a fast-moving career. If you're at a point where you want stability, then a stepping stone strategy might not be the best choice.
- Know what you want to learn next. Look at where the action is in the industry, and see where you can build career capital.
- Recognize the effects of hype in the tech world and how you can take advantage of it. What you want is not short-term hype, but medium-term: the cycle needs to be long enough for it to be a worthwhile career capital investment.
- Show that you're willing and able to learn fast. Smart employers know that this is more valuable than X number of years of experience in a technology.
Pick the job that matches your philosophy
It was no coincidence that the employer that was looking to hire someone to do Node.js was also willing to hire someone based on eagerness to learn instead of years of experience.
This was a time several years ago when Node.js was in its early stages. And this company was an early adopter. Their very philosophy was to move fast, learn fast, and take advantage of new technology. So they were looking for people that shared that philosophy.
If you want a stable, slow-moving career, then pick a slow-moving technology stack. Stability can be a good thing if that's what you're looking for.
You can stay with PHP or enterprise stacks like Java or .NET for a solid, stable career: but generally speaking (and ignoring the expections) don't expect to find fast-moving, risk-taking employers in those stacks.
Learning something from each step
I learned a lot from the work that I did with PHP: it made me a better programmer.
I also had a few stepping stones that involved Python, Ruby, Go and some other stacks.
In retrospect those steps were a bit to the side, rather than aligned straight-on towards my goals. Only later did I decide to go all-in with JavaScript as my chosen language of expertise, and I didn't pursue those other languages further.
You don't always have enough visibility to tell which step you should be taking, or which direction you should be going.
As long as you're not stepping backwards, then you're going to learn something new with each and every jump. And you're going to see your next steps more clearly.