blog.thoughtwax.com

Adaptive Software

(or, how I learned to stop planning and become a slow programmer.)

Most programmers will have a structured approach to software development, probably involving a framework of modular code that lends itself well to a process of constant refinement. This means that changes can be made to the program very quickly and easily, and would generally be considered good coding practice. The management process of software development can learn from this approach, by being open to new ideas of what exactly the software will be used for.

This is basically what I was working towards when thinking about adaptive architecture. In fact, what I’ve been thinking about in relation to programming doesn’t really have much to do with writing code (although the style of coding would be directly influenced by the general approach, and necessary to it’s success), but more to do with the philosophy behind the code. That is: let go. Enable, don’t control.

In the same way that the ethos of adaptive architecture accommodates individuals’ interpretations of the function of a design, Adaptive Software design expects that users won’t always play along with the script. The software developer needs to be prepared to relinquish control of the software and definition of it’s function to the user.

An example of this at work is the evolution of Flickr, which started out life as an online multiplayer game. When one aspect of the site became more popular than all others, and visitors used the program as a photo-sharing facility, the developers ditched their original idea and went along with the popular momentum:

User feedback also drove a lot of the decisions about features. We had user forums very early on and people told us what they wanted… But we also have a very agile development process. We deploy code to the site maybe 10 times a day on a busy day. And we’re constantly adding new features, small and large.

Not only is the system flexible enough facilitate a two way relationship with it’s users, but the whole architecture of Flickr is already open enough to allow users to reinterpret it’s function without new features having to even be deployed. Here are some photos on Flickr tagged with 4sale; some people are now using Flickr as an online auction site. Here’s someone using Flickr as a movie blog. All the Flickr developers have to do is not interfere, and a new community of users creates itself.

Adaptive Software development means admitting that your users might know more about how they want to use your software than you do:

Through the Internet, people are discovering and inventing new ways to share relevant knowledge with blinding speed. As a direct result, markets are getting smarter—and getting smarter faster than most companies.
- The Cluetrain Manifesto

I’m working with a designer from Cornwall on a software project, and we’re trying to implement some of these ideas. By publishing the software iteratively, and workshopping with groups of users, we’re hoping the tool will grow organically to meet a need that hasn’t been fully identified yet. She’s calling it ’slow software’ (after the Slow Food movement), wherein each function of the tool gradually evolves to become more useful to it’s community of users.

It’s a mindset that’s about pull not push; bottom-up not top-down; organic not synthetic; evolution not stagnation; adaptation not restriction.

Some references:


This entry was posted on Thursday, September 1st, 2005 at 8:26 pm and is filed under Uncategorized. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

3 Responses to “Adaptive Software”

  1. Nick Says:

    Beautiful!

    Like all art, IMHO, it’s essentially incomplete without the interaction and addition to the experience by the viewer. But here’s a step further! Interaction by the viewer of the creation changes not only the experience of the viewer, but quite possibly, the experience of everyone else! It’s like looking at a mirror reflection throught another mirror, the copies going on and on….

    And speed! Don’t get me started:

    “I think the 20th century’s real fascism was intoxication with speed. Speed is a drug. Speed is “worldly asceticism” made more exciting. You tear through the world, tearing it up, instead of appreciating it in detail, up close, with all the smells and sights and sounds it has. In your car, you just hear the engine, and your shitty rock music CD, and the world zips by, and you think you own the damn place because roads go everywhere, and there’s roadkill behind you. I was just watching Auden’s Night Mail film, which celebrates speed in pretty much the same breathless way the Italian Futurists did, and thinking that what united left and right in the 20th century was this need for speed. I think Hitler’s most characteristic invention may have been the motorway system. That may be his real fascist legacy. And it’s all around us. We all condemn Hitler’s Holocaust, but none of us condemn Hitler’s Autogeddon. There it is, killing us, creating wars. Try walking down a street one day with the fixed idea that cars should not exist. Suddenly you see all these alien robots moving around, metal machines lining every street, moving fast, protecting some people and endangering others, exaggerating differences between winners and losers, straddling the top of the urban food chain, threatening us the way lions and tigers might have done in the jungle. And then you open your newspaper and read about some war in some foreign place motivated by the fluid these things run on. Well, it’s war there, but it’s war here too.” iMomus.

  2. emmetc Says:

    Cheers for that, Nicholas. I love it that someone who knows absolutely nowt about programming can be turned on by this stuff!

  3. TheirWork Blog » Blog Archive » Adaptive Software Says:

    [...] [Cross-posted from my personal blog.] [...]

Leave a Reply