Don’t be a Donkey — Learn the right way

The Inquisitive Dev
3 min readNov 2, 2020

Does this scenario sound familiar? I’m a relatively new developer and I’m not sure which language will be the best choice to invest my valuable time in. How do I learn the right way? Should I learn Java or Python and focus on backend development? Or, should I learn JavaScript first so that I can utilise one of the many front-end frameworks available? If so, which frontend framework should I use? React? Vue? Angular? Heck, with Javascript I could go full stack and build backend functionality with Node.js or… what about this new Deno runtime I hear everyone talking about now. I wonder what is the best way to build out my frontend, should I use a CSS preprocessor like Sass or Less? I’d better watch some tutorials. You get the picture.

As a software developer you can potentially to build anything you want, any way you want. The sheer number of tools, frameworks and languages available means that the only limit to what’s possible is your imagination. On the face of it this sounds like a wonderful world to live in, however this often results in analysis paralysis or the “donkey problem”. The donkey problem tells the story of a donkey that had hay on its left and water on its right. It looked from left to right to left to right but couldn’t decide whether it was thirsty or hungry. Eventually the donkey died of hunger and thirst because it just couldn’t decide.

I’d just like to point out that I love donkeys as much as the next person. I’m also not saying that you’re going to die if you don’t make the choice between React or Angular but I believe this story is very relevant to software developers.

I constantly battle with this issue. As an engineer, I regularly feel like I’m a kid in a sweet shop. I love learning new tools and there’s just so much of that good stuff available, mostly for free too! I watch tutorials, follow trends and read articles and blogs in order to try and decide what area I really want to invest my time in. In the act of doing this I actually waste a lot of valuable time developing a superficial knowledge across a wide range of areas but never really diving deep enough into one thing to really learn it well. I’d have been better off just picking one and course-correcting later if necessary.

I have now started to approach my craft in a different way, a more artisanal way. By curating a relatively small set of skills, tools and frameworks, that will service all my needs, I can dive deep enough to have a chance at mastery. I look for problems that need solving and I figure out how best to build a solution. This is the opposite of learning tools and then trying to find something to build and I have found that this really suits my style of hands on practical learning.

The latest project I am working on is a cryptocurrency trading bot. A lot of people, including me, find trading complicated and time consuming. So, I wanted to build something that people could get up and running easily and then just leave alone. This idea may not prove viable but the act of building this project has increased my Javascript and Node.js skills massively. I’ve also learnt loads about working with API’s as well as application design, development and deployment. If you’re interested you can find the source code in my GitHub repository here.

So, instead of spending too much of your precious time trying to decide what to learn, I think learning the right way involves finding a problem that needs solving or even just something that you think would be cool to build. Then figure out the best way to build it. You’ll learn so much more and actually have something to show for your efforts.

This Article was originally posted over at The Inquisitive Dev. If you’re a software developer wanting to level up your skill set, head over there now to subscribe for more great content.

Thanks for reading

--

--