You’ve probably been using books since the first years at the school. You got used to learning from them. It doesn’t matter what you want to learn – physics, cooking, sports, photography – you always take a book. It’s the same with learning how to write code. You can find many programming books in your favorite bookstore and you probably spend tens of hours on selecting the right one.
Are books the best source of programming knowledge? In this article, you will learn that there is no straightforward answer to this question.
The “Home Coding School” is a series of posts about learning to code on your own. I’m describing how to use different sources to learn as much as possible. I’m also describing my techniques and approaches. Let’s start with the source that you have been using for years – books.
There is no better-polished source of knowledge than books. Publishing a book consumes a lot of effort, time, and money. There are teams of people who work on the publication that is going to be released. The content is always well structured, and there are no gaps in the material. The book is edited by professionals, so it is easy to read.
Unfortunately, there is one big problem with the content of almost all the technical books: it gets outdated extremely fast. Developers release new versions of languages and frameworks frequently, so often when the book is ready to be published, it is also out-of-date.
What I also found very irritating is that a big chunk of material is repeated in many books. Sometimes even books for advanced programmers include content for beginners. This is frustrating. When you buy a new book, you know that up to 50% of its content is about topics you already know.
Programming books are widely available. Your local bookstore probably has at least one big shelf full of them, and you can find thousands of them on Amazon or any other online store.
Unfortunately, the increasing popularity of programming books doesn’t make them cheap. These titles are expensive…and I think that this is fair. You get a lot of knowledge from the industry’s top players so you can learn the best practices and the most essential things. These books let you quickly develop the skills essential for making money by coding.
The good news is that you can share books with your friends. You can buy different books and then swap them. My friends and I used to exchange ours. It was a nicely-working solution and it gave us access to a broader range of materials.
Since programming is getting popular amongst non-IT people, libraries are being filled with technical publications. It is unlikely that you will find the latest releases, but some books don’t need to be updated after they are published.
Books are handy. An obvious thing but still significant. You can have one in your backpack, so you don’t need any device (e-book reader, smartphone, laptop) or source of power.
You can have bookmarks and leaf through the book quickly. This allows you to find the information immediately. You can make notes, mark essential things with a pen or sticker. I find it crucial because I have a photographic memory. I remember what things look like. When I was at school, I remembered where the information was in the book. Some time ago, I realized that this doesn’t work if I mark quotes on my Kindle. The screen is changing too fast to let my brain remember what it looks like. I also don’t knowif I found the information at the beginning or the end. Moreover, the screen is black and white, so everything looks the same. If I want to learn effectively, ebooks are not the best way to go.
One more thing that annoys me when reading (e)books on my computer: Sometimes I don’t have the second screen. I have to either split the screen or switch between windows. The former is not so comfortable (when you write in Java where only the blank lines are short), the latter destroys your concentration.
The last thing. Do you realize that you have more respect for books than for ebooks or newspapers? This is probably caused by the way you are taught in school. This implies many things, but there are two that I found valuable.
Comparing to digital sources, you always know where your books are. You see them every day when walking through the room or going to make a coffee in the kitchen. Do you know where all your ebooks are? On which drive or cloud? Maybe on an external drive? With books you don’t have such problems, do you?
Still comparing to digital sources. Do you remember the name of the article that introduced you a given concept? Do you know the name of a podcast episode in which the host discussed a topic that interested you at that moment? Probably not.
What if I ask you about a topic from a book? Do you remember the title of the book about X? “Well, maybe I dont, but I know where I should look for it”, you would answer. This saves a lot of time.
My Learning Technique
When I learn a new topic from a book, then I use a two-step technique that seems to be very effective.
In the beginning, I read a book and try to analyze all provided examples. I rewrite them and run in the IDE. The rewriting part is very important. I get used to patterns, words, and language semantics. I mark exciting or complicated parts. When I finish the book, I know the key capabilities of the given technology.
The next step is to create a Github repository and start developing an application using the knowledge from the book. I can read ten books but none of them will give me as much as one small project written in that technology. During this step, I spot many problems that were not described in the book. In such a case, StackOverflow helps a lot.
It is important to perform both steps one after another when everything is pretty fresh. After completing them, I have the basic knowledge of a new technology
I have discussed books from many perspectives – content, availability, and usability.
Answering the question of whether books are a good source of knowledge about programming is not easy. They have well-prepared content but get outdated very fast. They are handy, but you have to carry them when traveling.
What is my approach? I buy books on topics that I want to learn from scratch. There are many internet sources, but I know that the book will contain everything I need. I don’t like wasting time on seeking appropriate online sources that are often distributed among many places.
I used to buy books about every technology I wanted to learn. Now I buy books about concepts – Clean Code, TDD, DDD, Microservices, and so on. I no longer purchase books about Spring, Java or PHP. I don’t think it makes sense to spend money on something that will be outdated in two months.
If I want a book to read on tram or train, I will go for an ebook. If I’m going to read at home or delve into a more serious topic, I will definitely choose a paper book.
I hope this post helps you. It would be great to hear what you think about learning to code from books – leave your thoughts in a comment. It will be helpful for other readers
In the next articles, I’ll discuss podcasts, videos, and online courses. I hope that the whole series will give you many tips on how to learn effectively and gain technical knowledge without spending too much time and energy.
Edited by: Anna