Sunday, June 17, 2007

Idea: Audit Driven Design

Between some comments my CFO made and just some general thinking I've been doing about large systems, I think I've come up with an approach I may want to try on my next project. For now, I'm calling it Audit Driven Design (ADD) and here's the elevator pitch for it:

In ADD every feature you add to the system is accompanied by at least one facility to audit it. These audits usually take the form of a report or an alert. The audit functionality ensures that as the system grows you have more visibility into it, rather than less.

(Obligatory warning: there may be nothing new here, and I may have just come up with an approach that others are either practicing with success or have proven to be a failure)

Here's an example: suppose you're developing a new blogging platform. You decide you want to add in comment functionality. Along with designing and implementing the ability to leave comments, you also design and implement a way to audit this new functionality. You might, for example create the following facilities:

  • A report that shows the last 100 comments left on any blog, with the ability to jump to the blog to see more context. This would show you not only that the feature is being used, but how it's being used.
  • A graph that would show you the number of blogs with 0 comments, 1 comments, etc. This would give you a birds eye view as to how users are liking comments.
  • An alert which would be triggered if a week went by and less than 4 or more than 10 comments were left. This would warn you if the functionality broke, or was getting abused.

ADD is somewhat related to Test Driven Development. They are both examples where you write additional code that needs to be maintained and refactored, but has the side effect of improving the system. However, ADD goes beyond answering the simple question of does this feature work? to allow you to tackle business and strategic questions too.

Perhaps the biggest benefit of ADD is the mindset it puts you in - when you are creating a feature, it's not done until you can adequately measure it. Period.

No comments:

Post a Comment