Monday, May 24, 2010

Keep it Simple, Stupid

"Make everything as simple as possible, but no simpler." I'm not sure if those are the exact words of Albert Einstein, but he has been credited with them for so long I assume it to be true. Often times the best pieces of advice are the ones that, when stated, are mind numbingly obvious.

I've written before on the perils of over-architecting a solution, most notably when trying to build systems that replace humans. As I see it, we are either the result of Divine intervention or the outcome of 4.5 billion years of evolution. Electronic digital computers have been around for about 50 years give or take - so I'm just guessing they're not ready to terminate us.

It is the intelligent integration of computers and humans that yield the best results. In 1990 I had the opportunity to design a new computer system for the USAir Control Towers; to be used in a number of their large hubs. We spent almost an entire year gathering requirements, observing the manual system that was in place, and flying all over to observe how other airlines across the globe approached the problem.

The general consensus was that the decisions necessary to manage the flow of aircraft to and from gates, with fuel trucks, catering vans, baggage, and crew traffic was just too complicated for humans. The airline business had grown too big too fast for human processing to handle it all. My team saw it differently.

This was not a situation where we wanted to replace humans with computer programs and artificial intelligence - even though that was all the rage. We saw it as an information visualization / assimilation problem. In short, if we could harness the processing power of the computer to render the planned state of the airport, along with the current state, highlighting conflicts and mismatches, then humans could easily assimilate the conditions and adapt. The manual process required about six weeks of on the job training to master. The solution we designed could be understood in about an hour, and mastered within a work week.

At the most fundamental level this was an architectural issue, and choosing wrong could have led us down a rabbit hole of Expert Systems, Artificial Intelligence, and Rules Engines long before the technology existed to support them. By focusing on the user needs, and understanding the problem domain, a solution was delivered that was as simple as possible, but no simpler. I think Al would have approved.

1 comment:

  1. Couldn't agree more. In fact, the three architectural principles I use are (in order):

    (1) You Ain't Gonna Need It (YAGNI)
    (2) Don't Repeat Yourself (DRY)
    (3) Keep It Simple and Stupid (KISS)

    Albert Einstein, Kelly Johnson, Andy Hunt, Dave Thomas, Ron Jeffries, et. al. can't be too wrong.


Follow by Email