Good question and it’s very tricky to give an absolute answer, because we are all different (at least one of 16 types |> MBTI ).
So learning shell scripting in the past I adopted the single book procedural method of learning and it failed. Here is what worked for me to the surprise of many:
- Skimming books learning the basics, have a broad idea of how things work.
- Giving special attention to the parts of the content that our mind actively seeks answers for and try not to spend a lot of time on the info that bores our brains. Historically procedural learning has always bored my brain and turned me off. My personal belief/theory that our brains can process much more information than the pace we were taught to learn at school. So by all means, give your brain the knowledge it seeks, at the pace that it is capable of, and try to have fun in the process. Finland has one of the best educational foundations. What are they teaching kids at school? Mainly to play.
- Code yourself and try your own stuff. Start with extremely simple applications and advance more as you get better.
- Mark on the things you don’t understand, but don’t get stuck on them. You will get it later, or you can ask about them if you really can’t find answers in documentation.
- The super learning method for me, is to seek info I need during coding. So every time I need something I search and find it, then apply it. For one thing you cannot learn all libraries, obviously.
I will give just an example. Programming in Elixir by Dave Thomas, started out very nicely. But then suddenly the programming concepts were so advanced and too details for my current need. Sometimes authors will just give you too much info, just to avoid the response (why didn’t you tell me that there is a shorter syntax?). So in this case, I believe it wasn’t fair to know about all the syntax abbreviations when I am still not able to differentiate between a list ,tuple and a map. When I remove the curly braces, as a beginner it becomes hard to know what it was in the first place a tuple or a map.
That said, I am not blaming any authors, they are all doing their best to transfer the knowledge. But you have to choose your own pace of learning and your style and in my personal opinion, procedural learning sucks. I am not saying to ditch books after skimming. What I do is mark what kind of content I grasped from the material and which one I left for later.
In Programming to Elixir, I left the projects part (after page 250) for a later time. I wanted to grasp the basics of Elixir from other sources as well. At the same time, I went a bit to Phoenix webframework learning in parallel to keep myself excited and learning all the time.
The most important thing is to learn in a way that does not bore your brain and have fun. If you can achieve that you will learn very fast. To most people it will seem like a random chaotic way of learning, but remember our brain is not binary, it’s a quantum computer. It likes parallel processing and does not like slow pace. In some Udemy courses I l notice that I learn much faster when I speed up the play speed to 1.25x (or even 1.5x). I believe Udemy guides authors to speak so slow, which is great if my grandma was learning programming. But that really gets me bored many times. If you have the videos offline on your computer, you can try the Pot Player to speed up tutorial videos without sounding funny.
In my opinion, read a book with a purpose then it doesnt matter how many sources you get to in parallel. For example, you start book1 to get the basics, once you get the basics from it you can start other books for basics. Then after you finish all the basics go into more advanced sections in all books. Then start building apps. If it helps you, you can organize your learning with a few methods as follows:
- Bookmark all source of info in a Top Priority folder on your browser. Do the same on your operating system put a folder named Elixir/Phoenix and put all material inside it.
- Then organize your bookmarks/files according to what you finished reading and what is not.
- You can use trello.com or kanbanflow.com to make a grand plan and some deadlines on when you intend to finish.
- Have fun, and have breaks. In your breaks you can learn complimentary material like PostgreSQL or how to setup ubuntu server etc.
So long as youre having fun, you will learn more and have more patience. That’s what matters.