Tuesday, July 06, 2004

Richard Gabriel and Geoffrey Moore

by Asim Jalis

Here is a possible synthesis of Richard Gabriel's Worse is Better idea and Geoffrey Moore's Technology Adoption Lifecycle idea. Lisp failed because the cognitive cost of learning Lisp is much higher than that of learning C. Lisp does not give sufficient benefits for the cognitive cost to be recouped. C is easier to learn because it has a simpler interface. It is not as beautiful or general or abstract as Lisp. The less abstract something is the easier it is to learn and the more likely it is to succeed in the market. The same holds true with Microsoft. Microsoft's interfaces are mediocre but they were still relatively easy to learn. The Mac's interface was too well thought out to be communicated to a newbie in a few minutes. MS-DOS and even Windows makes it possible for a newbie to work productively. They make baby-talk possible. Perl and Python present the same allegory with different players. Perl is less innovative and so is more "continuous" with existing languages. Another key characteristic of successful software is incompleteness (rather than completeness). You implement only the parts you are sure about and which you know how to implement easily. Once you reach a point where you don't know how to proceed stop, and ship. An incomplete product allows other agents in the marketplace to extend it in different ways. Perfectly complete systems shut out serendipity. They forbid experimentation and parallel evolution of many different alternatives. Once a successful path is discovered it can be incorporated into the system. This allows to system to evolve and become completed in low-risk ways. An example of this is how Microsoft incorporated IE into its system once the significance of the web browser had become apparent.