Mine has changed…
When I was learning Ruby (my first programming language) I made hand written notes of all the books I read as I was reading them - and then I would go over my notes before each reading session. I found this really worked well for me because this ‘repeats and reinforces’ things as well as keeps stuff fresh in your mind (even when you have to take breaks). The downside is it takes quite a bit more time (I think it took me about 6 to 8 months to learn Ruby - but still, even that is pretty awesome when you think about what you know at the end of it). Part of the reason I did this was because I wasn’t just new to Ruby, I was new to testing, to MVC, to web frameworks etc and so there was less crossover in the books I was reading - each book was either more advanced than the last or a slightly different topic.
I started doing the same with Elixir, but realised I didn’t need to - because we have so many fantastic Elixir books and quite a few go over the same material. This is awesome - because it meant I didn’t need to write notes anymore
To make further use of this, I’ve been reading books concurrently - so the language bits of book 1 first, then the same in book 2 - this not only helps ‘repeat and reinforce’ what we read, but it also gives you two different perspectives on the same topic, which is extremely helpful. See my two reviews here for more info on how I’ve been doing this:
I also do not follow along the examples in these books because at this stage all I am interested in getting an overview of what’s possible - I can pick up the details and ‘muscle memory’ when I start building stuff… but the important thing is knowing enough about a language so you know what you can do with it.
I definitely recommend this approach it may seem more time-consuming than say reading the docs/guides and getting stuck in, but I genuinely believe it will help you become more proficient more easily and in less time overall.