One of my pet peeves lately is software developers who believe that simply reading a book makes them an expert at some aspect of delivering working applications. You know the type of person that has just finished Agile Web Development with Rails is now selling themselves as a “Rails expert”. They aren’t. Let’s take a look at what you really have to do to “know” anything.

There is no way that our profession will be taken seriously when we have a segment of the people claiming they are the next David Heinemeier Hansson because they just got done with a book. These same people get on a project that has very real costs and deadlines and simply choke. They have a good idea of the big picture or are restricted to what the examples in the book show and that’s the extent of what they know. You can identify these people because they sound like they know what they’re talking about when sitting in front of management or kicking around concepts at lunch but somehow can’t perform the most basic of actions without either asking for help or taking an incredible amount of time to do it. Want a quick way to see if someone really knows anything about a subject? Ask them the “why wouldn’t you…” type questions about a subject. Most books cover the “why you need to do…” but don’t cover when you should break away from the recipe given in the book.

I often tell people that they (“they” is me too) don’t really know anything until they’ve had to work around the “asshole” of X. X can be a language, framework, library, application, etc. etc. “Asshole” is the nasty, ugly parts of X. Like real assholes no one wants to admit they have one but we all know that we all do. For example, you don’t know anything about Hibernate until you’ve had the “pleasure” of trying to map some seriously jacked up natural keys in a legacy schema. You can read all the Hibernate related books that you want but you are still a joke until you’ve worked around Hibernate’s ugly nasty parts.

In the interest of full disclosure I will admit that I read 2 to 3 development-related books a month. But unlike those people I’m ranting against here I see the information I get from a book as just a single starting point to help frame actual honest learning that will happen after I’m done with the book. For example, I have read 3 different books on Perl but do I know Perl? NO! I’m familiar with some of the concepts in the language and could probably understand a large amount of Perl scripts if I were to read them. Does Perl appear on my resume? No. Would I attempt to lead a Perl-based project? No. Why? Because I am still a Perl noob that only has a high level, weak understanding of the language. I haven’t seen Perl’s ugly bits.

So why do you read a book?

8 Comments

  1. raveman says:

    plus many times if you read one book on any subject its like you read them all. I maybe read like 5 really good books, most of them are uber crap. i really lost faith in books when i saw so many books on ajax and some of them were not very short. its like reading book on how to parse string (no1 has written it yet, i think its a great idea for a book, indexOf is more complicated than ajax).

    however many times its very hard to get a reason to do some hardcore stuff in any technology and to do it just to get experiance its not something i willing to do.

  2. vgndeveloper says:

    Reading a book doesn’t make you an expert, but it helps a lot to introduce you in a topic. A decent technical book would provide a learning framework and good coverage on the topic it discusses. I recommend you read this post:
    http://www.buunguyen.net/blog/when-you-learn-new-things-learn-from-books.html

  3. Chris says:

    @vngdeveloper:

    I totally agree and I think we’re saying the same thing. I’m just weary of the “instant expert” syndrome that I keep seeing in certain people.

    I read your linked blog posting and it was dead on. I am also amazed at the number of developers that don’t take time to keep up even at a basic level. I have met a few developers that seem almost proud of claiming they haven’t read any development related since they left college, high school, etc. etc.

    Here at my current place of employment we actually have written screening questions (just two) with the first one being “Name 4 people or books that have greatly influenced you as a software developer?” We’ve avoided a ton of possibly painful interviews simply by seeing people’s answer to those two questions. Seriously, we’ve had people with 5+ years of experience who list “Teach Yourself Java Programming in 21 Days” as one of the books that “greatly influenced” them.

  4. Federico says:

    “An expert is someone who has made all possible mistakes in a very narrow field”. This quote by Niels Bohr is one of my favorite. Obviously one book is not enough to make you an expert of anything, nor would hundreds of books. Reading, of course, is an important fraction of the learning process but can never supersede experience, especially in our trade. I usually read tech books when I need an introduction to some subject I am interested in or when I need a reference but for the most cases, I find more profitable to try by myself and put the “theory” to test.

  5. Nick says:

    I would list two types of “experts” lower than those who gained their expertise entirely from reading a book, both of which I would guess are more common.
    1) Those who think they are experts because they completed some online tutorial.
    and 2) Those who think they are experts despite never reading anything at all. I don’t care if you were to teach yourself the technology while working on a project (with the rare exceptions when you are taking up the technology so early there isn’t anything written on it). First, how do you know you learned it correctly? Our industry is full of examples of people who have learned some bad practice while teaching themselves something. And second, why on Earth would you try? The reason our culture advanced as far as we did was because of the written word; we have been able to easily pass our knowledge on to others so they don’t have to relearn everything each time. We can build on each other’s knowledge. If you didn’t take advantage of that, then you must have been either too lazy or too foolish. Either way, I’m not exactly impressed.

  6. Federico says:

    @Nick:
    “The reason our culture advanced as far as we did was because of the written word; we have been able to easily pass our knowledge on to others so they don’t have to relearn everything each time.”
    Of course, I agree with you. I’m not underrating the importance of books to acquire knowledge. What I meant was that, at least in my experience of developer, apart from a few fundamental books, you need to extensively try a technology on the field to become an expert of it.

  7. Drux says:

    I agree very very much with the main article. I’ve had a person on my team who said in conversation “Well, if you do that in your DB, aren’t you breaking normalization rules?”

    Hmmm…. I’m not sure, what rule do you think I’m breaking? 3NF? 4NF?

    “Well, I’m not really sure, I just thought is was a good question to ask. Breaking normalization is ‘A Bad Thing’ ™”

    However I will say, I haven’t been in a position to pick up a technical book in at least 5 years, probably more. Outside of school, I don’t think I’ve ever read one cover to cover. Maybe one Anti-Patterns book, but only because it was just funny to say “Yup, I’ve seen that one…”

    I do go to technical books when I am trying to solve a particular problem. However I spend so much time scrambling to fix stuff other people have written that I really don’t have time to simply read a technical book just for the purposes of reading it.

    So, if you could recommend only 1 technical book I get through this year, which one would it be?

  8. Chris says:

    @Drux:

    I hope it didn’t come across that I think that people that do not read (by choice or time constraints) tech books aren’t as skilled as those who do. That wasn’t my intent at all.

    “So, if you could recommend only 1 technical book I get through this year, which one would it be?”

    That’s a tough question to answer since there are so many factors…but it would make an excellent blog entry. :) Stay tuned….

Leave a Reply