One of the central themes of stackoverflow.com is that software developers no longer learn programming from books, as Joel mentioned:
Programmers seem to have stopped reading books. The market for books on programming topics is miniscule compared to the number of working programmers.
Joel expressed similar sentiments in 2004's The Shlemiel Way of Software:
But the majority of people still don't read. Or write. The majority of developers don't read books about software development, they don't read Web sites about software development, they don't even read Slashdot.
If programmers don't learn from books today, how do they learn to program? They do it the old-fashioned way: by rolling up their sleeves and writing code -- while harnessing the collective wisdom of the internet in a second window. The internet has rendered programming books obsolete. It's faster, more efficient, and just plain smarter to get your programming information online. I believe Doug McCune's experience, which he aptly describes as Why I Don't Read Books, is fairly typical.
I lay part of the blame squarely at the feet of the technical book publishing industry:
As an author, I'm guilty, too. I co-wrote a programming book, and I still don't think you should buy it. I don't mean that in an ironic-trucker-hat, reverse-psychology way. I mean it quite literally. It's not a bad book by any means. I have the utmost respect for my esteemed co-authors. But the same information would be far more accessible on the web. Trapping it inside a dead tree book is ultimately a waste of effort.
The internet has certainly accelerated the demise of programming books, but there is some evidence that, even pre-internet, programmers didn't read all that many programming books. I was quite surprised to encounter the following passage in Code Complete:
Pat yourself on the back for reading this book. You're already learning more than most people in the software industry because one book is more than most programmers read each year (DeMarco and Lister 1999). A little reading goes a long way toward professional advancement. If you read even one good programming book every two months, roughly 35 pages a week, you'll soon have a firm grasp on the industry and distinguish yourself from nearly everyone around you.
I believe the same text is present in the original 1993 edition of Code Complete, but I no longer have a copy to verify that. A little searching uncovered the passage Steve McConnell is referencing in DeMarco and Lister's Peopleware:
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 in the field; for folks like us who write books, it is positively tragic.
It pains me greatly to read the reddit comments and learn that people are interpreting the stackoverflow.com mission statement as a repudiation of programming books. As ambivalent as I am about the current programming book market, I love programming books! This very blog was founded on the concept of my recommended developer reading list. Many of my blog posts are my feeble attempts to explain key concepts outlined long ago in classic programming books.
How to reconcile this seemingly contradictory statement, the love and hate dynamic? You see, there are programming books, and there are programming books.
The best programming books are timeless. They transcend choice of language, IDE, or platform. They do not explain how, but why. If you feel compelled to clean house on your bookshelf every five years, trust me on this, you're buying the wrong programming books.
I wouldn't trade my programming bookshelf for anything. I refer to it all the time. In fact, I referred to it twice while composing this very post.
I won't belabor my recommended reading list, as I've kept it proudly the same for years.
(Update: Tim Spalding kindly set up a LibraryThing account on my behalf -- and members have already documented and entered every book pictured on these shelves. Impressive, and quite cool!)
But I do have this call to arms: my top five programming books every working programmer should own -- and read. These seminal books are richly practical reads, year after year, no matter what kind of programming I'm doing. They reward repeated readings, offering deeper and more penetrating insights into software engineering every time I return to them, armed with a few more years of experience under my belt. If you haven't read these books, what are you waiting for?
| Code Complete 2 | Don't Make Me Think | Peopleware | Pragmatic Programmer | Facts and Fallacies |
|
|
|
|
|
It is my greatest intention to make stackoverflow.com highly complementary to these sorts of timeless, classic programming books. It is in no way, shape, or form meant as a replacement for them.
On the other hand, if you're the unfortunate author of Perl for Dummies, then watch your back, because we're definitely gunning for you.
Without programming books I would be clueless... but I'm part of your generation Jeff - the "old guys" who learned to code in the dark ages before 24 hour internet access was a given. As such, I still use books (as well as the net). I simply can't get comfortable trying to snuggle up at night with my laptop - books work much better in that respect.
Rawlyn on April 29, 2008 1:02 AMI must confess, that I avoided books about coding for years. After I made my passion to my job, I began to read books. Mostly about GUI design, defensive design, usability and performance. I fully agree to you: Programmers must read books!
unset on April 29, 2008 1:08 AMYou're right, this is the fact that hate most from our field. People who depends on their knowledge and forget feeding it from time to time.
And yes, it will always be better to have a paper book of 900 pages than a big pdf file to read in a screen. Guys, pay for what is worth, and books are.
Joan Planas on April 29, 2008 1:14 AMI don't see your copy of K&R, "The C Programming Language". Very slim book and it teaches you C quikly without any tomfoolery.
I'd like to read more programming books but they're actually pretty expensive, IT doesn't attract the brilliant salaries it used to.
Daniel Cooper on April 29, 2008 1:19 AMI totally agree with you, with no books there's no proper programming
I write programs for Java ME and well known in narrow circles so many people ask me what to download to start programming. My usual answer is that first you buy books for language basics and they better be real paper books, not online. People who listened to me agree later that I was right and about others I usually don't hear anymore.
Malcolm on April 29, 2008 1:23 AMNow, I'm no expert, more of a hobbyist trying to turn a passion into a job (somehow..), but:
I love programming books.
I like the 'how' style of books (Programming Ruby, and The Ruby Way in particular), are very nice. Also books that introduce a framework are interesting (I have Beginning Ruby on Rails E-commerce) are nice. They serve as quick introduction (good language introductions include a reference of the language, too) into a topic, and allow me to ask the right questions, and help me in getting to know the problem domain or language domain.
And I also like the 'why' books. Or books covering a certain area in depth, too. They can be especially useful if they cover libraries like the .NET library (it is huge, I have little to no clue where to look to get to know the features), similar the Java library.
And lets face it: API/library documentation on the web can be nasty, too.
However, there is a real issue in finding good books. And for that, I rely heavily on recommendations by others, more expert than me.
I think I have almost all books Jeff recommends in my Amazon wish list.
I've also noticed, that the quality of a book depends highly on the publisher, too.
And the 'For Dummies...' books are a real mixed bag, I've noticed. They can be real hit and miss (The SQL book is next to useless, while the Crystal Reports book was a tremendous help to me).
Phillip Gawlowski on April 29, 2008 1:28 AMI can see the point in reading timeless books, but rarely there are some amazing ones you can learn a lot of.
I bought Omar Al Zabirs "Building a Web 2.0 Portal with ASP.NET 3.5", this man is one tricky genious! This was well worth my money.
Books like this are especially useful, if your a part time student that can't afford expensive internet connection while on the train.
steve on April 29, 2008 1:29 AMThat's a quite excellent bookcase there. I see many old favorites and many items from my "to buy" list in there.
The truly shameful thing about our industry is that there are many practitioners of software development who know how to do it well but there is something of a disconnect with the way people tend to learn software development. Many who teach themselves grasp at disjointed code samples provided by googling for specific answers to specific problems and they tend to struggle mightily with attaining even the smallest bit of maturity as an engineer. Many who learn through formal education at colleges and universities receive either shoddy educations from a system that has discovered it can make more money by lowering standards than from producing competent professionals or they receive inapt educations which leave graduates poorly trained for the real world (i.e. software engineer hopefuls who learn computer science instead).
The result is that for every honestly good software engineer there are dozens (or perhaps even hundreds) of coders practicing shoddy cargo cult programming techniques or churning out software through copy-paste combined with random code mutation. The result is also that for every individual who tries to extol the virtues of good, well tested software development methodologies there are dozens (no, definitely hundreds) of snake-oil salesmen peddling quick-fixes and magic bullets.
We are indeed in some of the darkest days of software engineering to date, yet there is still much hope. There is an impressive number of people who know the better ways to develop software, and they are starting to find their voice, starting to organize, and starting to influence others at an ever accelerating pace.
Robin Goodfellow on April 29, 2008 1:31 AMJeff, you read my mind.
The first programming language I applied "professionally" was PHP. I've decided I need to come back to something like C++ to get a better foundation, and for this I am reading Thinking in C++ by Bruce Eckel.
Before downloading this book (I know, hard copy is better etc) I ran Bruce through your search and it seems you're a supporter. Can you vouch for his book too?
Shy on April 29, 2008 1:42 AMJeff, you wrote: "I believe the same text is present in the original 1993 edition of Code Complete, but I no longer have a copy to verify that." I own a copy of that edition, and definitely, the text is present. It appears at the end of page 760. The chapter it is in is "Personal Character."
Congratulations for your work,
Best regards,
Introspectre
PS: Please, forgive my English, it's not my native language.
You should get Knuth, though, because its just a pleasure to read something so authoritative and comprehensive.
jpsa on April 29, 2008 1:47 AMI would also add to your list of reasons the fact that authors are barely paid if at all for writing books. You probably went through that too. This state of affairs is not specific to computer science and although you can argue that writing is a call, the fact is that receiving a couple of thousand dollars for six months work raises definite barriers to serious writing projects.
Jose Simas on April 29, 2008 1:47 AMSo, what would you recommend for a business analyst?
I have an odd job. In our group, I spend most of the project hopping around from group to group. I code with the devs, I do CSS with the designers, I attend management meetings, I look at content with our content owners. Why all this jumping around? Because I'm the documentation fairy. Having a moderate hands-on knowledge helps me create documentation that means something more than 'get the man off our back.'
So, I don't need high level programming books. I'm never going to design a system on my own. I need books that are more about how things fit together. Anything you can recommend for that?
Katie on April 29, 2008 1:50 AMAll these books are available here:
as online versions. A very cost effective way of getting these books IMHO.
$45 a month for as many books as you like or $25 a month for a 10 slot bookshelf.
Highly recommended.
Giles Roadnight on April 29, 2008 1:51 AM> definitely, the text [about programmers not reading books] is present [in the original 1993 Code Complete]. It appears at the end of page 760.
Thank you!
> what would you recommend for a business analyst?
Hi Katie,
Here's my top 5 for business analysts; two are the same.
1. Krug's "Don't Make Me Think"
2. DeMarco and Lister "Peopleware"
3. McConnell's "Rapid Development" (more project management oriented)
4. Cooper "The Inmates Are Running The Asylum"
5. Nielsen/Loranger "Prioritizing Web Usability"
I don't think you'll be disappointed!
Jeff Atwood on April 29, 2008 1:59 AMHmmm, i guess im different to 'most' programmers then...i have read 5 programming books this month (currently part way through The Mythical Man Month), and i really enjoyed the Don't Make Me Think book.
Thanks Jeff for your recommended reading list!
Andy on April 29, 2008 2:17 AMInspired by the same line in McConnell's Code Complete I wrote this blog ages ago:
http://www.zx81.org.uk/computing/opinion/noreaders.html
Recently I was writing a follow-up, trying to list all the newer books that would now be in my top ten and found that the list was pretty much identical. I might have added Conceptual Blockbusting and I liked the idea of adding Programming Perl to show that it was possible to have a densely technical book that was also well thought out and entertaining.
Also, your comment about Dummies Guides rang a bell!
http://www.zx81.org.uk/computing/opinion/why-i-hate-dummies-guides.html
Stephen Darlington on April 29, 2008 2:21 AMGood programmers write good code
Great programmers steal great code
:)
Jonny on April 29, 2008 2:26 AMI think the main problem with coding books is that to be able to write a good one, you have to a) really, DEEPLY understand your subject (not just be competent in it) and b) be able to communicate that understanding in a clear way, step by step, while keeping in mind what it might be like to be a complete beginner.
This is not easy. Essentially, you have to be a natural or trained teacher. And that's something that not many people are.
Tina on April 29, 2008 2:31 AMYou can't call yourself a Windows programmer unless you have read and understood:
- Programming Windows, Fifth Edition (Petzold)
- Programming Applications for Windows, 4th ed (Richter) or the new title, Windows via C/C++
- Ideally, Windows Internals, 4th or 5th ed (Russinovich, Solomon).
Programming Applications was originally called "Advanced Windows" but the 4th edition covers Windows 2000. Windows Internals was called "Inside Windows NT" then "Inside Windows 2000" but again, you probably want the more up-to-date information. Programming Applications tells you what to do, Windows Internals tells you what the OS does when you do that.
If you plan to write server applications, "Programming Server-Side Applications for Windows" (Richter, Clark) is also helpful.
All of this is C/C++ material, but it's the fundamentals of how Windows works. As we know, abstractions leak, and the .NET Framework is no exception. If you want to know what's going on with your .NET program, you still need to know this stuff.
All these books are monsters. There's a reason. Windows is big. Very very big. None of these books provide complete coverage but they provide the fundamentals on which everything else is built.
Mike Dimmick on April 29, 2008 2:32 AMAs well as applauding the great books you talk about here, I think there's more scope for naming and shaming some of the real shockers.
I think a five "worst" books would be an equally interesting list....
Julian Bucknell nails some of them here:
http://www.boyet.com/Articles/WorstComputerBook.html
- Roddy
Roddy on April 29, 2008 2:42 AMWhen did you sneak into my study and take a picture of my book shelf? Not a complete match but certainly there is a lot of commonality there, and just looking round one of the oldest I have to hand is Stroustrup's Design and Evolution of C++ and although I did often buy reference books back in the pre-internet days they are all long gone. The classics just keep being useful, I mean you wouldn't see a 20th anniversary edition of "The Windows 32 API Reference Guide" but The Mythical Man Month is just as relevant today and even my 20th Anniversay Edition is now 12 years old!
But even if programmer's don't read books they don't read off the web either, the only time they do is when they need to do something and want to find the answer so you end up getting The CodeProject Programmer who just pulls together a bunch of code from sites like CodeProject but if something goes wrong have no idea how to solve the problem. Learning on the job is fine but then it needs to be structured and guided into better ways of using that knowledge and when indeed to use that knowledge. I know that my continued usefulness in this industry is only because I never stopped learning, and it pains me to see how many people think that having a degree means that is all they need.
All I would say is all us who care have a obligation to keep banging the drum wherever we are to ensure that we together raise the professionalism of this noble art.
Simon Wilson on April 29, 2008 2:45 AMOn a related note, has anyone ever read a good book on microsoft programming techNologies (VB6, .NET, MFC, etc)? I don't mean to single out MS developers/writers (I am one by day) but they seem to be the orst offenders in this regard.
It seems like everyone of these books (and the vast majority of msdn documentation) boils down to a click here, type this, click there, select this walkthrough.
If I'm reading documentation I want an explanation of the concepts and key parts involved (with links to reference documentation), not a step by step guide.
The same goes for tutorials. In a tutorial there needs to be some hand holding, but it should also take breaks at appropriate points to explain the concepts it's dealing with.
I think the reason most people don't document code is that they don't know how to make it usefull.
flukus on April 29, 2008 3:01 AMInteresting. I picked up a book "C# for Dummies" and read it cover to cover. I then picked up a C# reference book and starting reading that. I then picked up a heavy weight Asp.Net book and read that. After a lot of trial and error, I started get the hang of things. Of course the code was rubbish and thankfully it was all throw away stuff. It was only when I got away from the basic books and into the more professional books that my coding achieved a high enough standard for production.
Books are vital for for bringing this awareness to the development community. The Google look up won't tell you the best way to do something just the way that can be explained in a few short lines.
To over simplify things - The quick fixes come from Google while the long term good code and good design comes from books.
I really should stop reading your blog, as I turn poor buying all the stuff you recommend.
Hey but at least I can use the Fenix L0D light to read the books. And if the battery runs out I can use recharge the eneloops using my shiny new BC-900 ;)
Daniel Lehmann on April 29, 2008 3:18 AMI think it's an age thing. I'm pre internet by several years and remember reading most of the books you give here. Reading online sucks as well - it's much harder to remember stuff. O'Reilly try really hard with Safari but it's a pain. I remember hearing a podcast (on Conversations Network somewhere) that was saying in general people are finding it harder and harder to pay attention to stuff because of this - always want it now - even when it is poor quality and not a lot of use.
You can also read books in bed without scorching your lap and scribble on them. It's *easier* to try coding examples from a book because you're less likely to cut and paste them and learn nothing. Typing it in makes you think about what you're doing.
That said, I agree about the quality of programming books. I've been doing Ruby now for about a year and understand a lot of the deep stuff - code generation, metaprogramming etc., that can save you loads of time if you use it intelligently. I recently picked up a book on design patterns and the first third of the book was an introduction to Ruby padding it out - WHY? This ground already covered extremely well by at least 5 other authors - I want the advanced stuff (but couldn't find it). And 40 (yup $80 or so) was a pure rip.
Also - you haven't mentioned this - but I learned a TON of stuff at the Euoropean Rails conference and Scotland on Rails. Go to conferences and hang out with other coders, look at what they're doing. Be humble.
Francis Fish on April 29, 2008 3:21 AMWhat a coincide, I'm taking a few days of sick so yesterday I decide to order some books to keep me busy:
1. Code Complete - as per Jeffs reading list
2. The C programming language - as mention by Joel on the podcast. In short the Joels point is that C is close to machine language and so by understanding C you understand how the computer works at the most basic level.
3. Concrete Mathematics - My reason for choosing this book are similar to choosing the C book. By understanding the problems which our program are to solve we're in a better position to solve them efficiently.
I picked these books because they'll let me understand the why. Also the few how-to style books I've read were really boring!
Cheers
Ben
I've been programming either as a hobby or a career since I started learning on my father's TRS-80 a loooong time ago. In that time, I've read several books from cover to cover. I prefer the electronic books, because they're easier to search. Even then, most of them are useless. The big tomes (Pro C# blah blah, Pro this or that blah blah, etc.) mostly contain stuff I already know. Sure, I reference a lot, mostly because I'm senile. Sitting here now, I can think of only one book that truly stands out in my mind:
"The C Programming Language" (1st ed.)
That's it. Not a good ratio if you ask me.
(Note: books on theory are a little different, about neural networks, embedded programming, animation, etc.)
caloggins on April 29, 2008 3:26 AMOn the topic of C books, I always found Harbison and Steele's "C: A reference manual" to be better than K&R in actual usefulness. K&R is a great book as well, but H&S is the one that you'll actually turn /use/...
- Roddy
Roddy on April 29, 2008 4:00 AM"To over simplify things - The quick fixes come from Google while the long term good code and good design comes from books."
Beautifully put, Brian.
I dabbled with OpenGL using information and tutorials online... and finally understood how it works once I got a book on the subject. Sometimes I need things to be explained to me really slowly, without missing any details, before it truly makes sense. I'm sure a lot of coders are the same - and that, in my opinion, is why "___ for dumbasses" books _really_ suck.
Rawlyn on April 29, 2008 4:01 AMWhat programming books have you read in the past 12 months?
As for dead trees, your publisher SitePoint supports selling PDFs but I don't see your book listed on their site. While I like to sit down with a dead tree book for the first read through, easily searchable digital versions for later reference are really useful.
There aren't enough great authoritative technical writers. It's going to be a long time before I replace my tried-and-true Unix and networking references by W. Richard Stevens. I can't remember the last time I read a new-to-me book with actual code examples in it. The majority of the 30 non-fiction books I read last year were about business psychology, software/network security and career management.
Chris Carpinello on April 29, 2008 4:15 AMAs far as I know, most of CS undergrads think course notes are all the knowledge the need in life. The problem comes from the root: basic education.
Rafa Vargas on April 29, 2008 4:21 AMI like your article and selection of books except
1. The VB book detracts from your cred.
2. UML and design patterns are a classic hallmnarks of second rate corporate drones. Not to mention that the design pattern books are incredibly boring.
3. If you are doing algorithmic work where O(x) matters, Knuth is actually very useful.
Tarkovski Programmer on April 29, 2008 4:29 AM"...one book is more than most programmers read each year (DeMarco and Lister 1999)"
"I believe the same text is present in the original 1993 edition of Code Complete"
Time machine? A citation from 1999 in a 1993 edition would indeed be prescient (-:
And yet it must be so...
"I own a copy of that edition, and definitely, the text is present. It appears at the end of page 760."
On average, I will buy one or two programming books per month. The choice is usually based on whatever happened to pique my interest that month. Only a handful get read cover-to-cover each year. The rest I will either give up on because of disappointment in the content or I will skim from time to time if I think it has something interesting or useful to tell me.
I've also learned to screen books based on publisher. All other things being equal, I will usually go for an Addison-Wesley or O'Reilly book. I won't even consider Wrox books anymore.
"I won't belabor my recommended reading list, as I've kept it proudly the same for years."
How sad is that? That says that the book industry is dead - that nothing worth reading is being produced any more, that only "the giants" of the past are worth reading.
I call BS on that. How 'bout 37signals "Getting Real"? GREAT book, even as I didn't agree with all of it. Completely changed my mind about a few "truths" I've held dear for decades. Because the good books challenge you as they teach you.
And as for classics, you missed "Systemantics", now known as "The Systems Bible" in its third edition. While not about programming per se, every programmer and analyst and project manager and program sponsor on the planet should read it. Period.
Jim on April 29, 2008 4:39 AMI laughed when I saw Basic Computer Games on your shelf there: I can't get rid of <a href="http://steelwhitetable.org/2004/05/20/games-basically/">my edition</a>, either. A classic, in its own way (in addition to the others you listed).
jody on April 29, 2008 4:45 AMI can't imagine that one can do programming without reading. Be it reading code or reading books. The great thing about books is, they simple work. You can get them with you whererver you want, and you can read them while sitting or lie about. They do not need any currency just enough light. My usual way to get into a new area, is looking up and buying one or more books about it. Then I read it, I know I'll hardly understand anything but it's to get into it. Then I start looking for example and implementing things from it. After a time I get back to it an I see that more and more things from the books fall into place.
You just can not get an oversight from the "cut & paster" camp. This is just "programming by accident" ;-(
I'd bet programmers really serious about their job, do read books and the do spend a lot of money on them.
Regards
Friedrich
Tarkovski Programmer - not all design pattern books are boring. Check out the O'Reilly Head First Design Patterns. I'm not ashamed to say I actually loved this book and not just because of the semi-hot girl on the cover!
I tend to find I can pick up new languages a lot faster from playing with examples online, but I always come back to a solid reference text book when I'm up to intermediate level to get a deeper, more comprehensive understanding than bite-sized web articles can deliver.
And I would say that if you haven't read code complete then you're an incomplete coder. End of.
burnside on April 29, 2008 4:59 AMThe problem with your Business Analyst list:
in my corner of CubeLand (and still a few others), BAs get to specify the "file content". Needless to say, it all ends up being spreadsheets stuffed into <database>. For such kinds of development, database smarts is needed. But it usually ends up with something like, "well, I know a little bit about SQL. Read Ambler".
BuggyFunBunny on April 29, 2008 5:07 AMHere is a list of some books I've read in past few years that are more modern:
"Hackers and Painters"
Bunch of Ruby books from Pragmatic Programmers.
"Programming Erlang"
A quick once-through of your shelves shows that I've got six of the same books as you Jeff, which I feel kind of pleased about.
I don't see how you can "love the craft" (ick) and *not* love reading technical books - I'm a technical book junkie, it's only the price of the damn things that restrains me. And although the internet is an unrivalled resouce, there's nothing like the heft of a real book.
Love the concet. And I truly can't wait until stackoverflow.com gets going. I used to by books all the time. I have, and have read, most of your recommended list.
Now, for cost reasons, I use Safari Bookshelf unless I really want a copy to keep for reference.
I don't like Safari's model of forcing you to buy slots because you have a minimum amount of time a book must occupy a slot. But it is an effective way for them to make money. Until you roll your solution out anyway.
My own belief, based on my own experience, is that the ratio of good usable books vs manual reprints with simplistic examples is pretty bad. And most book stores are devoting decreasing amounts of shelf space to the whole genre. You can find more certification books than anything else. And the number of titles surrounding productivity apps like Office far exceed the number of actual programmig titles now in Borders and Barnes and Noble.
When I am being asked to pony up $60.00 + for a book I stop and think now, and really be very aware of my own perceived value. Am I really going to get my value?
Good luck, I think you are on the right track!
Cheers,
Robert Porter
Robert Porter on April 29, 2008 5:14 AMOops, meant concept above, not sure what concet is?
Robert Porter on April 29, 2008 5:15 AMGreat column, thanks.
I think most programmers have stopped reading books on the subject because the web has become the best source for the standard information as well as notes on the "Gotchas" of any facet of any language.
Unfortunately that leads to lazy (and rude?) newbie programmers and programming students who ask in forums "Will someone please tell me how to write my XXXX system?" As if 1) there are a dozen programmers who read that forum with a complete inventory control system sitting on their hard drive, and 2) that the newbie could actually understand and implement such a system if the competent programmer dropped a fully-documented system in their fat laps.
Personally, I'd rather have my books online than in hardcopy because they're much more searchable that way for me. But I ain't paying O'Reilly $25 per month for access to 10 books. That's just stupid.
I wish each printed book would come with a pdf version you could download and lock to your machine. Heck I've had a pre-release book on order from Amazon since January and it's now not due out until June! Let me pre-order it and send me the PDF now so I can start using the info! Please??? :-/
Stew on April 29, 2008 5:16 AMWorst computer book? The two books in Roddy's link sound like they're merely factually incorrect. Gollmann's "Computer Security" (the old version, anyway) is my number one worst book. It's just awful to read. Here's the link:
David A. Lessnau on April 29, 2008 5:18 AMJust another tip-o-the-hat to "Don't Make Me Think." Excellente!
(I especially enjoy that not long after reading it and the praises Krug gives Amazon for their tab navigation...they change it.)
John on April 29, 2008 5:27 AM"They do not explain how, but why."
Reading this made me remember something else I read today,
http://blog.jayfields.com/2008/04/understanding-why.html
Hope that stackoverflow will be more about the "why", and less about the "how" like experts-exchange is.
Evgeny on April 29, 2008 5:32 AMThe list of programming books that I actually *re*-read or have read all the way through is pretty short. I have perhaps 60% of your bookshelf there (including Basic Computer Games and the Tufte books).
Three more I'd add are Effective Perl, SQL for Smarties and Unix Power Tools. Every time I open one of those, I get a new insight or inspiration.
I think Code Complete and UPT are probably the only 'fat computer books' that are worth the bulk.
Howie on April 29, 2008 5:36 AMTo me, the main thing about books is that you are exposed to things in a way that you aren't with online articles. You get more structure.
If you get a good book on say, ASP.NET and read it cover to cover, you find out about its capabilities. If you don't know the capability is there, are you going to google for something about the capability, or just build something in a hackneyed manner?
For the detailed stuff and for code snippets and the like, I prefer articles, though.
"On a related note, has anyone ever read a good book on microsoft programming techNologies (VB6, .NET, MFC, etc)?"
I really like Jesse Liberty's Programming C#. His book on asp.net is not bad (and it very much deals with asp.net code, not using vs.net).
I've read several programming books this year and not one of them has bothered to include a chapter on security, including "The ASP.NET 2.0 Anthology". I've also noticed that the programmer elite has nothing to say about security; no blog posts or mention of it when complaining about the shoddy work in the profession. Now there is news of a massive SQL Injection attack and nobody is trying to educate developers about how to deal with it. Unfortunately I have inherited a classic ASP web application that is probably extremely vulnerable so I'll have to study stored procedures today.
Robert S. Robbins on April 29, 2008 5:47 AMVB.NET - that's really timeless! No, I meant worthless...
It seems the last winter was not cold enough...
Programming books which teach you code are useless and often contain typos and other errors which make it more harmful than good. Books about programming which teach process, methodologies, strategies, pitfalls and what's going on behind the scene are what we should be handing our kids.
You want to know syntax? Google it. Want to know why your app is slow when all you are doing is combining strings, read a book.
Oh, and stop talking smack on PHP.
Rob Allen on April 29, 2008 6:04 AMI tip the hat to "Don't make me think" as I've probably read it several times since I got it earlier this year.
I've got stacks of books for programming, cleaned out a lot of it several months ago and now am replacing it with the why? books and not the expire-able books that document how to do something in a language/product/tool, etc. The web is a fine resource for finding relevant solutions to the books I no longer buy - although I do still enjoy reading a book as opposed to web pages, just not the same easy to use interface for reading (although much easier to use searching...)
I've got several of the books recommended off of your list and I do enjoy them all.
Kaosweaver on April 29, 2008 6:07 AMMany of the topics brought up in this discussion hit close to home for me. I recently graduated with a double major in comp sci and comp eng. The hardest part of my courses always fell into my teachers focusing on the how. Rarely did they get into why, that was usually something I had to stumble upon myself.
Most of my fellow students fell into the copy and paste programmer description. To be fair, I can't blame them. You can only really apply as much thought as you have understanding.
To sum it all up, my college career would have been vastly easier and more enriching if my professors followed my philosophy:
"The why explains the how."
An less obvious benefit of books:
A boring train journey went much quicker at the weekend after I got into an interesting conversation with a stranger who had noticed I was sat reading "Code Complete" and correctly assumed I was a fellow developer.
Incidentally, Code Complete is probably one of those larger books that Doug McCune would complain about having to lift - but fortunately the content is excellent, and a free arm workout is always good.
GrahamStw on April 29, 2008 6:10 AMNice! BASIC Computer Games made the shelf! That was the first programming book I ever read.
Aston on April 29, 2008 6:16 AMI think one of the reasons most programmers don't read books is that the constant deadline pressure of our jobs discourages taking any time during the work day and many (most?) of us work much more than 40 hours a week, so we don't have a lot of time outside of work. However, I have always found time, somehow, to keep reading software books. I no longer read technology specific books.
As other people have mentioned, I think it is generational as well. I started programming professionally in 1979. I don't think I had access to the internet until 1987, so my habits were established well before the web. Also, I notice that the people I know in their 20s don't read any books of any kind not just programming books.
I've found that it takes at least 5 years out of school before you have the desire to read a book.
Joe Beam on April 29, 2008 6:18 AMThis post has uncanny timing. Just last week I purchased, for the first time in a while, my first software engineering book whose purchase was not mandated by my university: Applying Domain-Driven Design Patterns by Jimmy Nilsson. Furthermore, I started my own blog, partly inspired by my hours of reading this one.
I tend not to have such a negative view on programming books. They can give a programmer a consistent style and technique for writing in the given language. Pouring over various internet articles for tips can lead to inconsistency, and I experienced this first-hand.
I had no formal training in VB.NET outside of following fragmented code snippets on the net. As a result, the first few months of code I cranked out at my job contained inconsistent styles...sometimes using MethodName = ReturnValue, sometimes using Return ReturnValue, etc.
Finally, I agree that while language-specific books are nice pragmatically, the books I enjoy the most are the "why", not the "how". I think the Nilsson book will be one of these. In addition, Eric Evans' classic Domain-Driven Design book was a book I carried with me to and from work and used every day.
MoffDub on April 29, 2008 6:19 AM25 years ago I taught myself Turbo Pascal 3.0 (wow, am I getting old) thanks to a book by a fellow named Tom Swan. Great stuff.
Ten years later I found myself editing technology books, mostly consumer stuff (I edited David Pogue's books for a couple years) but also the occasional programming book. I learned that the entry-level "Teach Yourself in 24 Hours" programming books are written by the publishers' favorite authors -- people whose entire programming knowledge is stretched to write the book, but can churn out piles of serviceable text on time. At the other end of the spectrum are the really deep and niche programming books. It's incredibly difficult to find authors for those because it takes the rare combination of deep experience *and* the ability to write. My employers could find one or the other, but seldom both. They tended to favor experience, but they weren't always good judges. So as the editor I spent ridiculous amounts of time fixing inaccuracies and making their writing make sense.
Jim on April 29, 2008 6:21 AMA serendipitous turn of events led me to the software (LabVIEW) that I have been making a living from for the last 9 years. And I learned it from a book first. Since then I have had formal training, a little bit of mentoring, but many more books. Code Complete is one of the best and my favorite. Although it teaches little about my actual software, what I have learned from it about software engineering principles and project management gives me a much deeper appreciation for the big picture and how to get a project done most efficiently.
PaulG. on April 29, 2008 6:30 AMWhat's up with Code Complete being on the second shelf. That book should have it's own book case...
HB on April 29, 2008 6:36 AMAn interesting book I picked up not long ago was an old text from 1971, the Psychology of Computer Programming, Even today a lot of the information applies today on how people interact.
Most of my favorite books are more reference works, that explain the language or methods.
Some pre-written type-in works i kind-of like, when reading those I look through them get the gist of how to do things and start to think of ways to develop better interfaces, data structures, whatever, so in a round about way those do help my programming in giving me seeds of ideas for how to do things and to use better programming methods.
Liked seeing the BASIC Computer Games and Creative Computing books on your shelf... I've got those too.
Larry on April 29, 2008 6:51 AMI was worried when I heard all the no-book talk on the stackoverflow podcast; it makes me glad to hear your defense of books. Websites are great for answering specific questions, but books are great for an in-depth command of a subject.
Take Javascript for example. Here is a fast moving technology where the most cutting edge stuff is being documented in blogs. However I would not understand closures as well were it not for David Flanagan's Javascript Definitive Guide. Upcoming Javascript books from John Resig and Douglas Crockford are sure to continue this trend.
On the .NET side, Jeffrey Richter's Applied Microsoft .NET Framework Programming is indispensable. The list can go one and on; every subject matter has its books like this. However, books of this caliber are rare. For every one of these, there are 50 "teach yourself XYZ is 24 hours" quick-buck books.
monsur on April 29, 2008 7:07 AM"Reading, after a certain age, diverts the mind too much from its creative pursuits. Any man who reads too much and uses his own brain too little falls into lazy habits of thinking." - Albert Einstein
Dan on April 29, 2008 7:07 AMI learned to program from books. C++ from the Ground Up was my first computer book. It gave me more than just a syntactical guide to the language. The book was full of useful principles that I still use today, over a decade later.
Our organization recently handed each programmer a copy of Code Complete with a mandate to study it completely. I am now reading it and Software Estimation by Steve McConnell. Both books are very well written and valuable resources.
Sadly, a majority of books that crowd the book store shelves are merely parroting online documentation or other documents that are available on the Web instead of teaching valuable and useful skills. Also, many focus so narrowly on a software or platform version that they become obsolete with the next release. C# 1.0, C# 2.0, C# 3.5. You can't finish reading the book before the next version of the platform or technology is released; much less apply it in your work.
Selecting books, like the many on Jeff's list, is difficult, but definitely worthwhile. True references should help programmers develop skills that transcend the current technology or platform but can be the foundation for work on whatever groundbreaking work comes along in the future perhaps on a platform that does not yet exist.
I come into this upside down, I think, because I was a book lover before I was a programmer, and I read programming books before I got into university. Code Complete was the first programming book I read, and it was a good first choice.
There's a big difference between reading for theory and reading for reference. Nobody keeps "Introduction to Automata Theory, Languages, And Computation" around for reference, but it's valuable background for learning about compilers and high-level languages.
I have mixed feelings about Safari books online. They have some great books, but the formatting sometimes leaves something to be desired.
Ron on April 29, 2008 7:11 AMNot to mention, it seems that many if not most of the programming books worth reading have the price tag of $100 or more.
Hutch on April 29, 2008 7:36 AMI can't see how anyone can call themselves a good programmer if they haven't read Code Complete.
Of your list I've read all but one and that one I never encountered. I'm going to rectify that oversight.
Loren Pechtel on April 29, 2008 7:41 AM3 thoughts:
1. I read that some authors (of good books) are discouraged from writing books because someone scans that books and then it floats around the internet. one author wrote on his blog something like, "why share my knowledge if someone is going steal it; I will keep my knowledge to myself and let 'them' pay me for consultancy, instead". depressing but true.
in fact, if you do a search for your asp.net book (and add "pdf OR chm" to the query string), you can find sites to download it. neither you nor the other authors are going to get paid/royalties for your hard work and valuable knowledge that you shared via your book.
2. sometimes good books are thick, e.g. "CLR via C#".
3. i like to ask this question during interviews: "what professional books you have read in the last year?"
one person we interviewed said that he hasn't read a programming book since college. he was hired over my 'no' vote, and his lack of reading showed in his work, in my opinion. the internet will only get you so far.
---------
There are 2 paths: "the short long way, and the long short way; it is your choice".
Years ago I picked up a book, "C for Dummies". It was completely and totally awesome. It really explained the subject well, and the sequel (Volume 2) covered pointers in such a way that it finally made sense to me.
The author, Dan Gookin, is the one that invented the Dummies concept and sold it. I think the "for Dummies" concept has been run into the ground and I agree that a lot of the "for Dummies" books are crap, but the original author and the original concept were pretty keen and those are the only "for Dummies" books I have on my shelf (though I do find myself defending it a lot).
Schnapple on April 29, 2008 7:48 AMA somewhat elitist tone in your post.
Just like bad music on CDs, which you find plenty of in used record stores, there are many bad programming books.
However, there are many great ones that I referred to for several years running that were exemplary.
While I learned Fortran, BASIC, and Pascal in school, I learned C, Delphi, and much of what I know about .NET from excellent books.
Steve on April 29, 2008 7:55 AMJeff,
I bought the programming book 'Java Concurrency in Practice' a while back to try and learn more about multithreaded programming techniques. It's a good book and there were some good general ideas but I was wondering if you or anyone else knew of an equivalent book dedicated to multithreading techniques thats for .NET?
If you are willing to put in the time, Knuth is excellent, and will definitely make you a better programmer. It's the opposite of the "Quick-fix" books-- but it will give you a profound understanding of the underlying structures that you rely upon. If you're not willing to commit to the big books, try a fascicle or two.
Michael Dorfman on April 29, 2008 8:08 AMYour book shelf looks very different from mine. Unfortunately, I have a lot of those ten pound books that I can never find what I'm looking for in. Well, never is an exaggeration, but it usually takes me three tries to figure out which book to even look in. There's a lot of good information there, but, generally more effective than sominex. I have started reading Code Complete, based on one of your earlier posts, and I am glad to get recommendations as to what I should be reading.
Pete S on April 29, 2008 8:10 AMI'm reading more bookds than ever. I download them first, if they are good I buy them. Then I read them on the train to work. Last book was about WPF Unleashed (excellent), next book is LINQ in Action (I hope that will be good too).
One thing though, they are very expensive.
Mike on April 29, 2008 8:11 AM>The monomaniacal focus on right now and
>the fastest, easiest possible way to do
>things leads beginners down the wrong
>path -- or as I like to call it, "PHP".
Coming from somebody who doesn't know and refusese to learn C :-)
I kid, I kid (but I will continue making fun of you for that until you do learn the damn thing :-)
LKM on April 29, 2008 8:16 AMMost blogs wouldn't follow a LINQ to SQL example with an explanation about coroutines and functional programming. Some books do that, and they are therefore very valuable to me.
I see you have some Tufte on your shelf, one should be enough, and that's the one about Powerpoint ;-)
Mike on April 29, 2008 8:22 AMI guess I'm not the average programmer around here. I do a lot of scientific programming and data analysis. So I value books like "Numerical Recipies in {C, Fortran, Radish}", and references about things like spectral analysis, and data mining.
I do like your bias toward good GUI design.
Sheldon
Sheldon Stokes on April 29, 2008 8:28 AMI used to buy computer books all the time and they would fill up my book shelves at home and the office. I got the safari book shelf from oreilly and I haven't bought more than 4 books in the past 3 years since getting the subscription. As someone mentioned already, you had to buy "slots" for how many books you want to check out. Well now they have a new tier, which I jumped on, called "library" that removes the limits of what you can see online. This makes it great as a reference tool and if you find code that is good, you can copy much easier than from a book.
Jason on April 29, 2008 8:36 AMProgramming books are good to get you started. Once you have mastered two or more programming languages, only timeless books like The Art of C. P. are worth it.
Specific books like "Data Binding with Windows Forms 2.0" in my opinion are a waste of time. You can get the info from the internet much faster and even more specific.
Santiago on April 29, 2008 8:52 AMI'm on the verge of being semi-offended by the ageist comments here. I'm a Java developer so no .NET/Basic/published-before-I-was-born-(1981)-books (not that I'm discounting the classics, just haven't gotten there yet)
and I admit, college (ironically) killed my desire to read books for a couple years, but I own several of the books pictured (Working through Head First Design Patterns right now)and have read a few more.
Still, I read. I think its more about a lowering barrier to entry in technology. I work mostly on web applications, so I call myself a web app developer. I met someone who works in my building who also calls herself a web app developer because she took a 2 week Dreamweaver course.
Its not that hard now, to become a sys admin or programmer because there is a lot of crutchware for people who could not function without it. I'm not saying we should all be running CLI Linux (though I wish I could at work), but if you are unable to operate a computer without a mouse and you call yourself a programmer I think there is a problem.
Jeff,
Got a book for that? :-)
If you can't afford to purchase books, check your local library. Most libraries can borrow books from Interlibrary Loan or WorldCat. See http://www.worldcat.org/. An example, Code Complete is showing in 850 libraries world wide. Usually you can borrow these for little or no cost.
Kuerwen on April 29, 2008 8:57 AMBy declaring that you will never read Knuth's The Art of Computer Programming, you declare yourself to be a hack coder, not a programmer and certainly not a hacker.
The details of your "damning with faint praise" comments about Progamming Pearls confirms this.
You see, computer science is what makes the difference. Without it, you're technician-class.
(The notion that all important "low level" algorithms are already available in libraries is nothing but a thin rationalization, BTW.)
Doug on April 29, 2008 8:57 AMThe Art of Computer Programming is a must for anyone who wants a deeper understanding of structures and efficient (as in O(x)) algorithms.
If you are doing CRUD and using libraries for anything slightly more complex, you can skip it. But the idea, I thought, was becoming a better programmer.
"Employ your time in improving yourself by other men's writings, so
that you shall gain easily what others have labored hard for."
-- Socrates
I love reading but it takes so much effort and time - but there is no better alternative.
The problem I think, is that most programmers have this 'nobody can teach me anything' mentality.
Personally I like to approach a subject and immerse myself from a higher level into the nitty-gritty details over time, to get an overview first and the philosophy behind the thinking - as was mentioned, the Why? and not just the How?
I also enjoyed Code Complete and I am busy with Booch's OOA&D book as well as Watts Humphrey's Managing the Software Process.
It is tough to find the energy to read after a hard day in from of your IDE, so I have resorted to reading in the mornings before work. It works well for me and it gives me a sense of achievement, even before I step out of my house!
Vic on April 29, 2008 9:05 AMhmm, do i buy code complete or do i buy call of duty 4? decisions, decisions...
cowgod on April 29, 2008 9:29 AM"The market for books on programming topics is miniscule compared to the number of working programmers."
At $50 or more for a good book, many working programmers must make a purchase decision where not buying the book is a valid option. At $20, you would see more books being sold...
poor programmer on April 29, 2008 9:36 AMRobert S. Robbins See http://www.codinghorror.com/blog/archives/000117.html
Anyways back on topic. I have held for a long time that the best way to pick a new tech employee is in the interview ask them the last technical book they read, or are reading, and the 2-3 blogs or magazines they read regularly.
If they actually read them they should not have any problems to quickly answer it and if they actually reading then they are probably better then most of the population and are at least interested in learning new things.
Your recommendations have yet to be wrong, so you can enjoy more commission coming your way ;)
Brandon on April 29, 2008 9:50 AMI like the functionality to be able search "My library" via:
http://books.google.com/
Granted not all (or many) books are indexed, yet. I consider this to be a free version of Safari, using books that I own:
http://safari.oreilly.com/
Let's have an annual social gathering to burn our obsolete technical books. Imagine the size! Call it the programming pyre.
I'll bring the marshmallows.
I used to buy a lot of books.. Now that they cost 40-50 bucks and it's coming out of my pocket I don't anymore.. I wish I could afford them but it just doesn't work at those prices..
-jfc-
JFC on April 29, 2008 9:58 AMA really good book is an excellent way to become familiar with a new technology.
For example I found "Developing ASP.NET Server Controls and Components" http://www.amazon.com/exec/obidos/ASIN/0735615829/nikhilkothari-20 invaluable for getting a really good understanding of ASP.NET 1.0.
And I would be interested in books of similar quality and depth for new technologies such as WCF, Silverlight, etc.
Jeff,
Actually, "For Dummies" series quality has increased to the level of other "beginning/intro to language X" book.
Now on the topic of "Sams Teach Yourself". I like those books because I can pick up a new language (in a nutshell) pretty fast and advance faster than buying the best introductory books.
I wouldn't buy either series. But I've been borrowing a large number of those from a public library near my house.
For example: I don't know CSS. I borrowed Sams Teach Yourself CSS in 10 minutes. The book is small and thin. I learned the basic intro of CSS in a nicely structured way. It's not enough to be a professional, but it's good enough as a starting point.
I see you have lots of books in that shelf. I'm guilty of having tons of books too. I have tons of .NET books (most of them I got it for free during my internship at Microsoft). I also have several J2EE, Perl, Ruby, PHP and Python books. I'm in the process of selling them for cheap price.
At one time, I got stressed out for having to catch up with these technologies. But lately, I realized that most of the books I have don't give much value. I have GoF Design Pattern book but I rarely use most of the DPs. I probably only use few of them. I have Refactoring book (from Fowler) but yet I failed to see a significant value out of it. These books teach us how to patch C++/Java/C#.
What we're missing is tutorials/books on how to design tools like "ls", "echo", "cat". Tools that are usable and live forever (if engineers forbid them). So since last week, I decided to get back to the root. Start reading old books. Luckily, my university has these old books so I can borrow them with no hassle.
These books are thin, but they teach me more than any software engineering books out there. They do this with less complexity, less noises and to the point.
1) The UNIX Programming Environment (Kernighan)
2) The Practice of Programming (Kernighan)
3) Software Tools (Kernighan)
4) The Elements of Programming Style (a 1978 book)
5) Effective Java (partly because it is work related)
After interning at MS (on the Oslo team), I lose my appetite of doing any .NET (or, to some extend, Microsoft tools) stuff unless if it is work/highly-paid/consulting related. I know I'll have to learn new technologies, but I chose to learn them on the job.
Sorry if some readers think that I'm doing disservice to the IT field. I'm not the guy who decided to buy another J2EE app-server, or yet another CMS/CRM from Microsoft while simple open source software out there work fine.
Ted on April 29, 2008 10:10 AMGot to say I love programming books but it is a case of finding the time to read them especially when it's learn a new programming language (in detail), a book like that will take you maybe between 5 and 10 times as long to read page for page compared to a novel. Especially if you are doing the excercises and so on.
Maybe companies should offer personal development time where you can do this kind of thing. They get a better programmer, you improve your skills without eating into what free time you have (which you probably spend a lot of on the computer).
pete on April 29, 2008 10:16 AMTo know "how to" - Google
To know "why"... - blogs of all those egg-headed software devs!
Those suckers spend precious hours of their lives reading voluminous books and spit out the very essence in effortless pills in hope of luring more ad-cash generating traffic with their wisdom;)
Cheers
Tomek on April 29, 2008 10:35 AMOne other thing that may be quashing the sale of books is the speed at which the industry changes. The lead time for good books is really long, and the length of time the books stay up to date may be short.
Apple no longer publishes their SDK through Addison-Wesley, as they did years ago with the Inside Macintosh series. Instead, it is all web / PDF documentation and is updated three times a year.
Call me old fashioned, but I do still like books. You can cover a lot of material in a book, and high-speed visibility to a lot of information. That's harder with screen-based documentation.
Bill Coleman on April 29, 2008 10:37 AMYou are prematurely optimizing your learning experience. Please step away from the keyboard.
http://tailguard.blogspot.com/2007/10/please-buy-some-books.html
Chris Moorhouse on April 29, 2008 10:37 AMThe trend that I notice is that as one becomes more adept, the required reading becomes more abstract. You move from "Beginning C++" to "The Pragmatic Programmer" because when you're a nooblet, 95% of "Beginning C++" is new and fresh and only 5% of "The Pragmatic Programmer" even makes sense in application. Eventually only 5% of "Beginning C++" (if that) exists outside your brainpan, but 95% of "The Pragmatic Programmer" really resonates.
Chris Rikli on April 29, 2008 10:41 AMI've started including my favorite books in my resume. I think it really helped me get my last job. It really lets them know your serious about what you do. Here's what I have in my Resume within my Technical Proficiency section.
Influential Books
Code Complete, The Pragmatic Programmer, Lean Software Development: An Agile Toolkit for Software Development Managers, Implementing Lean Software Development: From Concept to Cash, Don't Make Me Think: A Common Sense Approach to Web Usability, The Non-Designer’s Design Book
Darrel on April 29, 2008 11:12 AMHummm, programming books...
* Mike Abrash books help a lot to understand how to deal with CPU caches, pipelines, etc. Even it was about old Intel processors, it still apply for ARM CPU, modern multiple cores CPU issues, GPUs, and good old 6502 for the NES homebrew game coders :) Just a matter of a way of thinking.
* The "Red dragoon book" is also a old but yet good book to learn how to put together a lot of theoretical stuffs (finite state automatons, grammars, data structures) to make a working software. And by the way, good to discover data structures.
* Some books about LISP (can't remember the titles, somebody ?), that behind LISP, teach the functional programming. As object programming, functional programming help to have organized and solid code, just choose your weapon. The more weapon you know, the more armed you are to fight real-life beasts.
Alex
Alex on April 29, 2008 11:15 AMI prefer books over the Internet; however, I usually use the Internet simply because it's cheaper. I don't want to spend $80+ on a book when I can get nearly the same content for free. Granted, I like the organization and formal learning from a book.
I do own several programming books, but I usually only purchase a programming book when I know nothing about the language I'm investigating. Once I have a firm grasp of it, I ask Google for anything else.
Brent on April 29, 2008 11:16 AMThe other advantage of having the books on your resume is that it gives you something to talk with the interviewer about, as they always seem to notice the list and bring it up.
Of course that only works if you've actually read the books :P
Darrel on April 29, 2008 11:19 AMWhat, no "More Programming Pearls"?!
Books are good.
I tend to use both the WEB and teaditional books. What doesn't work fer me are "books on the web" - such as O'Reilly Safari (which I subscribe to). I tend to use that service as a paid for preview service. If I like the bit I see on-screen I shall buy the book.
There are some really poor books on code development - unfortunately - and I have spent a small fortune on a pile of obsolete books I found were very poor - AFTER I had purchased them. I usually invested in them since I put my trust in the publisher. The publisher plays a big role in this - I expect aggressive quality control and editing to keep up standards. Trust is hard won and easily lost.
Chris on April 29, 2008 11:23 AMWhat, no Programming C by K & R?
Vaibhav on April 29, 2008 11:38 AMI have taken to grouping these texts into two categories. There are "programming books" and there are "development books".
Programming books are those that focus on actual code and almost invariably about a single language. Development books are about techniques, practices, and management. These are the books that are universal, that know creating software is a lot more than just writing code.
Programming books are useless. Development books can be priceless.
Calvin Spealman on April 29, 2008 11:54 AMBooks are definitely not useless - they are just not as important and/or necessary as they used to be. However, one thing books make possible ( other than the benefits derived from their portable nature ) is that they can lock your focus. Trying to learn stuff on the Web or even via PDFs and whathaveyou is a challenge in fighting off distractions.
Mark Papadakis on April 29, 2008 12:30 PMA collegue at work let me borrow Head First Design Patterns. I found it an enjoyable read (which where dev books are concerned is rare!) and patterns are now a fave subject of mine.
Nice to see it on your shelf Jeff.
Matt on April 29, 2008 12:53 PMJeff,
Despite your past comments, I bought the book you co-authored. I'm still relatively new to ASP (spent much more time so far on the raw C# and Winforms) and I thought it was great. Sure, you can do web-searches for stuff, but it's rare to be able to dip into a blog or other resource that makes you want to try and improve aspects of your coding. Plus, I really like to be able to have some time away from the computer screen just absorbing new stuff, so books win there for me...
So don't be so hard on technical books!
Nij
Nij on April 29, 2008 12:58 PMI'd like to add a book that every programmer should read, How Not to Program in C++. They say you learn the most from mistakes. I'd rather learn from someone else's. I wish they would release similar book for other languages.
Jim Cook on April 29, 2008 12:59 PMUgh. Did you see the (unofficial) documentation for writing software for (jailbroken) iPhones?? There is one book, I think, but what is available the most are VIDEO TUTORIALS ON YOUTUBE. Even more for tutorials explaining users how to jailbreak. Looks like people can't even be bothered to READ online. They need a step by step in a freaking video.
Sheesh.
I think there will always be a small group of developers willing to pay for well-written material, online or on paper, but hopefully the net will deal the death blow to the hated "X in Y days" category.
With fast searching and Intellisense I don't need to thumb through poorly written books to find parameters for API calls or quirks of this or that library.
When I saw your bookshelf (Basic Computer Games - oh, the hours typing those into my Apple II and the pointless hours playing Horserace!) I turned around and looked at mine and, no, despite all the information at my fingertips I still like my Meyers, Stroustroups and so on. I did notice I haven't bought any in a while even though I liked the Pragmatic stuff.
What are the numbers on your "Design Patterns?" - didn't return it to the library?
I've always loved computer books. When I was a teenager (looooong ago) my brother remarked that I'd have to write books myself, because I'd already read most of the computer books out there. I haven't come close to reading everything out there, but I do write a lot of computing books (11 at last count.)
I was an elitist too, for a while. I never owned any Dummies Books, and I nearly turned down the offer to write one. Now I've written two. A series isn't bad or good. Any author has the opportunity to treat any work as a task or as a masterpiece.
The technical publishing industry is full of well-meaning English majors who find themselves editing programming books while working part-time on their novel. Many of them become quite proficient at technical work, and many of them actually care about quality. I can't really blame the people. When they find an author with technical skills who also cares about the craft of writing, they do what they can to support her or him. It's very hard to find anybody who has the technical skills and communication ability. (Of the two, I find writing ability more rare.)
Truth is, there's not a lot of incentive to write great technical books. You'll earn a lot more money by being reliable than correct. If you just keep pumping out copy, you'll sell them and make back your royalty advances. It's the rare tech book that makes any money past the advance (only one of mine so far, but I'm very optimistic about the latest one.)
Writing an excellent book, and writing it well doesn't pay the bills.
It takes too long, and if the marketing department doesn't understand it, you'll get no support. It doesn't matter how good the book is if it doesn't get to Amazon and store shelves. I earn as much (or more) putting a buy-through link on my site to amazon as I do writing the book in the first place. Why would anybody sane write the book if marketing it on a web page is just as valuable?
Still, a part of me believes that quality matters, that the marketplace will eventually recognize excellence, and that even the industry really wants to promote quality (as long as it sells.) I'm hopeful that positive Amazon ratings will eventually turn into meaningful sales, and that even people who buy Dummies books deserve great writing - a combination of useful skills and insightful fundamentals. I'm going to keep writing book I'm proud to have on my shelf. (None of mine are on your shelf, but maybe they're on the back shelf - grin.)
Ahl ROCKS. I've written two game dev books trying to be true to his spirit but actually teaching something along the way.
two-pi on April 29, 2008 1:11 PMI'd love to rectify the horrible state of programming literature out there. I'm a graphic designer and would love to apply informational graphics that explain computer programming concepts in a visual way. But alas - I am a novice programmer not capable of doing it on my own. If anyone out there wants to team up with a designer who gets geeked out as much as you about technology, let me know. You can find my contact info at www.conartistry.net. (don't want to post my email here for privacy reasons)
---
now for my rant
---
Finally, someone who sees the horrible state of programming literature out there! I have been trying to learn computer programming for years and have gotten nowhere because of the shitty "books" out there. 99% of the programming books don't make sense to a newbie as they make congnative leaps and skip over minute, but important information. I am a graphic designer, and also love technology and want to know how gizmos work. Despite my interest, dedication, I have not become proficient in the ways of the coding.
As a designer, I think visually and am trained to communicate clearly. These two characteristics are not common among a large percentage of engineers. Not to stereotype here, out of all the engineers I've met personally, although they are great people, usually dont' have a good aesthetic sense, and they tend to communicate in a way that I percieve as unclear. Perhaps they make sense to other engineers. I think There are relatively few people who possess design and programming skill sets (compared to those who only have one skill set) at a high level of proficiency. Therefore engineers probably think and communicate in different ways from us non-engineers. A good computer programming book also must be written by someone who is a good teacher. One must possess the knowledge, be able to write well, AND have the ability to teach. There are very few people who can do all this at once. Thats why the books all suck.
The rare moments where I did find a good book, it was written by two people with similar interests, but different educational or vocational backgrounds. And sometimes I'd find a good book written by a designer/programmer. I even read one or 2 good computer books by a programmer. "So he's read all these books, why can't he program?" you might be asking yourself (if you've read this far). The answer is this: programming is just hard. It may come easy to some, but not me, I just dont' think in the way that I need to write code. I may think that way one day, but I'm not there yet. I have yet to meet or read work by someone like me who is a good programmer, a good writer, and a good teacher. I can't just read and make sense of this stuff on my own, I need the aid of a teacher or friend to explain things in a way that I understand.
Shlomo on April 29, 2008 1:13 PMMy entire dev/test and "program manager" team participate in a monthly book club. The books we've read so far: http://www.amazon.com/Carpoint-nbsp-book-nbsp-club/lm/R2VUI9C9YAYDDY
But it's hugely challenging to find a new book each month. I look forward to stackoverflow.com fulfilling its promise!
Apparently programmers aren't buying technical books anymore then. The internet has made information abundant albeit generously redundant and infinitely variable in quality just like the invention of the printing press in it's day. It's no different to the bound pages of the literary world just bigger and faster. The internet is far more searchable, you can seek your info-fix in a finer grained manner. A book needs to be sourced, opened and digested. A web page can be sought appraised and used or ditched with a fraction of the effort. A book is a banquet where as the internet can be grazed. But you can't take the internet as conveniently to the bath or your bed. Also books don't disappear in a puff of smoke when some navvy chops the line to your local exchange by mistake! Stereo typically hackers have little regard for bathing and bedtime. But thanks to printers you can turn bits of the internet into your own tailor-made book for off-line consumption, it's like on-demand TV. Yeah 'On-Demand' that's what it's all about.
hollystyles on April 29, 2008 1:46 PMI must be the exception to the rule - I read books *constantly*. Not just about programming, either - math, physics, electronics (or in fact anything remotely related to computers)...
I'd like to hope that there are a few more out there like me.
I still prefer books over learning over the internet. The internet is a source for quick fixes, but with the good books (and you're absolutely right, most programming books are an utter waste of paper) I don't just get whati should stick into my code to make it work, but rather the prinicples upon which the language is based, how it works, and a list of commands, variable types, and their properties which allow me to play about and instantly grasp what i am doing.
In fact, thinking more on it, I think you'll find that the best programming books consist of that: a general vocabulary of the language in question, and the general principals on howthe language works.
You can't get by with just a sheet of terms such as print, else, if, or, etc... without understanding the logic behind it, any more than you can get by knowing that a language was developed to give you a variety of means to object oriented tasks, without knowing the difference, for example between the variables "int" and "string".
The Postindustrialist on April 29, 2008 2:21 PMI was pleased to see "The Design of Everyday Things" on your bookshelf - one that has been on mine since the early 90's university sojourn and one that pre-dates most of Nielson's usability writing (although ...Everyday Things was not about software in particular). Cheers to the design of everyday things - which now does include software!
Brad Mead on April 29, 2008 2:31 PMJeff,
All the books that you mention are relatively old, not of course to imply that they are any less relevant. I was wondering which books from say, the last three years, you would recommend?
Adrian. on April 29, 2008 3:18 PMProgramming books are relevant for at best 2 years.
After that, the libraries have changed, the languages have changed, heck, the platform may well have changed.
If I need particularilly arcane knowledge for a project and I can find a book that covers it in quality depth, I will buy it so that I can read it a dozen times in a way that computer reading just does not afford. HOWEVER, many other computer books are just not worth the price.
I love books, and I have a library with fiction down one side and technical references down the other. Sadly, the book on computer graphics from 1985 is probably one of the least relevant reads you will ever have. Happily, the math and physics text books are still mostly relevant, as are the dictionaries and grammer guides (well, ok, grammer guides are really less useful in today's devil may type world..)
That said, computer books are way to darn expensive for their expected useful life time.
Xepol on April 29, 2008 3:28 PMCurrent literature has the low end covered. Lots of fluffy text and the same repeated drivel.
At the upper end it's a desert. A wasteland, and while some books have promise, more often than not they're just a mirage.
There's a definite lack of quality books that talk about the bigger picture. Mostly they're just waffling theory without evidence they know what they're talking about, or at least without being able to communicate that knowledge without appearing to be waffle. How do I build it, and how do I know I've built it correctly? Am I just creating an enterprisey WTF?
Similarly for high end technical books. I want the facts and only the facts, and I want to read from someone who is smart and learn something. I want to know caveats, I want to see properly written code. Funnily enough one of the best books I read in the past few years was an ExamCram book for an MCSE. It was all facts, delved into edge cases, and didn't mince words. A traditional 'professional' book would have been 5 times larger and probably missed out the important stuff.
Too much good knowledge is being lost, and reading over and over how to bind data to a repeater or set a label control isn't cutting the mustard.
Bookie on April 29, 2008 3:33 PM+1 for the "The Inmates Are Running The Asylum".
And if someone is doing serious UI work the green book next to it on the top shelf is also recommended (that is Cooper's "About the Face 3" if I am not mistaken).
> All the books that you mention are relatively old, not of course to imply that they are any less relevant. I was wondering which books from say, the last three years, you would recommend?
Is this a joke question? I'm concerned. I can't tell.
Jeff Atwood on April 29, 2008 3:49 PMNo "Writing Secure Code" up there?
Your list closely resembles my own, therefore you are a genius!
I'd add "Ship It!" from the Pragmatic bookshelf and "The Little Schemer" from MIT Press. "Ship It" has strategies for dealing stagnant workplaces and how to achieve change in them. "The Little Schemer" is less about the Scheme/Lisp languages and more about teaching recursion. Which is an eye and mind opening concept in computing. I'm still working my way through "The Little Schemer".
Scott on April 29, 2008 4:01 PMThis seems a good place to ask... can anyone suggest a good C# 3.5 (asp) book?
My experience up to this point has mainly been with VB.net 1.1.
deadcat on April 29, 2008 4:51 PMThe great thing about books is their inherent random-access nature; open a book and you can easily choose page 34 or instead page 759.. close your eyes and pick any page... this is somewhat different with viewing on the PC and/or in .pdf form- it's more about the experience too... Screens, even the best of them, can cause strain on the eyes- but I find this not to be the case with paper and ink.
What I also like about most of your selection of books is their transportation value- they're of the size that you can physically carry them in your briefcase or even roll them up and stick them in your back pocket. It's refreshing to know I own a few of the books you've got, purchased one book from your list just now that is a long time coming and super popular and got another one from your list put away on my wish list.
Patrick on April 29, 2008 4:54 PM
Most of the programming books suck. I mean they just rehash stuff that can be found in the documentation or MSDN. For example pick any book on ASP.NET. It's the same stuff about the controls and how to use them. The web page life cycle.. blah blah.
Why did you spend any time coauthoring a book which you don't want people to buy? Wanted to see your name printed?
I stopped buying books long time ago. Now I just browse them at the bookstore and return them to the shelf (actually I leave them by the comfy couch :) ). Yes I return them because they are not worth buying. Reminds me of music albums. An album might have one or two good songs and the rest is rubbish. Same with books. One or two good chapters.. or a few good pages only!
I need good stimulating books. Books like the SQL puzzles by Joe Celko. Give me a puzzle and show me how different people solved it.
Effective C# was a good book. Tell me how NOT to do things.
Abdu on April 29, 2008 5:04 PMJust my 2 cents, but the majority of programmers and designers I know (including myself) have mini libraries. There are only a couple of my books that I have read cover to cover, but I have used all of them on occasion as valuable resources. Most of the free resources, like the ones on the web, do a fine job in showing the how, but they do a horrible job in showing the why. Much of good and efficient coding comes down to work flow. Its hard to learn that work flow from a four page online tutorial.
Jason on April 29, 2008 6:36 PMIt seems obvious to me that your definition of programmer is quite different from mine. Even though those top 5 are great books for programmers, they are too much software engineering-oriented. My point is, they do not have more value to a programmer than SICP, K&R's C and (yes) Knuth's TAOCP. Programmers need to learn how to program, and that is done by reading up on as much code and different kinds of abstraction they can. A programmer would be just fine if he didn't know jack about UML or software development process. It is much more valuable to a programmer, from the _programming_ point of view, to buy and read---even if parts of---TAOCP than it is to read Peopleware, for instance.
Diogo on April 29, 2008 6:57 PMJeff,
*So* nice to see that you have Tufte and Norman on your bookshelf alongside other books about programming. I've been recommending them both for years as mandatory reading for programmers, and I get blank stares from almost everybody. First: who? (Maybe half have heard of Tufte but nobody has read TDoET). Then: "But...they're not about /programming/".
Yes, Virginia, programming is about design. And thinking abstractly about design is something most people never bother to do, but it is something that differentiates the programmers from the technology bricklayers, and you can spot one from the other pretty easily just by asking if they own a copy.
Daren on April 29, 2008 7:28 PMYou are not at all interested in computer science (as you have explicitly declared, which is understandable since you are a self-taught coder).
There's nothing wrong with that, in itself.
There *is* something wrong with you pretending to be some kind of hotshot pundit about programming, when you have already declared yourself to be a mere coder.
Your blog seems to have very wide appeal; apparently there are a zillion CRUD coders out there who view you as God of hacks.
Does that help your ego? You know the truth.
You know in your heart of hearts what is, and is not, true of you: your technical expertise is zero compared with the real experts.
>> All the books that you mention are relatively old, not of course to imply that they are any less relevant. I was wondering which books from say, the last three years, you would recommend?
>Is this a joke question? I'm concerned. I can't tell.
Actually this was a serious question, perhaps not well phrased.
The top five books that you have listed are all at least 3 years old;
-- Code Complete 2 - 2004
-- Stop Don't Make Me Think - 2005
-- Peopleware - 1999
-- Pragmatic Programmer - 1999
-- Facts and Fallacies of Software Engineering - 2002
I was enquiring as to whether there are any books that have been published recently (2006, 2007, 2008), that you would recommend which may have the potential to be timeless classics.
Surely the whole computer book industry has not put out complete drivel since February 02 – 2004.
I ask this question, as my sorting the wheat from the chaff reading time and money over the last couple of years has been significantly reduced. As a result, I am always looking for good recommendations for new books in the field to read.
Adrian. on April 29, 2008 9:08 PMYou and I share a lot of the same books. I see many that I own, in your collection. I have about 7 or 8 shelves worth here. In your collection, I HIGHLY recommend the following for everyone:
Peopleware - You'll read this and swear it was written about your company
Code Complete - Absolute must
Applying UML and Patterns is fantastic
The Head First Design Patterns book is pretty good, and the Gof book is classic but a little more academic so a harder read for people
Rapid Development is great
Showstopper was a really enjoyable read
And I'm laughing at the "BASIC Computer games" and "More...". I used to have both of those; and all games were input onto my Atari 800, and my school's PDP-11. Yikes! :)
Also recommended, but I don't see on your self is Feature Driven Design. Interesting project methodology book.
Funnily enough I've bought way more programming books recently - now that many of them are coming out of my own company's revenue - than I did when I worked for a corporate. Spending money was too much hassle in the big firm!
One "classic" book that I don't feel fares as well as the others is the Pragmatic Programmer. I own it and have read it, as well as Code Complete and some of the others on your bookshelf but PP just doesn't seem to hold up on re-reading as well as some of the others. I need to maybe read it again and figure out why.
To the person who was asking about good .NET books, I've had good results with several of the Apress books - CLR via C#, Pro C# and the .NET Platform and the Windows Forms and Custom Controls one is quite good too.
Julian on April 29, 2008 9:34 PMI only read books when I am bored or have downtime between jobs. Some have substance others, once read, lose their value and begin to take up valued shelf space.
Internet search whatever you want to learn and you'll have resources for any topic right at your finger tips. Want a book about it, buy a printer and a stapler.
Kazimir on April 29, 2008 10:51 PMfirst there was dialup access I had to pay for per hour (aol, prodigy...)
I was very glad my university gave me free access
then there was flat-rate per month, or "AOL FOR 200008475 free hours for the first month"
then, BROADBAND - YAY!
Now everyone has access to everything. First, programming books. Tomorrow, ALL BOOKS! hehe
Gregory Magarshak on April 29, 2008 11:59 PMTo learn C, even as a first programming language "C for Dummies" is brilliant. He even offered free extra chapters online because they wouldn't fit in the two volumes (and claimed he wanted it bound & sold as one book but couldn't publish that). It's what I learned from, and I've had offers from the big players with infamous hiring practices fresh out of school.
It does have some concepts that are widely applicable, too, but the focus is on learning how to make C go. Not how to make C go efficiently, not how to make sound architectural decisions (beyond a certain point). It's a bit dated, with sample code that only runs in pure DOS with compilers using long-deprecated functions and formats that aren't valid C99. But it does what it advertises and it does it well: read it and you will know C thoroughly (and have a very minor grasp on what C++ adds/changes) and will be able to understand strange edge-cases and and the strangest, most convoluted code; fake classes like a champ; understand common data structures and fundamental algorithms like quicksort. I have never found pointers in the least bit confusing; maybe I'm far more brilliant than these Internet people, or maybe this guy just explains it well. Or both. I think both :).
I would never claim that every, or most programmers should read this book. It's not anything close to Code Complete in importance. But I would definitely recommend it for somebody trying to learn C, despite the datedness. And it's far more entertaining than any of those other books.
Ens on April 30, 2008 2:38 AMHi Dude,
hows the Job at Amazon going? ;)
Steve on April 30, 2008 3:13 AMHi Jeff,
I read your blog for some time (almost a year) and I love it. But I just had to say; I disliked your comment about PHP. I know it was a joke, but still..
I started with PHP (as a regular script-kiddy ;), went back and forth between a whole lot of other languages (including REAL languages, such as Java), but am now back to PHP again. Why? Because the power of PHP is endless. And they keep developing the language, which is a good thing.
I just wanted this off my chest, because everyone who seems to call himself a 'good' or 'respectable' programmer seems to dislike PHP. But I challenge every one of those programmers to get the best out of the language. Because what most people do with PHP might be lame, but what you actually CAN do with PHP is certainly not.
P.S: I blame the general PHP books for giving PHP its bad name. There are so many PHP books where the scripting (easy hack-fix mentallity) is explained, but almost none seem to care about the great OO-sides of PHP.
Things will be better for us PHP-programmers one day :(
Jan Willem de Birk on April 30, 2008 3:19 AMThe quality of technical books varies, from author to author, from publisher to publisher. Around the time of the original Internet bubble, like the tech market, the book market was flooded with crap.
I think the typical quality has improved, but there's still a lot of useless stuff out there. You don't need books on syntax -- web references, rich IDEs, robust compiler messages and Intellisense-like features take care of syntax.
There are, however, certain software books worth reading. GoF, Fowler, most of the Pragmatic Bookshelf, McConnell, etc. There are also more technical books on specific products worth reading, like Richter's stuff on .NET that really gets deep under the hood.
On that same note, there are LESS technical books that every good developer, or anyone with any sort of ambition, ought to be reading, like The Innovator's Dilemma and Crossing the Chasm.
Andrew Badera on April 30, 2008 3:46 AMI read alot of programming books and can't remember any language that i've learn't solely with writing code. My style : read about the language , write some code and optimize code.Tech blogs are gradually replacing programming books.Is that a good thing ?
gogole on April 30, 2008 4:27 AMI found the Head First Design Patterns book to be a very easy and interesting read.
The Art of SQL was also a very useful book.
Gio on April 30, 2008 4:34 AMMy view is there are four types of programming books ...
1 : Overview how to - Most of your top 5 : no specific language (maybe for examples) but lots of explanation of why : Buy to Read
2: Getting started - Dummies guides, xxx in 48hrs etc - Mostly good books, but read once and throw away so better to read online? : Don't bother? with a very few exceptions (The C Programming manual)
3 : Reference books - (overlap with 1) in depth algorithms and guides and lookup tables : Buy to keep
4 : How to Guides : Cut and paste step by step guides - Usually badly done, out of date, and mindless with no explanation and so worse than useless (except in a very few cases) : Avoid!
Jaster on April 30, 2008 4:36 AMUsing online tools is much quicker.
Acronyms on April 30, 2008 5:04 AMWhen I started programming, I read MANY books. Over time, as my skills improved, I found I read fewer books and used the Internet more. Looking back, I think that once I had the base skills I needed, learning new languages was just a matter of adapting to different commands/syntax.
TheMirthfulSwami on April 30, 2008 5:17 AMI found a lot of my big thick "reference" books at goodwill for about $2 each.
rvanderkooy on April 30, 2008 5:25 AMMostly I refer to official manuals, but I also read books.
Vikrant on April 30, 2008 5:30 AM"And yes, it will always be better to have a paper book of 900 pages than a big pdf file to read in a screen."
That's entirely a matter of habbits and opinion. If you just want to go read your book on the beach sipping your drink and look like in a movie.. well, you have no other choice.
If you want to search trough books concerning your probmlem at hand, WHY would you have to get up from the computer and start flipping pages if instead you could enter a search and have the references list of WHOLE LIBRARY!!!
I would say there are (still) SOME uses for books printed on paper but I would be brave enough to say, that most of them are "historical" or traditional nature. Books on paper will be something you will see only in museums in 50..100 or so years, when everything will be digitized and recallable on devices with more convinient user interfaces.
Even today books are printed "on demand".. which already tells me that it's a thing of a convinence, not necessity.
Programmers should be first to drop this aristrocratic abstraction of information as "books" and start seeing well packaged chunks of "the flow", "learning sessions", "verbal experience" or whatever is suitable according to content. I understand this is a paradigm shift that will not be well accepted until generation (or two) changes.
This does not stop programmers as technologycally un-challenged people to adopt such attitude YESTERDAY.
Or as your article already kind of confirmed, they mostly have done this in one way or another.
So this is "A Good Thing"(tm). Programming books are prime candidate for trying out digital distribution models, go with it! And take your publisher on the ride with you.Then complain that sales have dropped.
Right now your article mostly says:"Look, I'm cool the old way! And you should be too, because... emm.. ojeah! reading stuff on the computer display is shit!!"
My proposal: buy a better monitor. It probably costs only 2..3x more you paid for your current crap.
Tom on April 30, 2008 5:34 AMPersonally I find programming books to be a great resource for building my programming skills/knowledge. I especially favor O'reilly books.
steve on April 30, 2008 6:10 AMfrankly, i don't think you can beat a good book when starting out in a particular technology. you can ramp up much quicker cranking out a book than piecing information together on the internet. for the quick answer, the internet is the best.
you can also gauge someone's knowledge in other tech fields by the books they have on their shelf. for example, i probably wouldn't hire you if you're an oracle dba and never read a tom kyte book.
JRock on April 30, 2008 6:26 AMOreilly books are the best!!!
Ron on April 30, 2008 6:45 AMRelease It!: Design and Deploy Production-Ready Software (Pragmatic Programmers) (Pragmatic Programmers) [ILLUSTRATED] (Paperback)
by Michael Nygard
It changed the way I think when I am programming. It helps me keep the big picture in view.
Mark on April 30, 2008 6:51 AMPeople don't read books because they don't care about why things work the way they do. Like any other profession or endeavor taken seriously, one needs to know not only the what, but the why.
john on April 30, 2008 6:52 AMI hear a lot of comments about the price of coding books. I am not sure what city you live in, but I live in Milwaukee, WI and have checked out your top 5 books (and many others) from our public library for free. True I don't have them on hand as a reference, but that is what the internet is for. I am looking more for high level concepts. They also give me some direction in my internet searches.
Kurt on April 30, 2008 6:56 AM> My proposal: buy a better monitor.
Uh-huh... where can I get a 1000dpi high contrast display that requires no power to use, that I can scribble on and can be stuffed in my bag, thrown around and then read in the bath?
I'd love to hear your example of a 'better monitor'.
"Man books are expensive! You can read this stuff just as easily for free on a $3000 monitor."
I like O'Reilly Safari and Google Books - very useful for looking stuff up quickly, but I wouldn't want to read through all 960 pages of Code Complete on a screen - no matter how good the monitor was.
Can you honestly say you would?
Graham Stewart on April 30, 2008 6:59 AMI've been wrestling with this train of thought for the past couple months. Not only are many developers not reading, some are refusing to embrace technology. I've met developers who don't own computers, refuse to even use IM etc, and who don't read period. When talking with these developers you discover that most of their practices rely on voodoo, superstition, and 3rd party information. It's terrifying!
I've been toying with the Knuth books, they look so fun, but in reality I don't know how practical they would be. :)
Adam Kahtava on April 30, 2008 7:04 AMFor anyone using visual basic for windows .net programming, by far my favorite book is:
Visual Basic 2005: The Language
Thank you very much for this post.
I set out looking for some great literature on the WHY as opposed to the "Do this and that and Boom!" This post came at just the perfect time.
Lake
I have been programming for over 25 years now. I remember back in the early days that the only way you could learn anything was from books. We didn't have the internet to go to and lookup how to perform certain functions, etc. Luckily that habit has stuck with me over the years and I now have a rather decent sized library (including a couple of old machine language books for the Commodore 64 and 1 book for the Timex Sinclair). Maybe one day I'll open a museum and make my years of being a pack-rat pay off.
Intoxination on April 30, 2008 8:31 AMI have yet to meet a good programming book. I own a dozen or so, and I have found some good references now and then, but aside from the introductory books I've not found one that can teach anything.
Nowadays there is so much online as far as reference material for various languages that it seems almost silly to buy a paper version which will be outdated in a few months anyway.
I read a great deal, but I have never seen a programming book I find useful outside of reminding myself of syntax or features I've forgotten the proper name of.
Alex on April 30, 2008 8:37 AMWhen I do read books its for: beefing up for certifications, tired of reading off a screen, very brand new programming concept languages (like linq and WCF), or when I don't have Internet access.
I also think you forgot to mention one good reason why most programmers don't buy books. The stale fish concept. Most tech books can't update themselves and who wants to date themself by having books on languages that are extinct.
Will on April 30, 2008 8:38 AMI'm reminded of a good analogy:
Reading on a monitor is like reading the small text on a light bulb while its on.
It hurts my eyes and gives me a nasty headache to read 100's of pages on a computer screen. Books are no problem though, and in fact it's been proven that people are typically able to read books faster than text on a screen while maintaining the same level of comprehension.
This is why books will never go away - at least not until we can create some sort of ultra-crisp elecronic print that doesn't require a backlight.
KG on April 30, 2008 8:50 AMIt's because of the internet, not because programmers don't want to read books. Mainly all the content found in books can be found scattered on the internet, so why spend $40 for a book, when searching the internet is free.
Jon West on April 30, 2008 8:51 AM???
wm on April 30, 2008 8:55 AMI am really not sure how it is possible to gain absolute knowledge without reading books..
Saj on April 30, 2008 8:57 AM@Jan Willem de Birk
PHP gets no respect because it's simple and nobody gets paid big bucks to setup a web site on a LAMP server. No, see, corporate web sites require an application server. And a web server. And an Oracle server. We need tiers! Each tier needs its own server! Ok, so PHP can do tiers, but it all runs well on a single server and you only need to separate when you get big. I thought you wanted a real enterprise web application? Enterprise applications all have many servers.
Scalability. Don't forget about that. Ok, so you only sell a dozen widgets a day on your site now, but what if you're the next Amazon.com? You can scale your tiers and sell ten million widgets a day! First we'll scale the data tier because the advanced connection pooling doesn't actually help. Two more in a cluster ought to do it. Then we'll scale the application tier because the application server provides advanced session and failover management. That management adds some overhead, so we'll get two more servers instead of just one more. Alright now this cool template abstraction we used for the web front-end tier is pretty slow so we'll add another server there, too.
Man, it's a good thing we didn't choose PHP for this because PHP doesn't have an application server to manage all this scaling. Some people talk of the "share nothing" approach to scaling, but I've never done that and I think it's voodoo.
Dave on April 30, 2008 9:13 AMAnother thing I'd like to bring up:
I wish I didn't have to work, so that I could spend serious time reading tech books.
On week days, after a long hard day, the last thing I want to do is more tech stuff at home. I do some reading and programming side projects on weekends though - but if that's all I have it takes a year to do anything that I otherwise could easily have finished during a summer break (if I was still in college).
KG on April 30, 2008 9:25 AM"The Mythical Man Month" should be on the top list, why you haven't included it?
I think the thing that makes the valuable books valuable is perspective. K&R doesn't just teach C; it teaches a useful way to think about learning a language, a useful way to organize a book, and a useful philosophy of programming (see also 'The UNIX Programming Environment'). 'The Pragmatic Programmer' is a terrific meta-example of this kind of writing. There's an attitude of curiousity, professionalism and craftsmanship that isn't necessarily the focus of books like 'Learn <Blub> in <n> <units>'. I sought out one of Jerry Weinberg's PL/C primers just to see how a professional programmer thinks about programming and about teaching it, and was richly reward for the time (and thanks, 'Amazon Used'!) At the same time, there's a place for the more prosaic 'how do I foo a whatzit'. I love the idea that stackoverflow will try to mediate between both worlds.
Pat Morrison on April 30, 2008 10:31 AM@Dave
I work in a company where they've build an entire Enterprise server out of PHP. I help develop on it. The company sells their software (not only the server in PHP, but also some C++ stuff) to everyone who needs a media solution (publishers, newspapers, etc). And believe me; it works. I bet that 8 out of 10 papers/books/magazines you read (either online or printed) are made with that software..
So in my opinion; everything is possible with PHP. And it sells, once proven ;)
JW on April 30, 2008 10:47 AMHey Jeff, how about some comment modding or maybe even paging?
It's getting a little crazy here, 90+ pages of comments for a single blog.
I do agree with this one, I think the big difference between picking up a book and just trolling the internet is that a good book will provide information you can use but may not have looked for.
For example, there is a guy here who became our new DBA. At first he made some improvements just by regularly reading a few blogs and picking up some tidbits, but it wasn't until he read a few good Oracle books cover to cover that he really took it to the next level.
Googling for code samples is typically reactionary. You're looking for a solution to your problem, and you'll only find results that fit into your search criteria. There may be some great solutions that you haven't even discovered because they don't fit what you're looking for in that narrow list.
Dave on April 30, 2008 10:48 AMA startling number of people commenting here seem to have accepted the fantasy that knowing how to look things up is as good as knowing those thing.
This is a dangerous fantasy because it severely limits how you think about problems. If you represent all your knowledge as a tree, the stuff you google for can only form the leafs.
As an example, if I need to change how my drives on my Linux machine are mounted I'll look up the syntax I need in "man fstab". Easy. Because I already know the exact piece of knowledge I'm looking for, and there's no appreciable sub-knowledge. (The second item on a line is the mount point. I can't learn that in any more depth.)
If I didn't ALREADY know the name of the file system table, it would take a few minutes of awkward searching to find it, but I'd still be close to the knowledge I need.
If I didn't ALREADY know that there WAS a file system table I would have to start my research by first researching the mount command. Not only are we increasing my research time for a simple task, but Already we're pulling back to the point where we're running the risk that it wouldn't even occur to me that the data I needed to change was stored in a human-editable file somewhere.
If I didn't ALREADY know that I had more one device in my filesystem that could be mounted and unmounted, etc, then my problem (which can be solved with a one-line change in the fstab file) could seem insurmountable. I would not even occur to me that the correct solution might exist so I couldn't search for it. I would probably wind up thinking up some convoluted solution involving symlinks or something. (Assuming I was aware of their existence.)
This sort of coding-by-google approach has filled the archives of thedailyWTF.com. Are the people who write the code featured in TheDailyWTF some sort of knuckle-dragging low-IQ cavemen? I suppose some might be, but most of them just lack an understanding of their field, and depend far too heavily on just-in-time googling to figure out whatever crazy thing is in their heads because they DON'T KNOW THE CORRECT THING TO LOOK UP.
Andy on April 30, 2008 11:45 AMThanks for the article. It's good. I have blogged about it, adding my own comments, here.
http://ploneglenn.blogspot.com/2008/04/why-johnny-coder-doesnt-read.html
Glenn on April 30, 2008 12:06 PMMaybe you can make a 'Best Buy Guide' section or a 'Must Read' section where other programmers can vote for their favorite books?
Willem on April 30, 2008 12:14 PMThe Tufte books are the best. I noticed they are first on your shelf.
Two of my favorite books that you're missing are Stroustrup (C++) and Stephens (TCP/IP Illustrated). If you get Stroustrup (3rd edition or later) I think you'll find it refreshing, maybe C++ won't be as painful as you thought K&R was (from your podcast). It's more than a language primer, it's a guide about efficiency and style. I still learn something every time I pick it up.
I have Safari Online; it's better than books because you can do a full text search. And cut and paste code (good for tutorials). And you can read part of a book; if it turns out to be bad, you only wasted your time, not your money.
Joe on April 30, 2008 12:25 PMI've read Code Complete and agree that it is an excellent book with information that you will not find on the Internet--at least not in one easily accessible location. I would like to read the other books from your recommended list too.
Another Joe on April 30, 2008 12:37 PMI can't agree with you more. The best way to coding is to actually try it and get your hands dirty.
Julia.
PRNewsExpress.com
Julia on April 30, 2008 12:52 PMI can't agree with you more. The best way to coding is to actually try it and get your hands dirty.
Julia.
PRNewsExpress.com
Julia on April 30, 2008 2:03 PMAlso, those of you who have ACM memberships, it appears that all of the books listed except for "Peopleware" are available through your ACM PD/Safari.
Jason Mock on April 30, 2008 2:13 PMI have a lot of programming books but I will admit that I buy very few anymore - mostly for the reasons already mentioned in the blog post. I didn't see one key reason though: any given language/framework/technology book is quite likely to be out of date within six months to a year, yet online info often stays much more current. I still occasionally go back to even out of date books for reference, but once I am up to speed I rarely pick it up again.
I do sometimes pickup language/framework books when I want/need to get up to speed on something, but I am fairly picky about what I choose and I often buy used copies instead of new copies. I am much more likely to buy a good book on design or best practices than I am to buy a book on specific technologies.
One of my favorites hasn't been mentioned:
Object Oriented Design Heuristics by Riel - very academic sounding title, very down to earth content applicable to most OO languages.
Another that I think I am going to buy is "Design Patterns - Simply". I like their online content and their approach:
http://sourcemaking.com/design_patterns
I do have Code Complete, but most of it seems to be practices I have already learned - I wish I had read it first before having to learn them the hard way. It is the 1993 version, but I don't see the passage mentioned (it might be there somewhere - I am too lazy to do more than a cursory search, another benefit of online material).
Finally, I am sure someone has already mentioned it, but just because we don't buy many books anymore doesn't mean we don't read - there is plenty to read online. Also, actually getting your feet wet with a technology is superior to just reading about it - and necessary.
Lauren Bish on April 30, 2008 2:16 PMThis has probably already been said but I don't have time to read all the comments first. To "learn programming" you have to have some continuity in what you're learning, you don't get that with 500 word How To's or posts, or at best 1000-2000 word tutorials on-line. The internet is by nature a huge source of fragmented information that requires a lot of time searching in order to knit together in your brain a cohesive, unified (and useful) bundle of information. I find I get a lot more of the basics, background, fundamentals in my books. I use the net for the surgical precision I need to fix my problem du jour, one-off exceptional-case solutions, problem resolution, da da da, it was made for that. But to find a single place to sit down and learn in one (maybe two) book what would take you 100 web site hits is well worth the $39, $49 I pay for a book. Besides, I'm relying more on the net for answers these days I find I'm losing my sharpness. It's like being given the answer key to those math problems you slaved over in middle/high school. I see more and more the wisdom of witholding that, you have to think. With the answers, err Web, I don't have to think, I find someone else who thought for me and copy their code - it's great! and bad. Not sure if books fix that problem, but I know with the web at my fingers, less thinking and more copying is happening, not just me, ask around.
Kevin on April 30, 2008 2:27 PMMy favourite interview question is "what is the name of the last book you read about software". My favourite follow up question is "what is the last software book that you bought".
Usually, the answer to the first question is "uh, ... I can't remember", or worse "uh, ... it's been a while since university".
Answers to the second question are almost along the lines of "I can't remember when I last bought a book on software".
This is all very sad.
I have purchased and devoured books on programming and software on a regular basis since the mid eighties. I no longer buy a book a quarter and I have long since moved on from how-to-use-technology-X books.
These days I am looking for books to change the way I think so pure technology books don't cut it any more.
I suppose this is an experience thing. I'm past the point where I need books to tell me how to use something, I now use books to see how I can learn new ways to think.
Books with new, or challenging ideas are few and far between at the moment.
Also, I have become just as guilty as everyone else at using Google as my crib sheet. I no longer attempt to hold vast amount of information in my head about APIs or cryptic syntax since I can find that information *very* quickly.
Finally, I still have a copy of the 2nd edition K&R C book, printed on high-quality paper. I think it is probably one of the best books ever written on an language. Everything about the language is there albeit only ever mentioned once.
I remember a colleague of mine once telling me that how much she hated the K&R book. For her it was a terrible book because there wasn't enough reinforcement of key ideas throughout it. She found it hard to find things in the book. She preferred one of those 500+ page books on C that were popular in the early nineties.
The thing about the K&R book is that it is meant to be read like a novel. It is not a manual. I think that this is why I still find it to be one of the best language/technology books ever written.
I suppose, more than anything, the K&R book is about how you think with C. It is far less about how you write a program in C.
Gordon J Milne on April 30, 2008 3:27 PMJeff,
This blog made a great read. It would be great if you could take a look at another problem which programmers need to look at. This would be the approach on taking up a new technology in a time constrained project. An analogy would be the following:
If you are asked to learn to drive a car within a specified time, does it make sense to spend some time and effort to learn rudimentary ideas about internal combustion engines, gearboxes and brakes? It is entirely possible to drive a car without knowing about anything under the hood. But does having the basic knowledge help in anyway?
I have blogged about the approaches at http://wesleyneo.wordpress.com/2008/05/01/learning-methodologies/ It would be great if you could provide some insights into this.
Thanks,
W.
No new blog today? I'm guessing you're not reading a book but are instead playing GTA4 non-stop...
Mitur Binesderty on April 30, 2008 4:00 PMBig fan of programming books here too. Websites tend to be a mess of someones else's code. But more importantly... you have to know what you are looking for when searching the web, whereas a book lays out everything right in front of you. I cant tell you the number of times I reread through an old C# book and saw something very basic, but new to me. Books all the way. I avoid the web as much as possible.
JAtkinson on April 30, 2008 4:43 PMJeff, I notice on your snapshot of your bookshelf that you have all four of Tufte's self published books. I'm willing to be that a large percentage of your audience (read 'programmers') don't know what Tufte is all about. I'd love to see a note on why Tufte is an absolute *must* read for all programmers (especially if contemplating any sort of computer/human interface).
Thanks for the blog. I look forward to reading it everytime a new article (?) appears.
thomas on April 30, 2008 7:40 PM...and one more thing for Daren...
I have read Norman's TDoET (The Design of Everyday Things, originally published under the name The Psychology of Everyday Things until Mr. Norman realized the bookstores were improperly shelving it with the Psych books). A great book and another *must* read, if you ask me.
your pretty much right, I have been coding for 10 years and I learned basically from trial and error(oringally went through all the intellsense options till I figured it out :P ) and the internets.
mistone on April 30, 2008 9:16 PMLearning principles from a book is good. But the best way to learn how to be a good programmer is to maintain and make directed changes (user specified requests) to your own code. After a few years maintaining your own code you learn how to make it easier to change. After 30+ years of programming I am still learning how to make code easier for the programmer coming behind me to maintain it.
@mistone.. you got it understood.
@jeff... you ever live in cary,nc?
james on April 30, 2008 10:42 PMIs there any correlation between good programmers and books they owned/read?
I had a pleasuring of hiring a person based on his work experience but soon realized that his skills are sub-par.
So I recommended him a reading list - closely matches with your list except my list included 'Design Pattern' and 'Refactoring'. The response I got is pretty amazing - he did not know any of these books. None.
That signaled me two things
1. He did not have desire to better himself.
2. He treats his employment as a job.
I put 'Pragmatic Programmer' as the first book to read but I haven't yet got any feedback from him so I'm going to assume that he did not purchase or read it. He treats his work as job - come in the morning and push some keys and collect paycheck. I don't know how many programmers in the wild has similiar attitude.
I personally believe that we need to separate the computer books to two broadly defined categories - a) API-baed b) know-how
API-based books are the one you will throw out in a couple of years. 'Know-how' is the one you will keep forever.
One critical point to make is that reward factor of 'know-how' books. There is no instance gratification from these 'know-how' books because it is timeless advices. So it won't answer your questions to how to write socket programming. But it will teach you how to design network based program.
BTW - loved the fact that you included 'facts and fallacies'. It is one of my favorite books but not well publicized. I think everyone should read it.
Great list. Also would recommend:
A Pattern Language (Christopher Alexander), just for the sheer joy of reading it. No need to read it all at once.
Working Effectively With Legacy Code (Michael Feathers). Amazing, life-saving book for those of us who have this challenge.
Mark on May 1, 2008 12:13 AMProgrammers, I'm actually reading books when it comes to learning how to program. Its because I'm a newbie, and just started learning OOP languages. And honestly, I don't understand how to program yet. That's why I'm still giving my trust to the books.
Is this the right way of learning programming? Because I don't yet understand the basics of programming that's why I'm reading books to at least give me the basics on programming.
I'm reading Javascript: The definitive guide. I plan to master Javascript first before I go to PHP. Because Javascript is a loosely typed language and it draw inspiration from many OOP languages, I thought that studying this first will give me a sense of OOP.
After I read Javascript:TDG, I'll read another book to further understand how Javascript works and how to code properly.
If you have any suggestions that will help me studying and mastering programming, please tell me.. Reminder, I'm a newbie so don't give me those complicating task yet.
Raymond Ho on May 1, 2008 1:05 AMRaymond: I don't think Javascript is a good choice of language for an introduction to OO. Neither is PHP. Both of them can emulate some OO features, but they are not naturally OO languages.
Also being loosely typed is not a feature of an OO language. In fact strong type-safety is one of the benefits of a good OO language since when you pass objects around you always know what class, super-class or interface they implement.
I think you would be better off trying Java or C# as a useful intro to OO.
Graham Stewart on May 1, 2008 2:49 AMMy favorite book by far is "The Tao of Objects" by Gary Entsminger(sp). Sadly, it's out of print, but using examples in Turbo Pascal and C++, it presents the core concepts of OOP in a rather unique way.
Buck on May 1, 2008 6:12 AMWhat's the book in the picture in the lower right with the white spine?
Stephan on May 1, 2008 6:26 AM"The internet has certainly accelerated the demise of programming books, but there is some evidence that, even pre-internet" -- the passage you quoted cites its source from 1999 -- c'mon dude 1999 is the pre-intenet era? 1999 wasn't even pre-WWW, let alone pre-internet! Also, why are you surprised that most programmers are aliterate when most college educated people are aliterate.
chris on May 1, 2008 6:41 AMYou can get by writing trivial programs from examples on the web. But when you start developing enterprise-level, robust software, you'll need to know your stuff better than what a snippet here and there can provide. Not reading is not just a problem in the programming field. It's a systemic problem across our culture. People don't read anymore. And we're all getting dumb and dummer. If you do have the sense to turn off the mental chewing gum (TV) and pick up a book, you'll seem like a genius to the ditto heads around you. There is a common notion that people from hundreds of years ago weren't as "enlightened" as we are today. I have news for folks who hold that notion: we are a dumb society! Because we let others tell us what the news is, and how to program.
Art on May 1, 2008 7:28 AMas a programmer in the newer generation, i learned that the easiest way to learn to program is to take apart a program without any help. this lets me know what is happening, why that code is there, what it relates to, or if it is just a really huge program that could have a lot taken out of it and work better than before, that its made by microsoft.
Risou Yokubou on May 1, 2008 7:42 AMI have all those books. I guess I should read them.
Does just having those books on my shelf make me a better programmer?
engtech on May 1, 2008 9:49 AMWow, all these comments and no one's mentioned "Structure and Interpretation of Computer Programs" (full text online: http://mitpress.mit.edu/sicp/full-text/book/book.html).
No matter what language or technology you use to develop programs, SICP will make you a better programmer, and critical thinker.
rk on May 1, 2008 12:35 PMI think some of those books are mine.
Scott Stanfield on May 1, 2008 4:45 PMThe subject of this article was news to me, since right now I'm knee-deep in Head First Design Patterns and just finished C++ Coding Standards (which isn't about coding standards at all). I've learned most of my programming skills from books (and by actual coding). The Internet is great, but, unfortunately, for programming information, it actually kind of sucks. For every Good Site with useful information, there are about 200 Rotten Ones. And those rotten ones are, for some reason, easier to find.
Frecklefoot on May 1, 2008 5:10 PMAfter reading this, I think I may dispose of some of my own "programming book pornography". I've only been out of college for a year, but I have a feeling I won't be opening these books again anytime soon. More of a .NET guy now as opposed to C++ and Java then.
Jeremy on May 1, 2008 9:21 PMAs long as my bathroom doesn't have a flat panel screen on the wall, I will read books. ;)
The first computer book I had was 'Beneath Apple DOS'!
tim on May 2, 2008 12:47 AMAs a developer with intermediate programming skills, I absolutely love reading technical books. When grappling with a difficult concept or technique, it is very helpful to consult different explanations by different authors.
Most technical books are available on-line via bit torrent, and I will typically print out selected chapters related to difficult concepts. Then, to assuage my piracy guilt, I will actually buy the hard-copy of a programming book every few months.
My favorite part of programming is those "aha! moments" when everything fits together. I often experience such moments when physically coding, but I also experience those moments when reading through excerpts from programming tomes. Regardless of the medium, such moments feel great!
Aaron on May 2, 2008 7:16 AM> Programmers seem to have stopped reading books.
> The market for books on programming topics is miniscule compared
> to the number of working programmers.
I would not say that programmers have stopped reading "books". They are probably reading less "programming books".
Programming is an activity where it's increasingly more useful to read "non-programming books", dealing with subjects that would have been considered peripheral a few years ago.
(see http://blog.logeek.fr/2008/2/23/all-time-classics-recommended-books-for-software-developers for a list)
Think about the importance of communication, organization, process optimization, mental models (ie: refactoring your wetware) in any software project today!
It's tough to drop down money on some of these books especially when just a few pages into the book you can see that the author never read a book like Code Complete, etc... especially textbooks from college courses.
Pretty annoying having to spend $90 on a textbook for a class when you can see that the writer was just plain awful at their craft.
HB on May 2, 2008 7:58 AMI am a relatively young programmer, specialising in Actionscript.
It is unfortunate but true that alot of programmers of my generation do not read as much as they should. The good ones, really condense many years of wisdom and experience, allowing young programmers like me to improve on their craft very rapidly.
The consolidated concepts and ideas in books makes the knowledge more digestable, making the required leaps in thinking less painful for the uninitiated.
I do admit, that I have some programming pornography on my desk, but i feel that in this case some pornography is better than no books at all!
at the least it shows a respect for the knowledge that books can offer.
kevin on May 4, 2008 10:45 PM
>> definitely, the text [about programmers not reading books] is present [in the original 1993 Code Complete]. It appears at the end of page 760.
> Time machine? A citation from 1999 in a 1993 edition would indeed be prescient (-:
The 1993 edition of Code Complete cites 'DeMarco and Lister 1987', which is the first edition of Peopleware.
Peter Hilton on May 5, 2008 5:48 AMUnfortunately it's a reciprocating problem. Programming books are written by programmers, and those that don't read typically can't write well.
Keith Henry on May 6, 2008 5:56 AMI hate books.i just manipulate things up .
hafizan` on May 9, 2008 6:56 AMInteresting. If a physician said he/she didn't own Gray's Anatomy, or if a chemist said he/she din't own the Rubber Bible, I'd lift an eyebrow. Knuth has the answers for most of your programming problems, superbly written, superbly typeset, and superbly bound. The 2nd editions are a pleasure to read, hold in one's hands, and to drowse over at midnight. I've shown them to ME's, EE's, acountants, and attorneys, and the universal reaction has been astonishment that technical books could be so beatutiful.
What's that between Defensive Design and Website Usability? Designing the Obvious?
Adam Fortuna on May 13, 2008 10:42 AMWhen I look up a coding question on Google, I usually quickly get an answer to my question.
But when I read a book, I get the answers to a lot of questions that I haven't even thought of asking yet.
Also, when I read a book online, all I get is a headache.
That's a great list of books, but I wish fewer people had taken "The C Programming Language" literally and left us the legacy of two-character variable names.
Milligan on May 21, 2008 8:24 AMI miss books that had personality. The books which were written explaining stuff. Not dumbing down, not hiding author's ignorance, not throwing up a ton of reference-style pages. I remember Peter Norton's book on PCs. It was that what made me intereted in computers at the time...
Clever guy on June 6, 2008 2:17 PMbooks that I'm currently reading
SICP
On lisp
Paradigms of Artificial Intelligence Programming
For algorithms there is the book Introduction to Algorithms, and Part II Problem Solving of Artificial Intelligence: A Modern Approach. But for new technologies like user interfaces in Windows Forms it is hard to find good books, especially in Romania. And I also did not find a good practical book about the details of the software development (requirements gathering, scheduling, source control usage, debugging, testing and so on).
Jeno on July 15, 2008 1:36 PM>Good programmers write good code
>Great programmers steal great code
> :)
Then who writes the great code? :P
Business Analyst book recommendations
I have recently started publishing business analysis books. Thats the new thing Analyst do when the retire. These are easy how to guides and they are selling really well on lulu.com. I would like to invite you to visit my website )(www.echoicesolutions.com). On the services and products link you will find information on how to purchase electronic eAnalyst Redbooks. I priced them really low - 25.00. I guess that is why everyone is buying. I have and Introduction To Business Analysis and a Business Analysis Templates books. These books combined are great resources for conducting business analysis. I will like to get your thoughts.
I clicked the books you recommended (I owned 3 of them before reading this blogpost). Funny is that the Amazon's page of Facts and Fallacies of Software Engineering states that "Customers Who Bought This Item Also Bought" and 3 others from your 5 follow. You are a powerfull blogger :-).
The low quality of many books is explained in this article by Philip Greenspun.
http://philip.greenspun.com/wtr/dead-trees/story.html
I don't read so many boooks on programming now. Though I used. I try to focus my attention. For programming languages I look for the definitive books, not the "Dummies Books". For how to program well in a language I look for the experts, like Scott Meyers.
Sadly I do not see the likes of P J Plauger or Jon Bentley anymore.
I used to follow the pragmatic guys and the agile guys, but they been publishing so many books ( compare to two or three really important books for Structured Programming )--makes me wonder if it's all hype to promote themselves, their business and sell a lot of books.
BubbaT on October 15, 2008 11:52 PMCan anyone recommend any good books on embedded programming?
Chris on November 14, 2008 8:49 PMIndeed, there are books to read for everyone, no matter what you're looking for. Take the bookshelves you presented, for example. Perfect for a programmer, I say.
bookshelves on July 22, 2009 2:49 AMVery very interesting and informative post !
Thanks keep writing such great posts
Im a novice programmer. I started out reading "beginning programming" in 24 hours. Cover to Cover. I felt like it really was a good into, even considering i couldn't write 1 meaningful program in any language after reading it, but it was a foundation at least of the terminology. Then on to Python for dummies. It was fun, and i can now code basic stuff. I just get a little jealous of other tech geeks, who are really good at programming who claim they never took a single class or read one book... Where am i going wrong...? I will continue to read these posts for insight....
t.martinez on August 8, 2009 2:48 PMNice list. Hey why all the hatred for the Perl for dummies author? I'm going to buy it just to see how bad it is! :-)
According to the comments of this post http://antoniocangiano.com/2009/08/15/do-programmers-still-buy-printed-books/ programmers (the good ones) still read books and they favour printed copies.
I know I do at least.
David on August 17, 2009 1:49 AM| Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved. |