The Age of Steam

A study released earlier this week (Narrator: It was 2003.) says web services are slower than many native protocols. It doesn’t matter. Simplicity and interoperability almost always trump raw performance.

The study’s sponsors have a horse in the race, of course—selling software built on those high-performing native protocols. They say, “If we’re inside the firewall, why rely on HTTP, which is a relatively slow protocol? Why do we have to parse all these verbose payloads? We know and control what’s at the endpoint—maybe right on the same box.”

And while we’re at it, why not also write these applications in assembly language?

The reason is simple: absolute performance matters in relatively few applications. In those cases, yes, optimize for a particular stack. In the rest, don’t. Barring specific requirements, simplicity and interoperability always trump raw throughput.

Something I learned from a childhood hobby—model trains—illustrates this point. When you think about toy trains, what do you imagine? If you’re like me, I bet you picture old-fashioned steam locomotives circling the track on the floor. And there’s a reason for that.

Steam traction powered railroads for more than a century after their invention. By the 1930s these massive engines could drive trains nearly 100 mph and haul vast quantities of freight. Yet within a decade after WWII, the steam fleet had been replaced by diesel engines that, in absolute terms, didn’t equal the peak performance of their predecessors until the late 1960s.

Why did railroads make such a rapid transition to what was, by all initial measures, a lower-performing technology?

The answer is simple: the gearing and engines that powered top-performing steam locomotives had become so complex that they simply cost too much to maintain. Diesel locomotives required a vastly simpler physical plant. Replacing a steam locomotive with a somewhat lower-performing—but far easier-to-maintain—diesel engine was an easy business decision. Reduced costs for parts, maintenance staff, and downtime created a more productive, flexible foundation that kept railroads competitive with new rivals such as the trucking industry.

Today we see a similar cost-benefit dynamic in software platforms. So, web services are slower than (insert your favorite protocol here). It doesn’t matter. Their performance will improve, but the benefits of simplicity and interoperability deliver far more real business value today than raw speed ever will.

Brent Sleeper @brentsleeper