Fog Creek Software
Discussion Board

Best books for programmers

"Code Complete".  Read it BEFORE you learn how to program.

"Programmer's Book of Rules"  by Ledin and Ledin (my version is 1979) ISBN 0-534-97993-9  Again, readi t BEFORE you start writing code for people.

Cindy Brown
Thursday, March 14, 2002

A few more recommendations for developers and development managers:

Under Pressure and On Time by Sullivan (MS Press)- Great for covering the basics of developing software for wide scale distribution.

Slack by DeMarco- Speaks to the need for some "slack" in organizations in order to effectively maintain and leverage human capital.

Software Engineering Economics by Boehm- A bit of a classic, but still relevant for determining how to effectively make decisions using analytical methods when managing large scale software projects.

Thursday, March 14, 2002

Am I the only person in the universe who doesn't like "Code Complete"? It's just too long and verbose for my taste - 50 pages on code layout is at least 49 pages too many.

On the positive side, I really like "The Practice of Programming" by Kernighan & Pike, and the updated version of "Programming Pearls" by Jon Bentley. Both very well written, and neither requires a fork-lift truck to pick it up.

Andrew Simmons
Thursday, March 14, 2002

"Pragmatic Programmer" - I like this one. Read it!

Alex Givant
Thursday, March 14, 2002

Andrew, your not the only one. I dragged it (Code Complete) out and dusted it off yesterday after reading all the posts here and after skimming through, I remembered why I never read it all the way through and why it needed dusting. It's 3 to 4 times longer than it needs to be.  I'll second your vote for "The Practice of Programming". I also really liked the assembler book I got from the Library after I  saw one of the first Midi was the first one on the shelf. Writing a real time application to an early midi interface in assembler is a great intro to CS.  Who knew there were "easier" languages?

Dan Sickles
Thursday, March 14, 2002

I *liked* Code Complete.  Well, no ... actually, I like reading code with consistent indentation and naming rules.  Anything that convinces other engineers about the importance of human-readable code is a Good Thing in my book.

The one book that I didn't enjoy was Godel, Escher, Bach by Hofstadter.  I didn't "get" it, and I fear, there's nothing there to get, short of a pedantic rambling on nothing in general and everything in particular.  It reminded me of the madman in Pi who tried to find patterns in everything ...

Thursday, March 14, 2002

Good to know I am not the only one.
Actually, I bought "Code Complete" mostly because
Joel has it in such high regard. But when I started to read it, I became a bit dissapointed. Yes, it is very informative, but it is a real bore to read.

I love "The Pragmatic Programmer" though. I have read it
several times. It is a very good book filled with insights on how software development should be done, it gives some great ideas on how to think pragmatically in order to improve one's way of thinking and working, and best of all, it is fun to read.

Gabriel Lima
Friday, March 15, 2002

I love code complete.  I'm half way through and I've learnt so much.

Reading it has been like somebody coming to me and saying - the full stop shows where the sentances end, the spaces separate the words.  Suddenly I discover why I find it so difficult to read.

Ged Byrne
Friday, March 15, 2002

... on Code Complete being a dull read ...

I usually find that the more I have to work to learn something, the more I get out of it.  It's the difference between reading and studying. 

Think Code Complete is dull?  Try reading a few technical specs and RFCs.  Read a couple of those, then read Code Complete ... you'll think it's a real page-turner.

Another thought... the people who really like Code Complete (like me) are probably the ones who have spent many years in programming purgatory, banging their heads on the desk repeatedly over the lack of craftsmanship around them.  Reading Code Complete is *very* enjoyable to this group, since we're sitting there thinking "EXACTLY!" over and over and over.

Timothy Falconer
Friday, March 15, 2002

My suggestion:

Effective Java Programming Language Guide
by Joshua Bloch.

Java's rep for being slow comes from 4 things:
1. before JITs came along, it *was* slow
2. incorrect compile vs. VM preconceptions
3. Netscape 3/4's "Loading Java" message when it loaded the VM (and their awful VM implementation)
4. bad programmers that make common mistakes

The first three points are moot.  The last point is answered very, very well in Bloch's book.  Java isn't slow if you do it right.  This book gives more useful advice towards this end than any I've seen in print.

Timothy Falconer
Friday, March 15, 2002

I'll pipe up for Code Complete. I wish every undergrad CS would master it. It helped me a lot at the time that I read it, and I wished I had done so earlier.

Another good contribution by McConnell is "Rapid Development". It explores the boundaries to realistic scheduling, and should also be read by junior developers before they're asked to give estimates.

I'll have to disagree with Joel's negative assessment of "Slack" by DeMarco. Although I had some disagreements with DeMarco, I thought the book did add some material to "PeopleWare". However, I agree that "PeopleWare" is more of a "must read" than Slack.

Friday, March 15, 2002

Ged gets the sarcasm award in this thread. :-)

Someone who has been doing software development for a while is likely to feel that way.  It is more appropriate for someone just starting programming.  I'd say best to read it just after starting programming to have a little experience.

Why do books have to be so big these days?

#1 book: "Peopleware"


Friday, March 15, 2002

I am greatly indebted to CODE COMPELTE. I read it during my last year in college and it was a real eye-opener. I was studying computer science and did not know much about software engineering in the real world. Yes, CODE COMPLETE is a bit verbose, but it is an easy read and filled with informative footnotes and references to background research reports. I recommend this book again and again to college students or people on my QA team that want to learn more about "real" programming.

Banana Fred
Friday, March 15, 2002

Personally, I'm also one of those who likes "Code Complete." I also like "Writing Solid Code" by Steve Maguire and "Math Toolkit for Real-Time Programming" by Jack Crenshaw.

For good books that aren't directly related to programming, I'd recommend "A Whack on the Side of the Head" by Roger von Oech.

Steve Wheeler
Friday, March 15, 2002

There's also "Programming Pearls" by Jon Bentley.  Basic sorting and data structures?  Writing correct programs?  Sounds dull, except that most programmers I know don't understand how to apply these concepts.  Instead they take up a lot of time in meetings because they just know Methodologies and Java, but haven't read any dull books.

Do I sound bitter? ;-)  I think companies should stop spending time talking about Quality, when they can't program.

Saturday, March 16, 2002

I'm freshly out of university though I've been hacking computers and programs for quite some time now, only in the last few years did I start to really program for a living. (Doing side projects along studying).

I've like "The Pragmatic Programmer", and dislike "Code Complete" I bought both of the since Joel recommended them heavily. I enjoyed the pragmatic programmer even though it was a bit too light at times, and disliked CC because it was so heavy, it is probably a good tome for those just starting who didn't yet get these insights, but for me it was mostly a "duh!" all along, though I didn't finish it yet. "The Cyberiad" is so much funnier :-)

The Gang of Four book "Design Patterns" was an eye opener for me, I've read it a year or two ago and it gave me some insight on the various patterns that I use/see when I program. I've yet to really design with patterns, but it's a good book if you need to design software, the insight gained by reading this book is useful even if you dont use it directly.

Sunday, March 17, 2002

Based on those evaluations, I'd guess you would enjoy Fowler's REFACTORING.

Mike Gunderloy
Sunday, March 17, 2002

A Discipline of Programming, Edsger Wybe Dijkstra, Prentice Hall 1976,  ISBN 0-13-215871-X

Andrzej Kocon
Monday, March 18, 2002

Software for use: that's the how-to book Alan Cooper talked about in "the imates are running the asylum" and never wrote.

Wei Wang
Friday, March 22, 2002

*  Recent Topics

*  Fog Creek Home