Links

Data Artist

Why I don’t read books

I’ve never read a programming book. I realized this when I got sent a promo copy of the Flex 2 with Actionscript 3 book from Friends of ED. [Side note: start blogging and you get sent free shit.] I was flipping through the book and I realized, wow, I’ve never read one of these before. So it got me thinking about why that is. Clearly people learn programming stuff through books, there’s got to be a market or else they wouldn’t make the books. Am I the norm or the exception?

Timeliness
First I figured this was because this was a Flex book. I’ve been following Flex for a while now, and the newest information has always been online (like any emerging technology these days). So in a sense everything contained in this book has already been written one way or another. The newest information will never be in print, that’s just the nature of the web. If I want the newest info on Apollo I’m going to read the alpha release docs on Adobe Labs, or Mike Chambers’ blog posts, or watch the apollocoders mailing list. The Apollo books are coming, but they’ll always be a big step behind what’s available online.

But then I realized I’ve learned bunches of other stuff that wasn’t brand new. When I was first learning PHP and MySQL there were tons of great books available. But for some reason I never bought a book. Maybe I’m just too cheap (discussed below). Or maybe I’m just too lazy. My bookshelf doesn’t have any programming books (at home or at work). The only books I’ve ever partially read were for some CS classes at school, but that was more to make sure I got the info that was going to be on an exam.

The copy/paste factor and learning by doing
Whenever I’m learning anything computer-related I’m doing it as I’m learning it. That’s the only way I can learn, and I’d be surprised if you find anyone who’s all that different (when it comes to computer programming). You’re not going to learn how to program Actionscript or use Photoshop by reading a book without having one hand on the mouse the entire time. So that means you read at your computer, with the book next to you? Or you read a chapter, then go and try it out on a computer? As I was flipping through the Flex book, I saw lots of Actionscript code. There’s an entire example app that gets created in that book. Cool, but that’s pretty much useless to me without being able to run the code myself, and tweak it a bit and see the results. You’ve got to be able to copy and paste the code and run it yourself. Book publishers know this, so they include downloads or CDs with the code. But now I only need the book for the non-code pieces, which brings me to my next point.

Learning from code versus learning from written paragraphs
I’d be interested in getting other developers’ perspectives on this, but I was thinking about how I learn and whether I learn more from example code or from written text describing the code and the method of programming. If I were to rate learning through code or learning through text, each on a scale of 0-5, I’d give learning through code a 5 and learning through text a 1. If a tutorial doesn’t have code I don’t read it. I think Google code search is the best learning resource ever.

So if we look at the ratio of text to code in this book, I’d say it’s at least 50-50 text-to-code. I’d be interested in seeing the ratio of comments-to-code included in the Flex framework source files. In terms of learning Flex, the framework source is the single most valuable resource I’ve had. They commented the hell out of it, but the code is the focus. You want to learn how the ComboBox component animates the drop-down menu when it gets selected? Go and read the source of ComboBox.

On-demand learning
I don’t know what I want to learn tomorrow. I might play with some custom components I’m working on, or play with Flex mapping components, or explore how to deploy my apps as Apollo apps. Or I might not ever learn any of that stuff and I might go off on some other tangent instead. So am I going to get a book about any of that? No. Am I going to read tutorials and comprehensive guides before I start playing? No. I’m going to start a project, try to do what I want to do, and when I can’t figure it out I’m going to look up what I need to know. Which brings me to my next point.

Learning in tiny bits
Books are too long. There’s just too much information in them. I learn in tiny nuggets, and I only learn the stuff that gets me to the next step in a project. If I’m working on a project and I need to figure out how to pull in an RSS feed into a flex app then that’s exactly what I want to learn, and only that. Once I get stuck at another point then I’ll go and figure out what I need to get past that point. But I don’t want to read a book that tells me in generic terms how to use a technology. I might never use half the information in a book, so why would I waste my time learning it?

The web gives me tiny bits of info that I need. And if you’re searching for programming information on Google, you can pretty easily figure out how to search and get directly to the result you need. It’s rare that I try to look something up on Google that I can’t find the answer to (obviously it happens, at which point I post questions to mailing lists). And the number of tiny bits of information is amazing. Whether it was a question someone answered on a mailing list, or a blog post, or an example in official documentation, somewhere someone has shown you how to do almost everything you want to know. And often you can find an answer to a specific question without wading through irrelevant content. Google is like learning surgery as you’re cutting, books are like medical school.

I’m a cheapskate
And I don’t like paying for something I can get for free (wow, that statement applies to so many other things). Everything you need to learn ANY programming language is available for free online. That said, book publishers can feel free to send me free shit, I like getting stuff for free, even if I don’t really want it.

I guess it just boils down to how different people learn. I’m sure tons of people have had great experiences learning from books. I just don’t get it. I can’t figure out why I would want to buy a book and read it when I can learn everything I need to learn by going online. So I don’t know, am I the norm or the exception?

Related:

Well, not really... but it's a Flex book :) While I was getting ready to travel for the holidays I was buying a few new books for my Amazon Kindle to read on the plane. As I was browsing through the online store right on the Kindle, there in my…

Seriously now, Ted Patrick claims the beta release of Flex 3 will be "the beta of the single best release of Flex yet" and will include "'game changing' platform capabilities." And I guess Ryan Stewart has embraced his new Adobe status and is pimping the upcoming release as well. Now,…

My 360|Flex shirts and my bedazzler just arrived, so I'm now officially pimped out and ready for 360|Flex in Atlanta next month. The picture doesn't really do the shirt justice, but in real life as I move it sparkles, take that Lil John. A few pictures of the bedazzling in…

Post navigation

34 thoughts on “Why I don’t read books”

Adzsays:

I understand and agree with you. I don’t buy programming books as they date too quickly, are often only one persons opinion/technique and almost always don’t cover the problem I am having.

I only own one book, which is Essential Actionscript 2.0 from Colin Moock, and I only read it once through. Once I finished the book I threw it into my bookshelf and thought “ppff.. why would I write classes like this when I can get the same effect with a third of the code”. Obviously I didn’t get the point and continued to write in AS1. Later on I realised the benefits and I think reading the book helped, and I referred back to it a few times. Plus it has made learning AS3 *much* easier.

I think people buy books often because they think it will explain things the “right way”. Unfortunately this is not always the case. I prefer to do what you do and see how others code and adopt whatever feels right to me.

On a similar point, I’m baffled why people pay for porn when you can get it for free online! (Or so I’ve heard)

I was just thinking about this today because I’m reading the ‘Flex 2 Training from the Source’ book. I just hate reading it but it is good to see how others attack a problem. Plus, I don’t know much about Flex so I need to get started somehow.

But when I’m blocked because of an error or something I almost always go to Google and start searching. Books are almost never a help in those situations.

(shameless plug) I think the ActionScript 3.0 CookBook by Joey Lott, Keith Peters, and myself is a great addition to a book library. It’s a handy reference guide that aims to provide solutions for common programming problems. 😉

I agree with Hakon, also when starting from scratch the first few chapters can summarise the “are you sitting comfortably? then we’ll begin” part of a learning process which alot of online resources assume previous knowledge of. The other occasion, as hakon mentioned is long standing practices. GoF and Head First books on design patterns are simply must-reads for anyone who wants to take OO to the next level. You’d do well find all that information in one easily digestable place online.

Other than that, you’re right, tech books just can’t compete with some google mastery 🙂

Just an FYI… Flex 2 with Actionscript 3 should not be the first programming book you read. It’s really quite bad. Some of the things the author tells his readers are so completely wrong, it’s embarrassing.

As a flex and coldfusion beginner, I found this particular text to be very helpful (Flex and AS3). I just did the flex / cf chapter and made an app work. Hooray for me.

Now, you all have been doing this type of stuff since the beginning of flex and coldfusion, so there’s probably no way a text like this could be of much use to you. You all could / should be writing your own books by now (sounds like at least one of you did). But for me? A noob? It’s been very instructive.

Note that I also learn from examples on line, especially for things like creating flex-php contact forms, flex-php-sql login forms, flex-flash media server apps, and other very specialized things (stuff that you’d never find in a single book cuz it’s just too geeky). For stuff like that, you can’t beat the generosity of other flex folks (esp. Doug and other people who post here) for learning these kinds of things.

But sometimes it’s just nice to follow a chapter and do prescribed stuff, kind of like learning scales during piano lessons. It’s nice to just get an “a-ha” at the end of reading and typing. In sum, for what it’s worth, the text is “noob approved.” Lot’s of “a-ha’s.”

I completely agree with you. A book takes you neither here nor there. Though I used to think that I was the only aalsi (lazy) in the world, but I can be rest assured now that there are other aalsi programmers who like me want to go straight to the code.

I do agree that most of the knowledge can be found from the web. But I still buy books.

Why? Because books organise information. Information on the web are found in bits and pieces everywhere. Some skim the surface, while some are deep. Imagine I want to find a topic on cookies in Rails. I have to spend time Googling for it. I have to use my judgement to pick out the ‘right’ links. Then I have to spend time reading through all the information, filtering out the noise and seeking the signal.

If I have a book, I find the relevant chapter on from the contents page, and read on from there. Both approaches will send you to the same destination. But which is more costly? The web search on demand will save you money, but cost you time. Reading the book will save you time, but cost you money. For me, Time is in more important than money. Think. What could you have done with that time? Perhaps a new web app? Or time spent with your family? Time once gone will be lost forever. But money can always be earned.

And bear in mind, not all the information on the web is the same. A blog post from a begginner and a 20 year veteran is not the same in quality. The information from the web suffers from the lack of accountability. The bloggers dont care if their posts are correct cos the posts are free. So all the knowledge you’re sucking in from the web might be wrong. You can never be too sure. But books are different. You’re paying for it. So naturally you expect a basic quality to it. You expect it to have no errors. Even when there’re errors, the publishers usually release fixes to it.

There’s only one brand and type of technical books that I buy: O’Reilly Pocket References. The Perl Pocket Reference is the best programming language book ever written (there are other great books about the philosophy of programming, but for a language-specific book it’s the PPR). It’s very useful to instantly look up the syntax of a overloaded function, or the operator precedence table, or which flag to pass in to the command line. Given the size of a pocket reference, the information you want won’t be too scattered, and it already assumes you know how the language works, so it saves space on “This is how you write a for loop”.

It’s not a one or the other proposition. Like many scenarios where you have multiple seemingly competing options, there is strength in finding a successful hybrid approach between them, using the strengths of one to counterbalance the weaknesses of the other and vice versa.

For me, web searches are great when I’m in the zone actively coding and bump into an obstruction or hit a “theres gotta be a way, but I don’t know what it is” moment. Usually, not always, but usually I can find enough of a hint from a quick web search to get past it and keep momentum going. Web searches are also the best way to track down specific exception / error messages. The WHAT in other words.

Source code is the best for seeing something actually work and to demonstrate / learn the actual design / implementation of things. The HOW in other words.

However, good books are still better (IMO) for fundamentals and concepts, and for getting an over-arching narrative — particularly in regards to the intent and purpose of a technology and overall pros and cons. They are also useful for communicating any relevant history or “big picture”, maybe the names of the key people involved in a technology and so forth. The WHO WHEN WHERE and WHY in other words.

Often all you need is WHAT and HOW, , and the WHO WHEN WHERE is generally of only trivial interest, but books are still good delivery mechanisms for the WHY, and that’s how I filter books that I buy and read from the books that I don’t buy or read — how good of a job do they do in conveying the overarching WHY of a technology. For narrow or niche technologies where the WHY is self evident, books aren’t needed if the online resources are solid, but for broader topics a good book is a good thing.

I’d say “I agree”. And in fact I say it! 🙂
But I think it depends on the book. If it is a purely programming book (lot of code, step by step instructions) you are totally right.
If it is a bit more philosophical (e.g. think of a book/chapter on MVC in actionscript) maybe it is worth a read, especially when you are far from mouse and keyboards.
For example, in my experience, I learnt MVC by “reading without doing”.
Then, when I got in front of the keyboard, it was easy to implement anything.

I think this is a great post and something i have been thinking about for a while to. However sometimes i personally find it nice to able to learn away from the computer. specially when i have shoulder or wrist pains. and i find it quite nice to read myself to sleep lol. But yeah my point is to give yourself a break from being gllued to the screen but still have the benifit of learning is why i would still buy books

Today I found myself explaining to someone what we were referring to as ‘my philosophy of learning.’ I only had to re-bring up the topic for one reason or another and then later found myself right back in front of my computer, learning full programming languages, now, about 3 years after I was in classes about them with books and teachers and not knowing the first thing about programming.

A certain perspective is developed each time we learn something. The only way to gain perspective is by being the primary driver of the learning experience.

primary driver? …clearly i just spend way too much time in front of the computer learning more code than doing my philosophy homework.

sorry you had to be the one to have me randomly start typing on your blog reaponse field…

I am currently in the beginning stages of learning an OOP (C#) and i find the books to be a great learning tool for those people who don’t know anything yet. When you first get started you have no clue how to code anything so its a great asset to walk through these books. In fact i picked up your book. Flex for Dummies. My first dummies book and i gotta say it really helped me out with the basics inside of flex. So yeah I learn from books.