Sep 13, 2008

Malik's Laws of Home Construction

One of our architects posted a link to Malik's Laws of Service Oriented Architecture which argues that building reusable services/software is futile. I responded with this version that substitutes "brick" for "service" throughout:

Malik's Laws of Home Construction

  • No one but you will build the bricks you need in time for you to use them
  • If you build a brick that no one else asked for, you will have built it for yourself
  • If you build a brick for yourself, you will optimize it for your own use
  • It is therefore the optimal brick for you to use
  • It is very unlikely to be the optimal one for anyone else to use
  • No one besides you will use it
  • You will not use anyone else's

And so forth. Notice that Malik is 100% right in the context of primitive (mud brick) construction and 100% wrong in the context of modern (real brick) construction.

Also notice that customers never clamor for a transition from the mud bricks they're used to. The statement of work invariably specifies more of the same, meanwhile complaining bitterly of labor costs, weathering, and roofs collapsing on their heads. As if this were a law of nature instead of a shortcoming of the mud brick approach to architecture.

The  transition from primitive to modern is a slow and evolutionary process that isn’t even mainly technological. Its mostly about trust building, which only begins when a pioneer takes the risk and their customer starts telling their friends. I’d like us to be that pioneer (and yes, I know about pioneers and arrows).


Unknown said...

Your brick analogy is apt. We charge our employers an enormous amount for building these bricks over and over. Each employer gets a shiny new component, along with its many warts, and owns it outright; and they have no hope of selling it on to anyone else. Nor would they want to in the present world, because it's so tightly integrated with the rest of the software and because, if it's the least bit clever, someone probably already has a patent on it.

All this is a problem crying out for a solution, but most of us have no incentive to solve it, since doing so will put us out of work! We write the same pieces over and over again, multiplied by tens of thousands of us...imagine if the marketing people could specify the behaviors they want and choose from a catalog of available components! A group of them would only need one software expert, instead of the other way around.

This choosing, of course, would be a trick; it's orders of magnitude more complex than going to the building supply to choose appropriate bricks and mortar. However, it can be solved, and (as with the components themselves) only needs to be done once.

Brad Cox said...

Thanks Kraig; re: the choosing trick, did you see