What's Your Architecture's Agenda?

One of the topics that came up in today's free range small groups discussions are IIW2008A was the idea that architectures have agendas. Brad Templeton voiced the idea that all designs have defaults and those defaults represent an encoding of some kind of agenda.

For example, let's say that you collect click streams from your web site visitors in order to give them recommendations, optimize banners, or whatever. What is the default for how long that data is stored? One week? A month? A year? Forever? You might not think of that default as an agenda, but it is in the sense that it enables or disables certain behaviors in the future.

"But wait!" you say. "I didn't even think of that! My site stores it forever because I haven't written a purge function--yet." Even implicit acts create defaults and those defaults represent an agenda. For example, if your agenda were different with respect to storing private data, you'd have prioritized your development differently.

I've been using privacy as an example, but it's larger than that, of course. Designs are full of defaults--some explicit and most of the implicit. Programmers don't pay enough attention to defaults. Rail's "convention over configuration" is a great example of a system that carefully thought through defaults. 37 Signals calls this concept opinionated software.

The best software has a vision. The best software takes sides. When someone uses software, they're not just looking for features, they're looking for an approach. They're looking for a vision. Decide what your vision is and run with it.
From Getting Real: Make Opinionated Software (by 37signals)
Referenced Mon May 12 2008 17:14:47 GMT-0700 (PDT)

I like that idea.