DevOps Zone is brought to you in partnership with:

Simon lives in Jersey (Channel Islands) and works as an independent consultant, specialising in software architecture, technical leadership and the balance with agility. Simon regularly speaks at international software development conferences and provides consulting/training to software teams at organisations across Europe, ranging from small startups through to global blue chip companies. He is the founder of "Coding the Architecture" (a website about pragmatic, hands-on software architecture) and the author of "Software Architecture for Developers" (an e-book that is being published incrementally through Leanpub). He still likes to write code too, primarily in .NET and Java. Simon is a DZone MVB and is not an employee of DZone and has posted 36 posts at DZone. You can read more from them at their website. View Full User Profile


  • submit to reddit

Or everything you should know about building software!

While in London last year I met up with Dave Ingram, author of Design-Build-Run. It's subtitled "Applied Practices and Principles for Production-Ready Software Development" but I like to think of it as "Everything you should know about building software". I've been working as a software developer since 1996 and during that time I've worked on a number of different projects for different customers. Some have been big, while others have been small. Some have been desktop applications, while others have been deployed on the web. Some have been very structured, while others have been less formal. I've had relative freedom on some and been restricted on others.

While the overall goal of all these projects was to develop software, each project brought its own challenges and experiences. One of the things that I most like about working in a consulting environment is that it can genuinely give you a very wide variety of work and this means that you tend to learn a lot in a comparatively short amount of time. You obviously get to learn lots of major things (new technologies, new ways to design software, etc) but there are a number of other things that you learn about too, particularly around some of the nuances of software development and the actual process of building software.

Design-Build-RunIf you can imagine somebody sharing this sort of experience through a book about software development, then basically you have Design-Build-Run. Want to know about the sort of things that you should do in order to run a serious, high quality software project? No problem, chapter 3, Preparing for "Production", has the answers (including things like understanding architectural drivers and constraints). Want to know how to build software that operations staff can actually monitor? No problem, chapters 8 and 20 have information about logging, event logs, performance counters and so on. Want to know what sticky sessions are? Turn to page 207, where you'll also find information about a number of load balancing algorithms too. Want to know how to catch exceptions in your code and retry the transaction? Turn to page 550 where you'll find explanations of the various ways in which transactions can fail and some sample code that illustrates a "wait-retry" pattern.

The breadth of knowledge in this book is immense but the technical depth backing it up is there too; covering everything from planning and running projects through to designing, building and testing software. The book doesn't focus on particular technologies, frameworks or fashions; instead it explores and explains the important stuff that software developers really should know. The only niggles I have with the book are that it's pretty hefty at 650 pages and I think that some of the content may have worked better if it was collocated. For example, there's some excellent content about alerting and monitoring, but it's broken across a couple of chapters at opposite ends of the book. When you look at the breadth and depth of content in the book, these really are minor things though and the content is still very easy to find.

If you're a software developer looking for a way to fast-track your experience, you should definitely take a look at Dave's book. It really does contain everything that you should know about building software.

Published at DZone with permission of Simon Brown, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Steven Fisher replied on Fri, 2011/12/02 - 5:45pm

Yes, as a colleague of Dave's I might be seen as biased (and in awe that he managed to find the time to write this work), but I really would recommend this book to anyone interested in the production of quality software.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.