
Ask HN: How do developers learn new skills quickly? - csnewb
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?
======
phakding
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.

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

------
vinayms
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.

------
hn17
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.

------
kumartanmay
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.

------
eddwinpaz
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.

------
tebura
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.

------
e19293001
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](http://augmentingcognition.com/ltm.html)

~~~
banterfoil
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.

