Designing from the Outside In

In his post Designing from the Outside In on the new O'Reilly Radar blog, Tim O'Reilly mentions a conversation he had with Jason Fried from 37signals (is it so-called because 37 is a psychologically random number?)


believes that contrary to the normal expectation that applications are built on top of frameworks, applications should always be designed "from the outside in." That is, at 37signals, they try to design the usability and function of the application first, and that drives the implementation. And if they can then extract a re-usable framework, all the better. For example, basecamp wasn't built on top of Ruby on Rails. Rather, Ruby on Rails was extracted from basecamp.

That notion of extracting a re-usable framework after the fact struck me as interesting because that's really what's happened with Leonardo. Two years ago, I wrote a little wiki-like script in Python in order to enable editing of content on from a browser. I then decided to expand it just over a year ago to include a blog. Now, as more features are being requested, an underlying web framework is emerging that could very well be useful outside of running a wiki or blog.

It reminds me of a point Jon Bosak used to make that Backus-Naur Form (BNF) came out of work on the specification for Algol. Another example of extracting the general from the specific rather than attemping to build the general in isolation of a specific use.

Tim also mentions Jason's referring to Christopher Alexander's Paths and Goals pattern.

If you read Tim's full post you'll also see there's another whole aspect to what he's talking about with regard to UI-centric development and the role of designers. Jason's blog is a great read too.