An Economics-based Argument for Good Software Design
Martin Fowler is one of my favorite technical authors. I am sharing a link to his eminently thought-provoking keynote address (VIDEO) at the Agile Connect 2011 conference, June 8-9, Las Vegas. In order to whet your appetite, I'll reveal that his talk is comprised of three sections as follows. And I'll offer short summaries, in case you decide not to watch the 1+ hour video.
- Non-deterministic tests and how best to deal with them. These are tests that succeed or fail randomly. They, therefore, cause your build to succeed or fail randomly. Fowler correctly recommends that such tests should be taken out of the suite and quarantined until the non-deterministic behavior has been fixed. He also lays out several root causes for non-deterministic tests including lack of test isolation (i.e. inter-test dependencies), asynchronous behavior (i.e. non-sequential events), remote services (i.e. failures outside your code).
- An economics-based argument for when and why to invest in good software design and pay off technical debt. Fowler proposes a "Design Stamina Hypothesis" whereby initially ignoring good design might allow you to deliver new features more rapidly, over time poor design reduces the efficiency with which you can add new features.
- The current state and future of Agile (and a few, highly welcome, words on social responsibility).