Jan 13, 2013

Software Development Books

I'm often looking to improve the software that I write.  If you are in the same boat, here's a few books that I felt have helped me.  This is not exhaustive, but some of the ones I could think of off the top of my head that I'd recommend.  Please share others that have been good for you too, I'm always looking for more.

Note, there are affiliate codes in these links, though feel free to not use them, I don't really care.  If you are in the Bay Area, I would plug my favorite bookstore which frequently has some of this kind of stuff in stock (BookBuyers)

  • Algorithms on Strings, Trees, and Sequences:  Very likely the best book on string algorithms (and trees/sequences).  It's references computational biology, but you need not know a tree from a frog to get a ton of value out of this book.  Invariably, one of my Google coworkers is always borrowing this book.  If you are interested in more about the wonderful world of strings, this book will get you pretty far.
  • Refactoring: This was a very useful read when I read it a few years ago.  It came at the right time in my programming development.  This almost has less to do with the mechanics how to refactor and more with how to structure code in the first place.  The examples are easy enough, but seeing them and the reasons why they reduce complexity helped a ton.
  • Design Patterns: I don't get as much value out of this as most people.  I don't find myself implementing the "X pattern" so much as perusing patterns has occasionally tipped off a light bulb in my head on how to structure things.  I feel like there is more I can learn from this still and intend to revisit.
  • Coders at Work: A collection of interviews with some of the big software developers in the field. Full of lots of nuts and bolts insights and opinions on software development.  This isn't so much about software engineering, but about everything that goes on around it.  Unlike the above three books whose hardbacks are high-quality productions with diagrams, this one is a cheap paperback book with only text - there is no reason not to just grab the kindle version.  Note I also read Founders at Work, but found it to concentrate more on things like fundraising / making deals - Coders was more relevant. 
  • Javascript the good parts(O Reilly):  More than a few people have mentioned that they never could wrap their brain around Javascript until Crockford's book.  I found myself in the same position.  I've forgotten too much from this book as I don't use Javascript frequently enough, but this is a great place to start if you want to understand it.  There is also an @Google Tech Talk from Crockford on the same subject that might give you a flavor.
  • Wireless Nation: The Frenzied Launch of the Cellular Revolution: A little off-topic, but this is a fascinating book that takes a look into how the cellular industry got started in the US.  It helps you to understand clearly how we got to where we are now, such as why the standards are so fragmented.  It's also a delightfully fun read.


deltaquattro said...

Nice post, Greg. I was looking for more posts on coding tips/techniques/books. As a matter of fact, the post I liked most in the past was the one on AWK - it came at a moment where I was using AWK intensely, and I loved your approach.

Coming back to today's topic, I'm a bit surprised that you didn't suggest any of the "classics" (apart from "Design Patterns, of course). I mean stuff like "Code Complete" or "The Pragmatic Programmer": what do you think about these? Recently, I also heard about a new one, geared towards Python, I think, and which was sold to me as a really great one. However, I can't seem to remember the name...should be fairly new.

Mark said...

Personally I’ve a very simple approach to learning new development coding which seems hard to get my head around, and that is to look for a book which is as simple as possible, a company which many people are not aware of is Head First, they’ve a string of books written in the same style.

You mentioned design patterns being problematic to learn, I would suggest checking out this book http://www.headfirstlabs.com/books/hfdp/ if you’ve no luck in finding a copy I’ve one which is of little use to me and I’d be willing to post it to you for free.

Jacob Barlow said...

I have read many books related software development even I have read books which you mention here.I think this is the best way for the community as they can short out the problems and also learn more from the books.