Constrained universes & SW development (cont’d)

Continuing my thoughts from this morning, what’s the relevance of constrained universes of expression to software development?

For a project to succeed, you have to get everybody involved in developing the same system. For me, this is the most important function of a system’s architecture: to unite the team, to give them a context for the continued exploration and development.

So what does this mean?

The architecture isn’t a distinct entity. It isn’t technical but social. It’s part of the mesh that is the story about the problem domain and the solution the piece of software provides. This story is told in discussion between programmers, between programmers and users, between programmers and managers, and so forth.

The mesh is the constrained universe of expression of the project.

Let’s switch to another domain for a while: television series.

The first two episodes of The Sopranos were written and directed by David Chase. During the rest of the first season, he didn’t direct any of the episodes, and only wrote three episodes (of which two were co-written).

To me this means that Chase established the Sopranos expressive universe in two episodes, and then handed the job over to other people (while of course staying as the executive producer).

Fans of the series will have a very thorough feel for the constraints of this universe, as will of course the people who works with producing the series. It’s like a contract between viewers and producers.

(I feel that the constraints are very important. If something happens in an episode, a “crisis”, the constraints work to make you curious about what happens, even though they also define the possibilities, so that in a way you already know what likely will happen.)

Each series is its own unique universe, although that universe borrows from other universes. The power of expressive universes owes to the fact that they are made solely of familiar elements. But that doesn’t say that each universe doesn’t have to be established with the viewers.

In the same way, each software project is its own unique expressive universe. For each new feature, the possible solutions are limited, especially if they are conceived within the expressive universe.

This fact signals that it’s important for the team members to be aware of the constraints of their expressive universe (again the importance of creating the same system), and I think that this is easier if one has a metaphor for the system—that is, if the expressive universe borrows heavily from another expressive universe.

What I mean is that a universe with metaphoric elements must be easier to establish than one with only dry, technical elements, simply because metaphoric elements carry with them more meaning and associations.

A software project is about defining a new expressive universe, by mixing other universes (platforms, languages, design patterns, architectural blueprints, other domains imported as metaphors, and so on) with a universe created from exploring the problem domain, which might not be able to see as an expressive universe, but can be transformed into one.

Over time, the constraints of the expressive universe will become clearer, and there will be breakthroughs that redefine the constraints, analogous to the Fosbury flop.

Within this universe, a system will take form, as the product of discussions, trial and error, feedback from users, observing what competitors do, getting inspirations from other domains, and so on.

In software projects, innovation never stops, while in engineering projects, the innovation takes place at the beginning.

I’ll try to let this idea rest for a while now.

The above was posted to my personal weblog on August 13, 2003. My name is Peter Lindberg and I am a thirtysomething software developer and dad living in Stockholm, Sweden. Here, you’ll find posts in English and Swedish about whatever happens to interest me for the moment.


Related posts:

Posted around the same time:

The seven most recent posts:

  1. Tesugen Replaced (October 7)
  2. My Year of MacBook Troubles (May 16)
  3. Tesugen Turns Five (March 21)
  4. Gustaf Nordenskiöld om keramik kontra kläddesign (December 10, 2006)
  5. Se till att ha två buffertar för oförutsedda utgifter (October 30, 2006)
  6. Bra tips för den som vill börja fondspara (October 7, 2006)
  7. Light-Hearted Parenting Tips (September 16, 2006)