Why programmers don't read books and why you should

As a non programmer, when you read the stories of all the famous nerds, the first thing you do is go on amazon and shop for programming books. Most titles are confusing, you only wish to know which book Zuckerburg was reading so you can create your own bookface as quick as possible. After much confusion, you call your programmer friend and ask for a book recommendation. Of course his response is to not get a book, all the stuff is on the Internet already.

In my first year as a programmer, the only books I read where the ones that were forced unto me in school. The Internet is so much richer for finding this kind of information.

What books provide

In a technical field like programming, you can find 2 types of books. Those that teach you how to use a tool and those that teach you about programming, the theory.

The books that teach about programming are much harder to stick too and weed out the new comers instantly. They don't just give you a code snippet and tell you to run it. They go into more details talking about the concepts and ideas. They actually quote people in these books. These books are not specific to a particular language or tool. They are not for beginners and once you finish reading them, you have a good idea of what philosophy you will apply to your software architecture. I passed a few of those in the library when I was in school. After a good 30 minutes I place them back on the shelf and forgot all about it.

The other type of book are the ones that teach you about a tool. Learning C++, JavaScript, or a Java Framework. These books are the reasons why most programmers don't read books. The same information is available online one way or another. The only thing that can make these books stand out from the million alternatives is the authors voice and style of writing. I read a few of those and the only advantage I found was that it concentrate all the information in a single place.

What the Internet provides

On the Internet you find information found in both type of books. The problem is it is decentralized. It's very hard to go through a website from beginning to end finding all the information you need. As soon as you find one term you can't understand, you google it and find the explanation on a different website, and you face the same problem again and then back to Google.

There are lots of website that teaches you a particular tool. Codeacademy, Threehouse, or lynda.com are good examples. These are very good alternative to books that teaches you how to use a specific tool. Not only you have the same information you find in books but the interactivity makes it much easier to learn. Everyone that was moved by Mayor Bloomberg is probably subscribed to one of those websites. And when you complete a course provided by any of these services, you will be able to open not your code editor and create something. Anything. You are now a programmer.

Why should you read books then?

In my second year as a programmer, I have not read a single book. At least not a physical one. I have learned so much because I was applying my knowledge directly and was googling myself out of bugs. But today, I feel that learning a new tool or learning how something done in Java is done in JavaScript does not contribute much to the effort.

I know the basic structure of many languages. I can create a for loop, a conditional statement, a class, and yes I am listing these very small feats. However these are not enough anymore. If I have a bug with any of the basics, stackoverflow is my friend. But If I want to build a large application, I need to understand more important concepts. That's where the first type of programming books come in.

I read books and online posts about JavaScript. They all taught me very important skills that took me from a noob to a decent programmer. But reading JavaScript the Good Parts by Douglas Crockford was like being introduced to the language for the first time. Yes it is about JavaScript — a specific tool — but the concepts are ones that applies beyond the language. JavaScript is a special language. Understanding its core will help you create better applications, not just in JavaScript.

I read game programming patterns, which is an online book if you can call it that, but it falls in the same category as the theoretical books. Most of the pseudo code presented in the book is in C++, but make no mistake this is not a book on how to implement these patterns in C++. The book is rich in information that will help you implement clever designs that make your large application, not just games, easier to work with. If you had to go figure on your own all the patterns found in this book, it will probably take years.

These books are not what you start with in your career as a programmer. Our education system make the mistake of teaching the very complex theories right from the beginning which make no sense. For example, if anyone told me using singletons is bad when I was just getting started, I would just accept it as the thing you should never use in an application without really understanding the why. If I was to see a singleton in someone else's code it would probably be a red flag. But after using the pattern for a few years and seen different alternatives, I can much better weight the pro and cons of a singleton. And also have a constructive argument about it.

Reading a book ust to get quick information that you can paste in your code is only going to help you in the short term. If you want to advance in your career or just increase your knowledge, don't bombard your mind with every different programming language you can learn. Instead, read a book that will teach you new programming paradigms. You will be better off in the long run.

Here is where you can get started:


There are no comments added yet.

Let's hear your thoughts

For my eyes only