Books, January 2009

Thinking in Java by Bruce Eckel — I've literally been reading this book for 9 years. This was the book I learned Java from many years ago when I was a student, through the graciousness of Eckel making it available for free electronically. I accidentally bought two copies, so I now have one at work and one at home. I finally got around to reading the chapters on annotations, enums, inner classes, and generics.


Getting Things Done: The Art of Stress-Free Productivity by David Allen
— Mr. Allen, where have you been all my life? As he freely admits, a lot of the stuff in the book is common sense, but its the implementation that people get hung up on. I've started writing down everything I need to do, which alone has made me more productive with lower stress. Highly recommended.

The Little Schemer by Daniel P. Friedman and Matthias Felleisen — This series is one of the weirdest. The Socratic style is off-putting to some, including me, at least initially. Some of the text borders on cheesy, but I'm growing my appreciation of whimsy. I still don't understand they Y combinator, so I'm going to need to revisit this in a few months.

Practices of an Agile Developer: Working in the Real World (Pragmatic Programmers) (Jul 1, 2005) by Venkat Subramaniam and Andy Hunt — Another great book in the "Pragmatic" tradition. I was expecting a book with more on agile software development methods, but this is more individual things developers can do to increase their productivity. While I already do a lot of these, it's always good to be reminded of what you're naturally doing and why it works.

After The Gold Rush by Steve McConnell — Recommended for anyone interested how software development can become a true engineering discipline instead of the craft that it currently is in most of the industry.

Waltzing With Bears: Managing Risk on Software Projects by Tom DeMarco and Timothy Lister — From the authors who wrote "Peopleware. While the word "agile" isn't used in the book, a lot of the topics here strongly related to agile practices.

Bargaining for Advantage: Negotiation Strategies for Reasonable People 2nd Edition by G. Richard Shell — An excellent "soft skills" book. I've read "Getting to Yes" and "Getting Past No", and this book was an excellent complement to those two. Lots of concrete strategies for negotiation and guidance for what works in what situations.

Books, December 2008

Recommended:

Effective Java by Joshua BlochTHE book for honing your Java-fu. If you haven't read this, stop reading and go buy it now. There's so much good stuff in this book, I savored it over about three months.

Peopleware: Productive Projects and Teams by Tom DeMarco and Timothy Lister
— A classic in software development management. Much of what Joel Spolsky has used to build Fog Creek and which he writes about is derived from this book. A warning though, if you work in a cube for a large company, you will probably be tempted to quit :)

Groovy in Action by Dierk Koenig, Andrew Glover, Paul King, and Guillaume Laforge — Groovy is a fantastic language, built around the desire to be useful and productive. This is a good introduction from some of the project leads. I would like to have more content on Groovy's metaprogramming capabilities. The MarkupBuilder section of the book was very handy when I was re-implementing a mess of a Java/XSLT report generator, ending up with about half the lines of code and far greater readability.

The Productive Programmer by Neal Ford — Following in the tradition of "The Pragmatic Programmer", this book provides a bevy of ideas of how to improve your programming. The treatment of many of the subjects is relatively shallow, but everything from window launchers to code coverage is somehow hit. Ford also mentions specific software packages various tasks, which takes the great risk of quickly dating the book but makes it much more useful for the reader.

Not Recommended:

Differentiate or Die: Survival in Our Era of Killer Competition by Jack Trout and Steve Rivkin — I was hoping for a book on how to differentiate your product in the marketplace based on creating innovative products, but this is more "how to lie to people about your product when it's just like everybody else's." "It's Toasted" indeed.