Thursday, July 10, 2008

Titanic analogy


I was once working on a project, actually a very old, huge software product. The politically correct name for it is "legacy product". We call it a beast for its enormous size, and ... very difficult to understand. It was so old that the design was not as flexible, or easy to extend. Whenever we want to add in a new feature, the logical place should be in bellies of the beast, but no one wants to touch the ugly code. At the end, the new feature was shifted into another part of the system or not implemented at all, due to risk of breaking the product. We're all know that its time is numbered, perhaps another year or two; and we were all hardly wait for that day. A day when we can just delete that branch of code out of CVS workplace, and don't have to see those ugly warnings, obsoleted standard library calls during compilations.

That day eventually came. The day the company sent out the news release, announcing no longer support that product, the product which has the beast in it. We were all happy, except a guy with his worried face. I asked and he slowly revealed:
- "You see, it's just like the Titanic, if we know that it's going to crash into the rocks. What are we going to do to save the people on board?". He turned and asked.

With his English accent, he continued:
- "We can either let them drown, because no emergency crew can get to the boat in time to save them, or we can build another fast ship, which can then catch up to the Titanic and just before the Titatic hits the rocks, we can transfer the people on to the new ship. Only then we can let the Titanic to sink."

Lit up another cigarette, he drew a long breath then said:
- "Unfortunately, two years ago we did not build the fast ship."

No comments: