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 were 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.
Theory/Concept books
The books that teach about programming are hard to stick to. They are the barrier that weeds out the new comers. They don't just give you a snippet of code and tell you to run it. Instead, they go into details, describing concepts and ideas. You often see quotes from famous programmers 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.
Practical books
The other type of books 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 information inside these books is already available online one way or another. The only thing that make these books stand out from the million alternatives is the authors voice and style of writing. I read a few and their main advantage, compared to the internet, is that they house disperse information all in a one place.
I call them practical, not because they are better, but because you can test their content on a computer immediately.
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 another new term problem and it is back to Google again.
There are websites that can teach how to use 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 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 those Theory/Concept/Philosophy books become handy.
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 re-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 just 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 as many 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:
- Game Programming Patterns by Bob Nystrom
- Code Complete 2 by Steven C. McConnell
Comments
There are no comments added yet.
Let's hear your thoughts