Most professions require their practitioners to remain constantly up-to-date.
Think about accountants learning about new tax regulations, or doctors studying new medical research.
It’s a challenge. So much so, that many fail to remain current even when lives are at stake.
In our profession, the challenge is particularly prominent. Specific knowledge, outside of selected niches, becomes obsolete in a matter of a few years. In some cases, even less than that.
Betting on horses
Whatever set of tools you use to get your job done will naturally evolve, so you’ll need to pay attention to that and update yourself accordingly.
That’s the first and easiest part. The second – and more challenging – part is to keep up by learning new technologies that continually emerge.
Learning something new requires time and energy. Our challenge is particularly exacerbated by the fact that we don’t have Paul Graham coming down the mountain telling us, “Learn X” next.
There is the concrete possibility of investing our limited time and energy on technologies that will prove to be a lousy investment for whatever metric matters to you (availability of jobs, productivity, technical merit, etc).
We are more or less betting on horses when we decide to pick a new language, framework, tool, or emerging category of computing. Some are sure bets. Some are long shots.
Either way, there is no escaping a degree of uncertainty, unless you update yourself on new technologies only after they have gone mainstream for years already.
A balanced programming skills portfolio
My recommendation is to treat the problem like you would for an investment portfolio.
Different investors will have different risk profiles. But everyone will hedge their bets trying to create a balanced portfolio.
Diversify among the languages, frameworks, and technologies that interest you or could benefit your work.
For example, React or Angular2 are safe bets. TypeScript is a fairly safe bet. Elm and PureScript? Not so much. Data Science with R or Python is a safe bet. Data Science with Scala or Julia is a riskier investment.
Swift is a very safe bet. Go is safe. Rust and Elixir, slightly less so. Crystal is much riskier. Pony is extremely risky.
Note that riskier doesn’t mean not worth it. On the contrary. Riskier investments can be quite rewarding. Ruby was a risky investment in 2004. Yet it paid off incredibly well for myself and many other early adopters.
What’s “risky” for you also depends on what you value. If your goal is to be a consultant or to have a rewarding job tackling interesting problems, you are risking your time and energy when betting on a stack that few people might use three to five years from now.
Avoid becoming obsolete
3D printing, drones, bots, augmented reality, blockchains, deep learning, quantum computing, you name it. Some riskier investments than others, but you shouldn’t ignore them all entirely. Instead invest in some of them, following your gut and what interests you the most.
The point is to avoid getting yourself in a place where you don’t have any new technology skills in your portfolio. Doing so might make your skill set obsolete when winter comes.
There are countless possible technologies to choose from. If you are smart in the diversification of your investment in learning new technologies, you’ll future-proof your career and continue to remain relevant.
Investing 20% of my time and effort in a diversified portfolio of new programming skills and technologies has served me well.
Over time, you’ll also become much better at spotting what’s worth investing your time in and what’s not (e.g., fads), based on patterns you have witnessed first hand – including detecting the intangible aspects of a project or community that make a difference.
The fundamentals, however, will pay off dividends your entire career. Yet another argument in favor of nailing down the basics. ^
Admittedly, I find this to be also the most fun part. ^
That’s okay to do. You are, however, playing catch-up and missing out on the many benefits of being an early adopter who’s on the left side of the chasm. ^
Antonio Cangiano is a Software Developer and Technical Evangelist at IBM. He authored 'Ruby on Rails for Microsoft Developers' by Wrox (2009) and 'Technical Blogging' by The Pragmatic Bookshelf (2012). You can follow him on Twitter.