How do you learn?

When learning something new, how do go about it?

Do you prefer books? Videos? In-person or online courses?

Do you write notes? Do exercises?

Maybe you just ‘dive-in’ and pick things up as you go along?

What works for you and what doesn’t?

1 Like

It mostly depends on what I actually want to learn.

If it is something static that hasn’t changed nor will change over the last/for the next decade, I use books and thesis’ from my universities library, ask co-students, co-workers, profs, friends, etc. I use all the channels which are open for me.

For the more fluent things, where small bits change every couple of month, I try to stick to official online resources. Elixir and Rust are such things. But as well as with the first category, I do also try to find people that already do know what I want to learn and perhaps I find even someone mentoring me?

In general I really like solving exercises for practical stuff, while I like to actively (a bit like a philosopher) about theoretical stuff.

1 Like

I read everything i can. I am a fast and avid reader and i rarely have “too much to read”.


I prefer written materials, either books or online docs, because I can read (and skim) more quickly than watch videos or listen to podcasts. I tend to learn in 2 passes. The first is to try to get an understanding of the major concepts and formulate an opinion on which conditions are best for using some technology (and which conditions would make it a poor choice). Then I work exercises to get myself more familiar with APIs and fine grain concepts. Since I already understand the major concepts, I find it easier to remember what is possible and what keywords to search for to find those details.

OTOH, if I’m in a work situation and have to work with a language/framework/tool I’m unfamiliar with, I’ll focus on a quick overview tutorial for big picture ideas then dive-in.


I differ here in that I prefer books and online videos/courses because I can take things slower and perhaps more importantly, stop and rewind things :lol: I’m not so good when it comes to ‘live’ lectures because my concentration levels can dip :icon_redface:

I also learn by taking notes, then when I come back to wherever I had left off, I read a good chunk of my notes to ‘catch up’ - I find this extremely helpful.

I tend to hate video because they are far too slow for me. Even speeded through the player, the amount of information is too slow, i lose focus. Interesting.


I start by reading a good manual/book/reference/YouTube lecture (you got the point) and code the examples as I go along. Even the “Hello, world!” (or its FP equivalent of either factorial or Fibonacci sequence). (By the way, it’s interesting to think why FP’s “hello, world!” is factorial or some such, as “Hello, world!” is, by definition, output, and in all pure FP languages output is not straight forward. Sure you do IO.puts but you don’t know what’s behind IO actions till you’re much more versed in FP in general and the language of choice in particular).

After reading one or two manuals cover to cover I start developing tiny, close-to-trivial apps: connect to Twitter API (and do nothing, just get a 200/OK back), then post to Twitter, delete the post, so on.

Then, when I know I have a feel for the language and its tooling, though I am very much aware I don’t know anything of real value yet (e.g. libraries, generally, not just “which is better” but “which?”, period, frameworks, etc.) I start reading experienced devs’ blogs and news groups and asking thoughtful questions.
At this stage I close to do no dev work at all, the mere basics to keep my dev muscles flexed.

Then, when I have the basics covered and the theory of how to do the real cool stuff… it’s time to hit the good old Spacemacs and churn out one bug after the other… then debug the (BEEP)ers and so on so forth till I get a working module I can use at work/personal interest/etc.

Then I do it all over again for (insert_new_language_name_here). :smiley:


Pretty similar here. :slight_smile:


My step 1 is to gather and consume lots of reference books and videos. Step 2 is guided exercises like Step 3 is to do a small exercise, creating cheat-sheets as I go. The process of creating and revising the cheat-sheet really help it sink in.

I would love if it were possible to benchmark my learning speed vs the community at large. (I think it will take six months for me to go from standing start to advanced-beginner proficiency)


Very interesting topic.

In my case, I find myself going the most “deep” in understanding and learning when I have to debug something (and not overly relying on Google, Stack Overflow, etc).

I think the reason is that I have to quickly construct a mental-model of the properly-working mechanism(s) in order to have something to compare my buggy version against. Like mentioned elsewhere in this thread, you can gain working knowledge at the mechanism level via various means, such as carefully working through a manual, talking to someone else, referencing blogs, reading code, etc.

When there is money on the line, that just makes the process even more intense/focussed.


You got the perfect description of what I do. :grin:


Very good answers. I’ll add that I take examples and break them.
If manual says plug should return conn, lets return something else and see the error message.
If tutorials says I should quote something, I live it as is.
I am trying to predict to what will be the outcome and usually I am surprised.

Resources often put things in order which makes them deceptively simple and easy, so after first pass I don’t remember much. Breaking stuff forces me to think more creatively and learn the concepts better and also when I actually see the message during normal work, I know what is going on :slight_smile:


Lol, I do the same, consequently I tend to bug library authors with bug reports or feature requests that I expect to exist (poor @vic, I sent him so many of both… ^.^) .


While the young may have some advantages - the older have their own set of advantages as well, knowledge itself being one of them.

The biggest tip I could give you is on health and diet; this can have a massive impact not just on learning but cognitive ability overall.

It’s a big topic, but gluten is a known neurotransmitter blocker, grains and pulses contain anti-nutrients that interfere with the absorption of nutrients, omega 3s are known to help with concentration (fat being the primary fuel source of the brain), ‘chemical crap’ in food is linked to psychological disorders, etc. In short I would say stick to a natural speciecs-appropriate foods and incorporate foods that your brain will love. Try the paleo diet for a month and see if it makes a difference to you…


5 posts were split to a new topic: Discussion on species appropriate diets

I start by skimming the guides and diving in once I’m able to build stuff. After I play with it for a bit, I usually end up with a bunch of questions already in-mind. Next, to answer those questions and gain a more complete understanding of how to use it, I go through the official guides end-to-end, skim the documentation and the source code. I also try to read the source code of open source projects that use it to understand better how to use it idiomatically. For example, I think the Elixir standard library source code is a pretty good reference for how to write Elixir code.

1 Like