Ask HN: How do developers learn new skills quickly?
My favorite method of learning a new programming language, framework, tool, etc. in depth is by reading books and working through exercises. However reading books is extremely time consuming and maybe not the most efficient way to learn. Sometimes books are so long I never even end up finishing them, and thus not learning much. Reading documentation, tutorials, and watching YouTube videos on the subject ramps you up quickly on the basics, but these things are usually shallow in content and explanation. Is there a more optimal way to learn new technical topics in a way that is fast AND gives you a reasonable amount of deep knowledge? How do other developers learn when they need to learn quickly and get things done?
9 comments
[ 1.5 ms ] story [ 285 ms ] threadWhen you're stuck on a tough problem with a tight deadline you can learn pretty quickly. Though it's a tightwalk, especially if you don't have a lot of help from others, since you might really get stuck or so out of your depth that you miss obvious solutions sitting right in front of you.
Still there's nothing quite like a good project to focus the mind and the lessons you learn that way tend to stick. I find this is especially true when working with source code. You will accidentally learn a codebase from constantly having to refer back to it.
I also find trying to teach things to others is a good way to learn. If you like to write, try putting together a few paragraphs or some slides to explain a concept. It will stick with you a lot better after going through the effort. (and it's real effort... it takes hours to produce a seemingly miniscule amount of content when building tutorials)
This assumes of course that the chief problem is not so much content as it is holding onto it for more than a day and achieving real depth with it.
Videos aren't ideal in this respect. They can introduce a concept and point you in the right direction, but you really need to get your hands dirty to understand it.
Maybe try your hand at fixing a bug in an open source codebase you want to learn. (or even just reviewing a pull request and trying to understand it)
Books usually start from very basic and it takes long time to start writing something useful and fulfilling.
[0] - http://augmentingcognition.com/ltm.html
From what I have seen happen around me, the "new skill" isn't really as new as it seems; it is just tweaking and reapplying the already present skill.
To use human languages as an example, a monolingual English speaker learning Italian, or even the seemingly esoteric Urdu, is not as hard as it seems for all these are of the same (broader) family sharing many similar features, and the skill is transferable easily. However, learning something like Chinese or Arabic and being good at it is hard and only people who have no other choice engage in the activity, and may be stand to benefit more in terms of ROI.
In that sense, I would be interested to know how a C++ guy learnt and became skillful in Haskell or Erlang, more than learning Java or Python and churning out code with them.
Or to use a non CS example, its more interesting to know how a medical student learnt fluid mechanics in order to understand the human body better than to know how a mechanical engineer became a theoretical physicist.
If stuck try to find answer by yourself googling, read documentation/books or seek for help from community. I think it's more efficient and entertaining than reading whole books chapter by chapter before starting using knowledge.
If you must learn something quickly I would probably search advice from a person who already knows what is important to learn first or search if someone resolved similar problem.
That way you will learn just needed subset for a beginning to resolve a problem and then you can learn more.