Dilbert - drunken monkeys


Agile development is not just about adapting to changing in schedule, interdependencies and uncovered considerations. They can also be about resilience to the work environment around the development team. Yes, the development team will love to moan about everything that doesn’t work that way it “should” (I certainly did when I was a developer), but as Jeremy Zawodny points out in his piece “Expecting to Fail”, those shortcomings can result in some of the system’s greatest strengths…

“A few days ago, after the latest in a seemingly never ending string of problems that interrupted connectivity between two of our data centers, coworker #1 said something like ‘why can’t we have a network that just works?!’ The exasperation in his voice is something we all felt to some degree or another. Moments later coworker #2 piped up and said “if our network was perfect, the software you write wouldn’t be nearly as robust.’ There’s a lot of truth to that. I find myself writing software a bit differently now than I did seven or eight years ago, even though I was working on high-traffic web sites then and still am now. The single biggest difference is that I try to expect everything to fail. Everything.”

Zawodny goes onto provide a catalogue of tools and techniques for software technicians embracing failure…

  • Redundancy
  • Locality
  • Caching
  • Timeouts
  • Logging
  • Monitoring

I would add a seventh…idiot proofing tests. At Piero, we regularly invite high school students in for work experience to have them bash on our system. We sit them down with no training, just a user manual, and we say ‘get the system to work’. As they work through the steps in the guide, they hit instructions that aren’t clear, ambiguous references and inconsistent steps. We note every obstacle they hit and then make a task to either fix the documentation or improve the usability of the system. This approach (among other rigorous steps) has been critical to making the system easy to use for customers who don’t speak English as a primary language. This group is over half of our installed base and the training sessions are often inadequate to get people fully skilled up on their own. The bonus dividend is that with usability targeted for the lowest common denominator, the system is astonishingly fast and easy to use for more proficient professionals with more experience and practice.