It’s become somewhat fashionable to use organic metaphors in imagining what software will be like in the future. I most lately ran into it at Brian Marick’s Your body is a gross kludge post. It’s a thought provoking post, but ultimately I just can’t get behind organic arguments about software. Sure, I’ll admit that in the distant future software might become like living organisms, but that’s too far in the future to be useful. I can’t imagine how to get there from here. There has to be an intermediate stage.
The most striking difference in my mind is that software does not reproduce. The closest thing we have are CASE Model Driven Architecture (MDA) tools (aside: I wonder why someone picked an abbreviation that matches the Muscular Dystrophy Association). And I’m highly skeptical of those. Plus, they don’t truly reproduce. They don’t write other improved MDA tools. To be able do that independently, they’d be closely approaching strong AI. From reading Douglas Hofstadter and Roger Penrose, I highly doubt that strong AI is even possible. Suspending my disbelief for a moment, I do think the kludgy designs Brian talks about would be a remarkable achievement for organic software — after all that is how most human written software is!
To be fair though, I do think there are some features of organic systems we would do well to better incorporate into software, such as resiliency. Recent interests have gotten me thinking about instrumentation and monitoring. Monitoring allows us to know what’s going on inside our systems, and instrumentation allows us to tweak parameters on running systems. The real power comes when you programmatically tie the monitoring back into the instrumentation to create a feedback loop for the system to modify itself in response to the situation at hand. I did this in one particular instance a year ago to great effect, and I’m looking into more general practices. However, contrary to the kludgy designs of organic systems, mine was a well encapsulated, reused, JMX component, configured and installed independently of the business system.