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.
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.
â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.
Jeff,
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.
3 thoughts:
- 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.
Jeff,
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.
Jeff,
Got a book for that?