The one skill you need to learn in 2018 (and 2019, and 2020, and …)
If you want to become a better programmer or find a better-paying job, you might wonder if there’s a particular technology you should learn in the coming year. Once you learn this technology you will become far more productive, and provide far more value to current or future employers.
There is something you can learn, but it’s not a new web framework, or a programming language, or an IDE. In fact, it’s not a technology at all.
It’s better than that.
Much better.
Why you need to learn this
Imagine you’re a contractor for an online pet-supplies store, selling supplies for cats and dogs.
One Monday the owner of the store asks you to add a new section to the website, selling supplies for aardvarks. Being a skilled designer as well as a programmer you can update the website design, then change the database, write some new code… By the end of the week you’ve launched the new Aardvark section.
Next Monday the owner is back. This week you’re adding badgers, so you add another section of the design, update the code to support another pet, and again you’re done after a week. The next week is crabs, and so on and so forth until by the middle of the year you’ve added zebras.
Unfortunately by this point your website has 30+ sections, and almost all of them are for pets no one wants or owns. No one can find the cat and dog supplies amid the noise, sales are plummeting, and the owner of the store can’t afford to pay you any more.
Knowing a better web framework or a more suitable programming language would have let you code the weekly animal’s section faster. But coding the wrong thing faster is just as much a waste of time.
Even if you knew every programming language and web framework under the sun you’d still be missing a key skill.
The skill you need to learn
How could this problem have been prevented? Let’s get in our time machine and go back to the beginning. Cars drive backwards, raindrops rush up to the clouds, flowers refold, the sun flies from west to east alternating with darkness…
One Monday the owner of the store asks you to add a new section to the website, selling supplies for aardvarks. And you think for a moment, and ask: “why do you want to do that? most people don’t own aardvarks.”
With a bit more probing you find out the reason the store owners wants to add aardvarks. Perhaps the store wants to sell supplies for all animals, in which case you can code generic animal support once, instead of adding a new one per week. Perhaps this is a misguided search engine optimization strategy, in which case you can suggest adding a blog.
If you ask and figure out the reason for a task, figure out the goal… that is an immensely useful skill. You can only succeed at a project if you know its goal.
Working towards goals
If you can figure out what your boss really needs, what your client’s real problem is, you can actually solve their problem. Otherwise they’re the ones who have to solve the problem; you’re just a hired hand implementing someone else’s solution.
If you can figure out what the real goal is you can make sure you’re working towards it. You can avoid the irrelevant work, the nice-to-have work, the attractive but useless work: you can work just on what’s needed. You won’t be writing coding any faster, but you’ll ship sooner and code far more effectively.
Technologies are useful and you need to learn them, but in the end they’re just tools. Programming languages come and go, web frameworks come and go: what matters is what you choose to build with them.
Don’t learn a technology, learn more fundamental skills. Figuring out root causes and why something needs to be done, discovering the real problem, not just the stated one: these skills will serve you this year, and next year and every year after that.