It’s an old staple of science fiction. Software comes to life and wipes out humanity. One of the most vivid examples of this plot device is in the movie Terminator. In it, a defense program named Skynet becomes self-aware and then it creates robots that are hell-bent on destroying us. Terminator is a great popcorn flick, but it couldn’t ever happen, right? Well, maybe it’s happening already.

Science fiction writers usually hypothesize a takeover based upon intelligence. Machines become smarter than us, so they win. But, what about the opposite tack?

Think about your code. If you’re lucky, you’re working in Java. I know that’s an odd thing to say today. Everyone is down on Java in some way or another, but if you’re working in Java you’re lucky because your code is relatively new. Java is a fairly young in language terms. There are teams out there that are using ancient mainframe languages, in-house proprietary languages, and even languages so obsolete that they have to buy compilers on eBay. Code in those languages may be tough to work with and tough to understand, but the code did at least get one thing right. It survived. How did it survive? It survived by being valuable and difficult to replace. That sounds a lot like natural selection doesn’t it. The code beat out all of the other code on the fitness landscape.

Once you adopt this way of looking at code, business looks different. Some companies, instead of replacing an integral application, put it on life support. They try to keep it and everything it needs running smoothly and often they are surprised by just how much it needs. If an application is designed to use specific hardware, the hardware has to stay, along with the OS, the file formats, particular database technology, the tool chain.. the list goes on. Over time, the company isn’t paying the price of an application; it’s paying the price of a complete eco-system. And, let’s not forget the human element. How many people want to work on 40 year old technology? Costs grow and grow.



No, I think that code is alive. Some code lives long after the company that made it. It survives acquisition after acquisition and sale after sale, and it silently shapes the entire markets. Have you ever thought of some killer feature that a company could use in their systems that would make them millions? Chances are, they’ve thought of it too, but the architecture of their code doesn’t allow it. At that point, who is control, really, the company or the code?



It all comes back to one thing: code survives by providing value and by being difficult to replace.

The primordial soup is chunky with SQL, ant scripts, and old servlet carcasses. Time goes on, and complexity builds.

Sort of makes you want to refactor, doesn't it? :-)