Published in IT World
Growing e-business applications
By Sean Mc Grath
In his classic essay 'No Silver Bullet', The great Fred Brooks extolls the benefits of growing, as opposed to building computer systems. He suggests that the building metaphor we are so fond of has outlived its usefulness in software development. Instead, he proposes that we should take a leaf out of nature's book. Mother Nature does not *build* complex things, she *grows* them. There is a big difference between growing and building. Growing is biology and is deeply mysterious. Building is physics. We know a lot about physics. It's just mathematics in disguise. Maybe. Maybe not.
Anyway, back to the idea of growing things. I remember reading somewhere about an architect who, instead of building pathways between buildings, simply planted grass everywhere and waited for a while. The humans traveling between buildings gradually etched a path pattern into the new grass. When this pattern was established - when it had *grown* - the architect came back and added concrete to make a solid pathway. I like that story. I don't know if it is true or not but it appeals greatly. Grow - don't build pathways.
Wouldn't it be great if we could design complex e-business systems that way. What would it take? Well, first we would have to find some way of decomposing problems into component pieces, each of which live independently of each other. We would need to, um, 'plant' them somehow into some lump of cyberspace and let them 'grow'. What would it mean for them to 'grow' I wonder? How about if we do what the building architect did? Instead of wiring pathways between the components - instead of building - we just sit back and watch where the dominant pathways actually form.
What would be flowing between components? Why, business data of course! What we would need would be a very flexible way in which components could flow data to other components. Remember, we are growing this system, not building it. We don't yet know what "flows" of data between components will prove useful.
Best stop dreaming now I think. We are already way past state of the art. Having said that, it's fun to think this stuff through. Possibly -just possible - Service Oriented Architectures - will be a vehicle to realize some of this notion of growing systems. We need autonomous components that live on their own and 'flow' data to other components. Let's call them Web Services. We need ultra flexible routing between the Web Services - something that can grow and mutate over time. Sometime dynamic and P2P. Perhaps something like JINI realms. Perhaps content-based routing. Perhaps both.
The Web Services themselves would need to be 'soft'. Soft in the sense that you should be able to send silly data to them without causing them to break - they are autonomous 'living' things remember. Naturally, we would need a dynamic approach to interpreting data. Dynamic programming languages fit the bill here.
What else would we need?
I can think of three things:
A biologist to explain how it works.
A chemist to explain why it works.
A Feng Shui specialist to make it harmonious.
I wanted to be an architect (of buildings) once. I failed the aptitude test and turned to computing.
This article probably demonstrates that architecture's gain has been computing's loss.