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.