Steve Smith's Blog

Musings on Software and the Developer Community

Favorite Developer Books

I've written a few posts recently about various books, and recently while interviewing a candidate for Nimble Software  Professionals it occurred to me that for an experienced developer (e.g. not a new grad out of college), asking what their favorite (or most recently read) programming book is could tell a lot about them as a developer.  If their favorite book is something like Expert Programming in 21 Hours (not a real title) that paints a very different picture than if their favorite book is Design Patterns or a similarly respected title.

Of course, flipping the question around, I started to think about what I would list among my own favorites, and naturally that seemed like a reasonable blog post, so here goes.  Anyone interested in a wider poll of favorites should check out this StackOverflow thread (and this one).

Steve's Top 2 For Developers

In the #1 spot is Feathers' book, which I read early this year.  This book is now required reading for all of my developers.  I really wish I had read it about four years ago when it was first published (and sooner than that if he'd written it sooner) as it fundamentally changed my approach to developing flexible and maintainable software.  I've reviewed it elsewhere more completely, but it's good.  The title stinks, though - don't let that throw you.

Code Complete: A Practical Handbook of Software Construction

ISBN: 0735619670
ISBN-13: 9780735619678

A classic.  Should be a companion text in intro to programming courses around the country, I think.  This book will help you to write better code at the method level and below.  It's low level but extremely practical and while you may not agree with or adopt 100% of the practices it recommends, you'll be a better programmer for having read McConnel's analysis and then made an informed choice about how you do things.

 

Note that I don't really care what language you're writing in - these two books are just fantastic for any software developer.

Steve's Top 2 For Project Managers

I've written a few blog posts based on this book recently, and I have a few more notes that will turn into future blog posts.  I think this book has given me more blog fodder than any other I've read recently.  I still need to write a full review, but it's definitely worth a read if you're interested in improving the overall productivity of your development team.

Peopleware: Productive Projects and Teams (Second Edition)

ISBN: 0932633439
ISBN-13: 9780932633439

Another classic title, this one is great for technical managers of all sorts who want to have productive teams.  If your organization is one in which people say (or believe) they like working early in the morning / late at night / on weekends because "it's the only time they can get real work done" then you really should read (and act on) this book.

 

Reading Now or in the Queue

I'm in the process of reading Evans' book, which I've previously skimmed.  I suspect I'm going to read this one more than once, as it has a lot of interesting concepts that one needs to practice in order to master.  There's a Yahoo group dedicated to DDD that I'm lurking on as well.

The Art of Agile Development

ISBN: 0596527675
ISBN-13: 9780596527679

I'm about halfway through this one - it's a larger book than Lean Software Development and covers some of the same ground.  I'm not finding it quite as compelling, but it's got its share of gems.

Head First Design Patterns (Head First)

ISBN: 0596007124
ISBN-13: 9780596007126

I've read chapters of this from others' copies of the book and it's a very approachable and entertaining book (which says a lot given what's out there).  It's on my list to give a full reading to when I get a chance.

The Pragmatic Programmer: From Journeyman to Master

ISBN: 020161622X
ISBN-13: 9780201616224

Also on my list.  I don't have much to say about it beyond that I've heard it's great and I should read it.

Worth Mentioning

Refactoring and Design Patterns are both on my shelf (having been read first!) and are certainly worth mentioning.  I think Feathers' book is much more important than either of these as it did a much better job of bringing it all together and helping me to "get" why some of these techniques were useful, and in which situations.  Another one I read early on in University of Chicago's introduction to programming course is Abelson/Sussman's Structure and Interpretation of Computer Programs, which is another classic.  I need to pick up the 2nd edition of this and add it to my reading list.  Scheme is a fun language, and thinking about programming in a LISPy/Scheme-y way is very different from typical OO/C style languages.  Tends to be very jarring for me, but especially with lambda functions and related new features in C#, revisiting some of these functional language features should prove educational and helpful.

So... that's my list for now.  It's certain to change over time as I find a new favorite, and it's possible that I've completely left out some that really should be on my list.  As for you, do you agree?  Do you have your own favorite?  Which books have had the greatest impact on you, and what book would you be most proud of reading if asked the question in an interview?

kick it on DotNetKicks.com

Friday, 26 September 2008

Comments

 avatar

Andrei Rinea said on 26 Sep 2008 at 10:58 AM

I bought three of them (the first two and the last one) and all of them are quite amazing.

So far The Pragmatic Programmer was the one I liked most... Still reading Code Complete.


Leave a Comment

Please join the discussion and share your thoughts.