Continue Discussion 235 replies
April 2008

Rawlyn

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.

April 2008

Nicolas

Ugh. 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.

April 2008

andrew_q

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?

April 2008

unset

I 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!

April 2008

two_pi

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.

April 2008

Shlomo

I’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.

April 2008

Joan_Planas

You’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.

April 2008

DanielC

I don’t see your copy of KR, “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.

April 2008

Malcolm

I 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.

April 2008

paul11

My 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!

April 2008

PhillipG

Now, 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).

April 2008

steve36

I 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.

April 2008

RobinG

That’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.

April 2008

Shy

Jeff, 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?

April 2008

Introspectre

Jeff, 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

April 2008

hollystyles1

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.

April 2008

jpsa

You should get Knuth, though, because its just a pleasure to read something so authoritative and comprehensive.

April 2008

Jose_Simas

I 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.

April 2008

BlueRaja

I 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.

April 2008

Katie

So, 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?

April 2008

GilesR

All these books are available here:

http://safari.oreilly.com/

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.

April 2008

codinghorror

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!

April 2008

Andy

Hmmm, 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!

April 2008

StephenD

Inspired 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

April 2008

TheP

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”.

April 2008

Jonny

Good programmers write good code
Great programmers steal great code

:slight_smile:

April 2008

Tina

I 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.

April 2008

Brad_Mead

I 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!

April 2008

MikeD

You can’t call yourself a Windows programmer unless you have read and understood:

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.

April 2008

Roddy

As 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

April 2008

flukus

On 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.

April 2008

Brian

Interesting. 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.

April 2008

DanielL

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 :wink:

April 2008

Adrian

Jeff,

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?

April 2008

FrancisF

I 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.

April 2008

Benedict

What 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

April 2008

caloggins

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.)

April 2008

Xepol

Programming 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.

April 2008

Bookie

Current 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.

April 2008

Rimantas

+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).

April 2008

codinghorror

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.

April 2008

Roddy

On the topic of C books, I always found Harbison and Steele’s “C: A reference manual” to be better than KR in actual usefulness. KR is a great book as well, but HS is the one that you’ll actually turn /use/…

April 2008

Rawlyn

“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.

April 2008

Scott

No “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”.

April 2008

ChrisC

What 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.

April 2008

Rafa_Vargas

As 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.

April 2008

TarkovskiP

I 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.

April 2008

Aunt_Fritzi

“…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.”

April 2008

ferruccio1

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.

April 2008

Jim

“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.

April 2008

jody1

I 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).

April 2008

deadcat

This 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.

April 2008

Friedrich

I 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

April 2008

Patrick

The 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.

April 2008

burnside

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.

April 2008

Abdu

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 :slight_smile: ). 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.

April 2008

BuggyF

The 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”.

April 2008

Richie

Here 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”

April 2008

tragomaskhalos

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.

April 2008

RobertP

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

April 2008

RobertP

Oops, meant concept above, not sure what concet is?

April 2008

Stew

Great 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??? :-/

April 2008

DavidL

Worst 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:

http://www.amazon.com/Computer-Security-Dieter-Gollmann/dp/0470862939/ref=sr_1_1?ie=UTF8s=booksqid=1209471062sr=1-1

April 2008

John

Just 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.)

April 2008

Evgeny

“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.

April 2008

Howie

The 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.

April 2008

Tim_Almond

To 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).

April 2008

RobertR

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.

April 2008

Chris

VB.NET - that’s really timeless! No, I meant worthless…
It seems the last winter was not cold enough…

April 2008

Rob_Allen

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.

April 2008

Kaosweaver

I 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.

April 2008

Christian11

Many 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.”

April 2008

GrahamStw

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.

April 2008

David_G

I 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.

April 2008

Joe_Beam

I’ve found that it takes at least 5 years out of school before you have the desire to read a book.

April 2008

MoffDub

This 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.

April 2008

Jim

25 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.

April 2008

PaulG

A 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.

April 2008

HB171

What’s up with Code Complete being on the second shelf. That book should have it’s own book case…

April 2008

Jason

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.

April 2008

Larry

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.

April 2008

Diogo

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.

April 2008

monsur

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.

April 2008

Dan

“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

April 2008

CyteShoppe

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.

April 2008

Daren

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.

April 2008

Hutch

Not to mention, it seems that many if not most of the programming books worth reading have the price tag of $100 or more.

April 2008

LorenP

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.

April 2008

cbm

3 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.

  1. sometimes good books are thick, e.g. “CLR via C#”.

  2. 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.

April 2008

Schnapple

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).

April 2008

Steve

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.

April 2008

o_s74

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?

April 2008

MichaelD

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.

April 2008

Pete_S

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.

April 2008

Mike

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.

April 2008

LKM

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 :slight_smile:

I kid, I kid (but I will continue making fun of you for that until you do learn the damn thing :slight_smile:

April 2008

Mike

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 :wink:

April 2008

Santiago

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.

April 2008

als

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? :slight_smile:

April 2008

Kuerwen

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.