"Getting Real: A smaller, faster, better way to build software"
Reading history and reviews
Finished on 20th January 2009I sort of read this by accident: although it's possible to buy a physical copy or a PDF, you can also access the book content for free online as a set of webpages (which is what I did), and I found it to be a really interesting and often thought-provoking read. It's focused on developing web applications and outlines the principles that the company 37signals uses to develop their popular applications (including two that I use regularly: Ta-da Lists and Backpack) and the Ruby on Rails web development framework. So it's enlightening to read their take on the development process.
They cover a lot of different areas, including staffing, interface design and customer support. But I guess if I had to sum it up, then their basic ideas are to start small, work fast, don't agonize over your decisions, do as little as possible and focus resources in the areas that really matter. Ultiumately the focus is on getting things done, so it's important to be clear about what you're trying to build (and why), and to stay passionate about your application. I liked that some of their suggestions seemed to go contrary to what I'd understood to be "best practice" from my previous software experience (for example, http://gettingreal.37signals.com/ch05_Forget_Feature_Requests.php and not writing functional specs). Their reasoning is thought-provoking and is often supported with quotes from other sources which are interesting in their own right.
Obviously this way of working isn't right for everyone, or for every project, and they recognise that in the introduction. You should cherry-pick what you need. For me the most immediately useful suggestion was to avoid getting bogged down in detailed decisions too early ("Ignore Details Early On") but there's a lot of other good stuff in here. So if you're interested in building software then I really recommend taking a look.