I've read one or two programming books in my day. Around 20 I would estimate, both in college and after. And I can't remember what's in most of them at this stage in my career. Thousands upon thousands of pages of syntax rules and conditional logic, etc. All with one intent. To teach someone how to program in a language by the time you get to page 900. So the question is, is it possible to do so? As a long time bibliophile, I will try to be gentle on this one. No promises.
Indeed I love books and reading. Go reading. But there are a few things that textbooks won't teach you and that they can't teach you, and you won't realize that until page 650 of your "Learning to C++" book. I know because I read that book 10 times. That's 6500 pages. And I thought I was learning. And for a while I felt pretty amazing.
I thought I was learning
In my semester of college as I began this programming journey, I would read all the time. I'd read between classes, during classes, after classes, etc. I read one particular programming book mainly and it was my introductory C++ book that the university makes everyone purchase. I'll say this, it was well written and it didn't make me hate programming, so for that I applaud you book. That book is long gone in what could only be described as a watery graveyard of pages.
I read that book roughly about 7-8 times from cover to cover in my first year of college. It was like a movie in that each time I read it, I picked up on a few subtle elements that I had not noticed before. As someone brand new to this whole programming thing, and who thought that he could interchange if else with a while, it was pretty invaluable information. But was I learning how to program, is the question.
As a beginner
As someone brand new to this world, you will learn "about" programming for sure. And that's an important distinction that needs to be made. You won't be building me my next login system or e-commerce solution. But you'll begin to understand what programming is. Essentially a recipe written in a specific language that will run through several processes (of which we don't need to know just yet), a magic oven if you will, and out will come out our intent. Something that we can serve to people, or ourselves indulge in.
in goes recipe, out comes solution
So once again. Learning about programming, is not the same as learning how to program. But it's an important step. Some would say the most important, because if you can't grasp the idea of syntax -> logic -> solution, you won't understand how to solve a problem later on. And thus, never have to worry about the programming part as you'll never get there.
So if you're brand spanking new to any line of code, like we all were at one point or another with anything, books are your friend. But don't think that you're learning how to program. The people who built the first spacecraft didn't learn how to do it from a book. They learned about space, alloys, electronics from books, but they didn't built something with those words.
Once you know what programming is, then it's time to put the book down and get to work. Create a blank page. Put your name on it. Draw a box. Drag a box (easier said than done). This is how we learn how to program. And the same goes for an experienced programmer learning a new language. Create a blank project, add your name, etc.
When I stopped buying books
There came a point in my career, where programming became somewhat easy. Largely in part thanks to the interwebs. And to the thousands of pages of free knowledge roaming it. But I think that's a step that everyone gets to eventually after so many years. A mechanic with years under his belt doesn't need to read about every single kind of engine. He knows the moving parts like the back of his hand, and he knows how an engine works, so he can work his way backwards and figure it out.
I stopped buying books, when I realized that I either already knew what was in them, or when I started to realize that I didn't need the information I was reading. In the end, it was a gut check kind of thing. Sometimes, you just know.
Teaching books don't age well
The biggest problem is that books are not dynamic. For now. One day they will change with the times and entertain us with stories based on our current mood. But for now, a book about EcmaScript 2.0, is still just a book about EcmaScript 2.0. It might make for a good look back in time, but not much else. And at the rate that we're currently releasing new languages and frameworks, I'd say you have a good 6 months before you need to buy the next version.
And by then you will have forgotten everything that you read, and you'll have to start over. And again that's the nature of the book. It's great for a quick reference or for an inside look into someone's mind. But for teaching it's a different story. Because nothing outweighs experience. You can read hundreds of books on survival, but once you're out in the elements with a flint and a dull knife, things start to get real.
The web does though
Pretty much every resource that you will need to have to learn how to program, or to learn a new programming language, can be found online and for free. Every language comes with its own documentation. It needs to, otherwise no one would be able to use said language. But the problem is that picking up a "new" programming language is hard. Even for a more experienced programmer. It's a new syntax, new keywords, new operations and your muscle memory isn't there yet. Your fingers won't automatically know what to type. And that my friends, takes time to build up.
So it's not just the reading part, but the doing part that's important. Both working in this synchronous clock, where you code a few lines, get stuck, look at the documentation, get unstuck, repeat until completion.
Save your money
And buy other books instead. Buy this one here, which is a fun read:
Or buy this one.
Both from awesome programmers, in which they don't try to teach you anything, but in the end you will definitely come out learning something.
Good web resources
A few helpful links if you're looking to pick up a new programming skill. These are probably the only sites that I use daily when working on my projects. And sometimes, they make for a fun read.
Walter Guevara is a software engineer, startup founder and currently teaches programming for a coding bootcamp. He is currently building things that don't yet exist.