Armstrong Consulting
1200 Dale Avenue #100
Mountain View, CA 94040

Date: Fri, 25 Aug 2000 20:08:54 -0700

From:   Eric Armstrong

To:     ohs-dev

Subject:   On working with existing systems

I just had a small realization, and I thought I'd share the observations that led to it.

It seems to [me] that a lot of people who come out with new systems try to include import functions so that they can [import] data from other systems into theirs.

But you know what? The success of the system is hardly ever determined by your ability to read other people's data. The success is determined by what the system can do.

Now, if it is successful, crowds of users may demand import capabilities. If so, it makes sense to deliver it. On the other hand, all the effort that goes into designing legacy-compatibility *at the outset* (note the stress) is time that takes away from the real success-proposition: the system functionality.

Finally, to explain that stress on "at the outset", let me make it clear that future compatibility with one's *own* system is an absolute requirement. Oracle made it big by protecting people's investment in their data, so that old databases were directly usable 90% of the time when an upgrade came out. And the other 10% of the time, the conversion was totally automated!

Once people put information into the system, the system has to honor that effort. It has to protect and preserve that data by whatever means necessary, defending it against file corruption, hardware failures, and software failures.

But making it interact with old systems? No. That is the hallmark of all the "first tier" technologies that never go anywhere. In the hardware world, every 4 or 5 years a new processor came out, and for the first year there was always a few companies selling computers with both chips. Those systems always sold like the turkeys they were, and in 12 months the only players left standing were the ones with systems designed around the new chip -- if it was any good.

There are major new technologies available today that we can design the system around. Working to achieve legacy-system compatibility (at this early stage) only hamstrings the design, siphons away energy that could be devoted to increasing functionality, and has only dubious value with respect to increasing the system's appeal.


Eric Armstrong