Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How do developers learn new skills quickly?
15 points by csnewb on Oct 1, 2018 | hide | past | favorite | 9 comments
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?



Quickest way is to build something with what you are learning. It's frustrating at first when you don't know much, but once you get a little success you can quickly build on it.

Books usually start from very basic and it takes long time to start writing something useful and fulfilling.


Necessity is the mother of invention.

When 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)


Tangential.

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.


Everyone learns differently so it's hard to generalise. It seems for you it could be more efficient to "learn by doing". For example start some simple project and then gradually add more advanced topics (there are many websites with ideas for such beginner projects).

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.


Internet is a huge resource. Even finding the most relevant thing is an art. You keep on getting better. Videos and tutorials might be shallow but your aim is to get the job done by learning a new skill. You only get closer to being an expert by meeting your objectives (programming and making human effort less than ever) and NOT by reading in depth nor by finding short cuts to expertise.


I think developers evolved on associative thinking in order to learn new skills faster, you can see that when you migrate to a new syntax language.


if you want to learn new language/tool, try direct building something for which language is popular. if you want to grasp existing code base fast, try copying it line by line. You don't have to finish all code. Once you cover to 30-40 % of code base, you become comfortable with it.


Someone here pointed to me about this guy[0] who was using Anki to optimize his study. And now, I was using Anki for a month and I found out that I can be more productive with it. You might want to try it by yourself too.

[0] - http://augmentingcognition.com/ltm.html


I've been using Anki for a number of years now, and I think it's a fantastic tool for retention. However, I have never had any success with learning concepts that were new or foreign to me. I use it for testing powers of 2, port numbers, and cli flags, niche python syntax. For learning "new" skills, I would say reading books and watching lectures is the best way for me.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: