
Ask HN: What strategies do you use to accelerate your learning as veteran dev? - mikemajzoub
Hi HN -<p>A new developer can pick up any decent programming book or take any decent online course and reasonably expect to be introduced to many new concepts to chew through.<p>However, as time goes by and the new developer masters the common introductory concepts, such endeavors become less efficient.<p>What strategies do you leverage to overcome this challenge? Additionally, as a veteran developer, how do you use your self-study minutes most efficiently?<p>Thanks!<p>In peace,
Mike
======
itronitron
Find good examples, re-implement examples, combine multiple examples and tweak
until things break then look for explanations and trace through source code to
figure out what is actually going on. Copy working tweaked example onto paper
with pen or pencil.

Repeat as necessary.

Similar process for new algorithms but typically less thrashing around.

When doing this for work I usually try to track down an accessible expert
earlier in the process and ask them to explain it to me as if I am a complete
novice.

------
xMAF
There are two things I do.

1- I start with coding to learn not learning to code. This approach helped me
to put my thoughts into actual code so for example I want to learn how to
request data from database I started by learning how to create a database and
the specific codes to print that request and from there you branch to
different things along the way and after that you could look for basics course
about that subject to to learn different ways and extra information.

2- I look for templates or things like that and deconstruct them and look
through the code and to try it myself then you code start to re-code this
template from start to finish by yourself.

3- I try find the source of pages I like and use inspection to learn how
things were construc toted.

------
mikemajzoub
My current strategy is to take thorough notes whenever I pick up a new
programming book.

I organize my notes by topic (i.e. "node.md", "swift.md", "git.md",
"statistics.md", "cpp.md").

If it is the 3rd book I've read on JavaScript, I'll find myself speed reading
my way through it, only slowing down when I encounter something unfamiliar.

In order for the above strategy to work, I need to make time for regularly
reviewing all of my notes via spaced-repetition strategies so that I have a
good understanding of what's in my notes and what isn't. (I use pandoc to
convert my .md files into pretty html files.)

The above is definitely time consuming, so I'm eager to hear about how others
tackle this problem.

------
boombol
A very recognizable problem! While I'm definitely still trying to figure this
out for myself, here are a few of my thoughts and experiences:

1) books usually trump courses books are much easier to browse through. pick
and choose what you need. Do make notes, or in 6-12 months it will be like you
had never read it at all. Courses seem nice in that they offer varied learning
- a lecturer, assignments, a forum for questions, a shiny certificate at the
end.. but you have little control over pacing, and there just aren't enough
solid ways to judge beforehand if the course is any good. Trudged through many
hours of bad/repetitive content before I understood this :)

2) don't memorise specifics, understand design choices if you haven't done so
already, I can really recommend looking into how languages are built - what
are the paradigms / design choices. I'll even recommend a MOOC:
[https://www.coursera.org/learn/programming-
languages](https://www.coursera.org/learn/programming-languages). A focus on
design makes it much easier, at least in my experience, to pick up a new
language and become an 'expert' at it; nobody will turn to you for help
writing a loop or grokking a few conditionals (I hope). But understanding,
let's say, prototypal inheritance in JS and how this differs from other
languages, or the effect of having (or lacking) functions as first-class
citizens, figuring out what are the language core concepts and what is just
syntactic sugar - this let's you reason about languages and problems on a
whole different level.

3) if you have the opportunity; coach/teach trying to teach stuff to a few
interested souls is a stellar way to force yourself to order your thoughts.
Pick something that's right at the edge of your audience's skill level, and
explain it in the cleanest, concisest way you can. It's a win-win, in my
experience.

4) create something the hardest part about learning a new language is not the
language specifics, but learning the ecosystem. What are the tools and
libraries you must use or avoid, what is the right dev setup, how do you
build/deploy, and in some god-forsaken cases, how do you even version control
a project? The only way to really learn this imho is to just start building a
small project.

These are only partial solutions; it still takes a lot of time and effort, and
I probably haven't come close to maximising efficiency of self-study :). Don't
forget to have fun though!

Looking forward to reading more about this.

