Just 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.
An 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.
It 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, KR’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.
I 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.
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.
“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
I 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.
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.
Not to mention, it seems that many if not most of the programming books worth reading have the price tag of $100 or more.
I 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.
- 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.
sometimes good books are thick, e.g. “CLR via C#”.
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.
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).
A 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.
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.
Your 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.
I’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.
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
Most 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
Programming 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.
I’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.
Got a book for that?