How much will you be worth in five years? Your Personal Technology Roadmap
It's quite common for software companies to have a technology roadmap. Such a roadmap will dictate the direction of product strategy and technology stack going forward. Examples might be, moving towards a cloud base infrastructure, entering into new marketplaces or introducing key product features. Turn this principle inwards and imagine the product is you? What changes would you make to increase the value of your product? As developers, trying to stay afloat in a fast-moving tide of technology it is essential for us to invest in our own personal technology roadmap to keep current.
What do you need to do to stay ahead in the next 5 years?
I recently read the book Beyond the Obvious and a question from the book jumped out at me. The question was: What's the worst case scenario for your business? This question was from a chapter of the book that discussed the concept of contingency planning for some unlikely event, a "jolt" that if were to happen would spell disaster. In my case, if .Net skills were to swiftly drop in demand I would be in serious trouble. So what does this mean? Do I scramble to extend my skills in C++ and Java? What if they fall out of fashion too. If I focus my efforts on these technologies and .Net grows even stronger then I may struggle to remain current in that domain if I am taking time out of my learning pot and allocating it to these non .Net concepts.
Learning about learning
A key element of the solution to this conundrum is to never stop learning. And seeing as there is a lot of learning ahead, we need to be sure that we are the best learners we can possibly be.
A fantastic asset for the toolbox is the book: Pragmatic Thinking and Learning: Refactor Your Wetware.
I also wrote a blog post that documents effective learning for developers.
Don't forget the timeless skills
This classic blog post from Steve Yegg titled Practicing Programming has a great practise drill, which is literally a timeless classic:
Write your resume. List all your relevant skills, then note the ones that will still be needed in 100 years. Give yourself a 1-10 rating in each skill.
On this point Steve concludes that:
What I think you'll likely find is that math, computer science, writing, and people skills are for the most part timeless, universal skills. Most specific technologies, languages and protocols eventually expire, to be replaced by better alternatives.
Getting started with a roadmap
I broke my roadmap down into three sections. I picked one thing for each of the below points that:
- I could do in my day job that will improve something
- I could learn for the future that will increase my value
- I just find interesting as a curious individual
1. Pick something you can do in your day job that will make improvements
It's easy to put together a simple hello world example in technology x, but I often find that I run into obstacles whenever I try to implement some new technology in a real world project. There will always be some slight difference or some unique constraint that will push the boundaries of hello world examples. This is how we earn our battle scars and helps me to really understand a new concept which is why I suggest this point.
2. Pick something you could learn for the future that will increase your value
Pick something that you can't do in your day job that could either help you remain current or pursue other opportunities. This isn't necessarily about trying to quit your job or dramatically changing what technology you use on a day-to-day basis, rather it's about being commercially aware and ensuring that we're not missing out on any new or key technologies that are emerging.
Before we go off and start learning, we need to ensure the there is currently or going to be a demand for these skills! This is very tricky unless you can see into the future or you have the developer's equivalent of the Grays Sports Almanac.
Some techniques I use to identify trends and emergence of new technologies:
- Use job sites to trend whats skills are in demand
- Use IT job statistics such as IT jobs watch (UK based) or TIOBE Programming Community Index
- Look at specific websites such as Stackoverflow which can give an indication of usage based on the volume of questions in a particular area
3. Pick something you just find interesting as a curious individual
Creating software to run on a Raspberry Pi probably isn't going to be a highly sought after skill. It will certainly help you become a better developer but if you were 100% commercially minded you may conclude that this time might be better spent on some other commercial project such as writing Android, iOS or Windows apps to sell in the respective app stores. But sometimes "just because" is as good a reason as any to pursue such a project, just for the love of doing it.
I would contest that the passion and motivation that is cultivated working on fun, but (potentially) commercially worthless applications like this can be injected back into your commercial work. It doesn't have to be technology based either, e.g. learn the play the piano or another language, but if you're a geek like me it probably will be!
What's your roadmap?
Once I decide on my three points, I follow them up using the below plan. This helps to prevent me from overloading myself with mental weight and giving myself impossible challenges:
- Create a weekly plan: try to do a small amount each week. Little and often is best.
- Create three small tasks under each section: small tasks that are less than a few hours in duration. This will help us not to overload ourselves.
- Give yourself permission to do nothing: sometimes we need a rest!