Sunday, August 31, 2008

The Programming Elite, Programmers Who Read

About half an hour into the StackOverflow podcast, I started wondering whether I should stop listening to all the navel gazing about the soon to be launched Stack Overflow. Then it got a little more interesting when the discussion veered to the kind of readers/listeners that the site might get after the launch. Joel Spolsky makes an interesting comment (around 29:17):
"The audience of people that read Coding Horror and the audience of people that read Joel on Software are already fairly elite in the programmers, because they are the kind of people who read things in order to better themselves as programmers. And that's already, you know, 5-10% of practising programmers. It's not the vast masses of Java monkeys who were formerly VB monkeys who were formerly COBOL monkeys who are just doing, you know, large swathes of extremely boring stuff internally somewhere. Ahh, Who have I not offended ?"
Joel also adds a little later, "Don't bother writing in, I will just commit suicide."

Seriously though, Joel's comment struck a chord with me. The programmers who read online, especially technical stuff unrelated to their work are a minority. The ones who read books are an even smaller group. Tom DeMarco and Timothy Lister's classic "Peopleware" has the following to say about reading habits of programmers
"The statistics about reading are particularly discouraging: The average software developer, for example, doesn't own a single book on the subject of his or her work, and hasn't ever read one. That fact is horrifying for anyone concerned about the quality of work is the field; for folks like us who write books, it's positively tragic."
- From Peopleware, Productive Projects and Teams by Tom De Marco and Timothy Lister (2nd Ed, page 12)

47 comments:

Brent said...

Wow. I switched from Java to Ruby development in the past year and have since bought/read 8 to 10 books on Ruby. I constantly question my abilities, but reading this makes me feel a little better about what I'm doing.

Rams said...

Brent:
8-10 books does sound a little on the higher side :-D

Rams said...

I meant 'a little on the higher side for learning one programming language'

Anonymous said...

imo most programming language books are quite useless: you don't need a book for that

on the other hand, there's loads of other topics that are important to read about.

Norman said...

I find this hard to believe. I have at least 20 friends who also program and they all read online and own programming books.

I'd like to know where Joel gets his statistics.

Anonymous said...

I stopped buying large quantities books years ago. I found stuff on this place I like to call "The Internets".

Most people who have libraries of books, I find, only have them to have them.

Paul Keeble said...

The same is also true of those that follow the blogs in and around programming. It is a smallish group and most of the programmers I have worked with don't read any of it. In that way we should also change our language - the average programmer will never be reading your blog entries!

The stats seem about right based on the 400+ programmers I have met it in the last decade or so.

Anonymous said...

I have too many books to store. My wife has literally thrown them out. I've been a programmer for about 10 years now. I've gone through 10 times as many books in those years.

Unknown said...

sick of all this gay joel and jeff fanboy shit. i just read peopleware, and it was pretty boring

Anonymous said...

>The average software developer, for example, doesn't own a single book on the subject of his or her work, and hasn't ever read one.

Is this statistic supported in the book? Sounds like one of those "easy to say, hard to support" type pieces of tripe.

Anonymous said...

When it comes down to it, the fact that you bought books on a LANGUAGE means you are inadequate as a developer...


You should be buying books related to THEORY, and DESIGN, but never about a LANGUAGE.. we're past 1970, use the fuckin internet!

Wanna learn PHP? php.net
wanna learn Flex? livedocs.adobe.com/flex/3

Wanna learn any other possible language? www.google.com

Reading (regardless of source) is important though for any education, related to programming or not.

In essence (and i'm not arguing as I completely agree) he basically said that 90-95% of "developers" are dumbasses for now knowing jack squat about what they're doing.

I have a saying: "If you know how to type, there's a 99% chance that you believe you can program too"...
I see it day in, and day out...

Here's to reading!!!!!

Anonymous said...

I have many leather bound books and my apartment smells of rich mahogany.

Anonymous said...

Joel is pretty much a complete moron with a warped view on things. It's hard to read his drivel not because I don't read, but because what he says comes off as so wrong most of the time.

Antti Tuppurainen said...

> Wanna learn any other possible language? www.google.com

Incorrect. I wish this was true but it's not. Experience helping people out with their efforts to learn C++ on various IRC channels has shown that internet tutorials on the subject are without exception entirely full of mistakes, poor practices and terrible advice. None of them come anywhere even close to a certain selection of books in their capacity to teach people to do things right. There are of course numerous terrible books, but there are also numerous great ones, which can't be said of internet tutorials.

This is especially apparent in a huge convoluted language like C++, but overall after years of correcting code from people learning from internet tutorials, I've come to the conclusion that internet tutorials almost uniformly suck.

Here's how it goes: A person reads an internet tutorial to learn something, thinks he's mostly got it but hasn't really, and then thinks to himself that this tutorial was really hard to understand (and he didn't really, but he doesn't go that far in his little thought experiment) so he decides to write another tutorial. You know, for all those poor people who aren't (unlike him) quite smart enough to follow this hard tutorial!

Crucial information is lost or mangled, and the result is that you simply can't trust anything you read on the internet. The result is that I don't, and instead I find out what books veterans and people intimately involved in a language (such as its designer, prominent patch-writers, leaders of communities etc) recommend for books and read those.

Anonymous said...

If you haven't read at least Knuth's The Art of Computer Programming then you're not a programmer, you're just a bit shuffler, a glorified card clerk. I've read them and I work as a tech writer and let me tell you, the sheer quantity of knowledge-limited, cut'n'paste programmers out there just saddens me. For added credit, digest Weiner's Cybernetics and Shannon's Communication and you are up to speed on the late 20th century technology and ready to begin on the 21st.

Anonymous said...

It's far more likely that Joel has no idea; he just wants the people who listen to him think they're smart because they listen to him.

Anonymous said...

If a programmer is spending more time blogging than programming, then I'll assume they don't really do much programming. This is directed to Coding Horror which is a blog full of inane garbage. These "elite" programmers that anxiously await Coding Horror's insights are a sad bunch indeed.

Anonymous said...

What? Programmers who read? Is there such an animal?

Jiff
www.anonymize.us.tc

Tim O'Brien said...

Fallacy: Composition. I understand where you are going, but I also don't see any correlation in my own experience. Programmers who "read" have been exposed to more industry knowledge, but you assume that authors have some sort of special capital to distribute: some "knowledge" to distribute. Having written and read many books myself, I'd say that experience, communication, and objectivity are the hypothetical markers.

But, take note of the word hypothetical, I don't believe that contrary to the statements of a published author with a high interest in selling books, that one can make any sort of scientific statement. "If you read a book, you will be more likely to be an elite programmer."

Often, it is the outliers that upset this kind of model. Kunz' theory of correspondence would tell me that people who read more tend to be people who are more fluent in the ideas and concepts of a single subculture in a industry rife with religion.

In other words, interesting, but I'm not convinced.

Anonymous said...

This isn't about books or self improvement. This is about harvesting an audience by feeding egos and confirming prejudices. This is about making all the people that follow Joel feel special.

Take a look at Joels history with a critical eye, and you'll see a long stream of bad product ideas, poor technology choice and failed predictions, but a sublime ability for self promotion of which this is another example. Joel is a triumph of show over substance.

Tim O'Brien said...

@anonymous, right above this response.

I'd steer clear of direct criticism of Joel's ideas, saying that he's had "a number of bad ideas" is ad hominem. He certainly has a valuable voice to add to the conversation, but I wouldn't agree with everything he has ever said. Specific examples have to do with languages and his theory of exceptions.

Yet, I do think that people need to back down from religious pronoucements about programming in general. He's a master of self-promotion, but to fault him for that is also to play accomplice to his influence. Example, hatred toward Scoble, toward Gates, toward Cuban are almost as valuable as devotion to the ideas they express.

And, that's really my point. Reading a large number of programming books does not necessarily correlate to being a good programmer. There is something above and beyond the practice of reading a book that involves critical thought, analysis, some challenge. Whenever I walk into an office full of O'Reilly books meticulous uncrack and arranged for all to see, I have a negative reaction.

(Disclosure: I write books for O'Reilly.)

What I more interested in is not the number of books you've read, but the ideas which you've found inaccurate. We judge scientists not necessarily by the amount of knowledge they know, but by the interesting inconsistencies they've uncovered and the questions they ask.

What Joel is really saying here is that people who read more of his books tend to be elite in his opinion. This isn't surprise, and it also doesn't merit criticism at all. He believes strongly in his books, likely in a way I don't. Every time I finish a book, I'm depressed about what I got wrong, what isn't in the book.

I've sworn off writing printed technical books for the next few years because I'm uncomfortable with the "cult of personality" that authors tend to cultivate. Part of my job at O'Reilly is to interview our authors, and the one thing I hope to do is challenge them.

The industry will be better off when we see read as a collaborate, two-way event with a community not a one-way transfer of knowledge from an "innovator".

Anonymous said...

@anonymous tech writer:

I know about a dozen people that "read" The Art of Computer Programming. The problem, errr, is.. do you actually understand it?

Hell, some people have even read the "dragon book".

Unless you really use "math like that" on a regular basis, it's going to be the finest "real-sci-fi" you have ever read. Some can even understand, but can't connect the dots.

Anonymous said...

@modesty: try to comprehend that peopleware is not a coloring book and thus was not intended for you.

Anonymous said...

>> This isn't about books or self improvement. This is about harvesting an audience by feeding egos and confirming prejudices. This is about making all the people that follow Joel feel special.

Blogs and discussion forums are definitely a personality cult and mutual admiration society and JoS epitomizes the attitude. There are about 10 people on JoS forums that everyone spooges over with regularity (it would be impolite to name names) and those people just eat up the attention. Nobody solving real world problems gives a crap.

The majority of time I've spent on JoS and similar boards has been wasted minutes of my life.

Unknown said...

I have about 2 programming books for every language I know... one geared towards reference and the other one to overall use, features and methodologies... I find that they are always useful. I have never read a pure programming book cover to cover, but have finished several chapters... now books about cryptology those I can read cover to cover.

Anonymous said...

I have a hard time believing that wasting lots of time reading blogs and articles and papers on programming makes me a better programmer. The only real contribution it makes to programming is giving me time to think about how I should be programming (the right way) instead of reading blogs.

Comeon, surely I'm not the only above-average (not elite) programmer who actually feels somewhat guilty about wasting so much time reading all the drivel out there?

If said...

er, i have known several programmers who never read and think themselves happily capable and they sort of half are until some minor (or major) shift happens and suddenly they're totally hosed. instead of continuing up the technical track, they find themselves bumped down from senior positions to junior ones. even tho they might retain the same titles, their upward movement dies, or they make a few classic blunders of the new world that get them fired.

it's especially bad for the folks who don't have the people skills or ambition (responsibility, stress tolerance) for management roles.

of course, there are other fun jobs out there.

i agree with the sentiment that reading won't turn you into an amazing programmer, but it can certainly help you continue to be a marketable one.

Anonymous said...

Honestly,

I've been getting my ass kicked when I do program. I am going to read 8-10 books. I am going to read 8-10 books all the AKSDKJing time. This sounds great though, instead of an MMO. Be productive.

WHO IS WITH ME?

Anonymous said...

I usually read programming and computer-related books while I take a crap, and I do that each day atleast for half an hour :-)

Mike said...

Umberto Eco said something nice about books, it's the ones that you own that you haven't read that are interesting.

Devgirl... you're my hero. Mostly I have Modern & Everyman's Library... I love the acid free paper and library binding.

Anonymous said...

It is once again time for one of my favorite literary quotes, from SF author Stanislav Lem:

"People never read. But if they do read, they don't understand. And if they do understand, they forget."

Anonymous said...

I like to read/re-read a chapter or two of a book related to my current work right before going to sleep for the night.
Doing this, I tend to lucid dream about the project and often find solutions related to what I've been reading recently.

Paul W. Homer said...

Great post, it's kinda scary isn't it. Just a few minor points:

It's a little unfair to use the Peopleware quote in modern context, that was decades ago, long before there was a huge explosion in tech books. It was a different era, books were hard to find.

Also, I don't really think many of the COBOL monkeys went to VB. There has always been an in-flow of medium-weight programmers that aren't specifically interested in what they are coding. Generally, they leave the industry after their languages dry up. Jumping to a new technology is too much trouble. That hasn't changed in thirty years.


Paul.
http://theprogrammersparadox.blogspot.com

Brent said...

Rams: Obviously, I should've been more specific when I referred to those 8-10 books. Only 2 are purely Ruby. The rest are all on topics relevant to Ruby development and/or my transition from Java to Ruby.

Mr.Anonymous, who loves his theory books: Theory books are great, but there are intricacies to every language that a developer may never become aware of without ready about the language.

Also, anybody that says that there isn't something to be gained from reading a book, be it theory or whatever -- they're crazy.

As far as the "internets", I use online apis as much as the next guy, but sometimes I prefer having a hard copy in front of me.

Rams said...

All:
Thanks for all the responses.

(a) Joel meant reading books to improve oneself and not reading per se. (b) A few people have asked here and elsewhere where De Marco and Lister got their stats from; I believe they did regular surveys from 1977 - I suspect that could be the source.

Rams said...

Antti Tuppurainen:
Agreed. In fact I think the net's use in cases like 'learning c++' is severely limited.

logtar:
Yup. None of the reading that I have done has ever gone to waste, although when I read them, they were not related to the job that I was doing. Believe it or not, doing things out of interest does pay off sometimes.

Rams said...

msp:
Raw hacking skills without the ability to understand a topic from first principles can result in irritating stuff, especially if it's something slightly more involved than developing a simple CRUD application. Forget about reading books or stuff online. Most people cannot read a stack trace and understand it or even the first few google search results corresponding to an error message. I have seen this too many times. People can't read stuff right in front of their eyes. And they go on googling endlessly or have meetings.

charles:
Thanks for the Stanislav Lem quote - Very nice.

Rams said...

Paul Homer:
Thanks. You have an interesting blog. What do you think has changed since Peopleware appeared to make book reading less important ? The net undoubtedly is a great resource. But as a few others pointed out books are a great way to learn things in-depth. I am not denying that you can get by mostly these days with googling and I don't even intend to suggest that it does not work in some cases, especially with programmers who are well read ;-)

Brent:
Ok, that sounds reasonable :-). I agree the intraweb is the best for apis and like.

Rams said...

Tim O'Brein:
Your comment about authors cultivating cult like behaviour is interesting. How much of this is mindless fanboyism and how much of it is due to a Oreilly's image as a Nerd publisher ?

Anonymous said...

I must be special or something; 311+ and I have two stacks not entered yet.

http://www.librarything.com/catalog.php?view=dave_newton&deepsearch=programming

Anonymous said...

True, most programming language books are there to teach you only the syntax not how to solve real problems.

On the other hand books on topics like search, data analytics, recommendations algorithms, integrations, recipes, tricks & tips are very useful.

The majority of books out there are a joke but there a few worth reading. Recipe books are the new wave because they a common solutions to common problems.

All in all, the internet is best resource for a programmer. Software forums, software recommendation sites, infoq.com, and many others.

We are in a world of multiple languages. I have to program in Java, RoR, and PHP all the time. Plus, CSS, HTML, Javascript, SPring, EJBs, Hibernate, mysql and much more.

You need a 100 books to learn what I do. Will I buy them no, the internet is rich in knowledge. That's where I get my cup of tea because book writers have proven to be useless to prove the skills I need.

Bex said...

Joel's opinion is likely based on the fact that he runs a small computer company, and interviews dozens if not HUNDREDS of people per year.

I bet he asks them what was the last software book you read... and about half of them just stare blankly.

Anecdotal, yes... but still might be valid. Remember, "developer" also applies to folks who are contractors, consultants, and people NOT employed by software companies.

Regarding books being useless... that depends. I go on the internet to get cookbook code samples, but I use books to understand the holistic view of technology. Although, yes, most tech books are dreadful...

Paul W. Homer said...

Hi Rams,

When Peopleware appeared, there were very few books to read. The information just wasn't available, we did a lot more experimentation when working with underlying code.

A couple of decades ago, there was a huge explosion in books, including some new, great publishers like O'Reilly. A whole new market opened up, suddenly there were books for everything. Gradually over the years, the web has eaten into that market. But the type of information has changed.

When we knew nothing, books that explained how thinks really worked were popular. With the web, examples that explain how to fix a specific problem have replaced that knowledge.

We used to have to understand it to figure out how it worked, now we just follow sets of instructions with no underlying knowledge. This has caused programming interfaces to degenerate, and programmers to guess a lot more often. Both effects have been leading a decay in software development (offset by the fact that there is far more code and data available).

We have more answers and less understanding.


Paul.

Tim O'Brien said...

@rams said "Your comment about authors cultivating cult like behaviour is interesting."

Not all, and certainly not specific to one publisher.

"How much of this is mindless fanboyism "

The industry needs some focus, we do need someone to speak at conferences, no? Different authors take different opportunities. Some have a knack for turning a book into a movement. I could go on forever, but it isn't my blog :-(

Rails is incredibly valuable, but it wouldn't be where it was today without the following that DHH attracted to the platform. Was it a "cult of personality"? That's too inflamatory. It has more to do with charisma than anything else. Again, I'm not against Spolsky, point I was trying to make was that more reading doesn't necessarily imply more expertise.

"and how much of it is due to a Oreilly's image as a Nerd publisher?"

I can't speak for the publisher. You calling me a nerd?

Rams said...

@Tim O'Brein:
"You calling me a nerd?" Haha :-)

BTW, you are welcome to post detailed comments here.

Rams said...

Paul Homer:
Fascinating insight.Dumber programmers as an unintended consequence of easy availability of information, eh ? Can you please expand on this theme as a separate post. Thanks. A lot of times, I feel these things just happen due to complex people-technology interactions, and not due to some evil mind sitting out there and plotting.

Anonymous said...

Have to disagree with a few guys here saying that reading a book on programming language shows you as a bad programmer - reading a book on language structures your knowledge and even if you're already experienced with language, fills some knowledge gaps you can easily miss with google/tutorials/docs approach.

Some books are good at chewing out the inner details (for me its usually Wrox/Apress ones) and some are good at giving hands-on experience (recently discovered Head First series, actually fun to study with those).

And elite programmers? I think those are not only reading books about programming but those who are regularily programming also as a hobby at home after their day jobs/ during weekends ( read: have no life but coding).