Notebook / Archives

Inside the software development process

« What branch of the tree is safer? / \ A wind of cognitive sciences »

May 31, 2003

Inside the software development process

First, some simple principles driving software development:


  • “POGE (Principle of Good Enough)”: free range simplicities shall drive your developments (on "Doc Searls Weblog": The SIMPLE case for XMPP, POGE, cont'd);

  • “PONGE (Principle of Never Good Enough)”, POGE's marketing opposite notion: always find new, useful – or not – functionnalities to implement (also on "Doc Searls Weblog": POGE vs. Microsoft?);

  • the KISS Principle (“Keep It Simple, Stupid”), a corollary to POGE: “a maxim often invoked when discussing design to fend off creeping featurism and control development complexity”;

  • the worse-is-better philosophy (via "::Manageability::": Words To Live By "Worse is Better"):

    Simplicity-the design must be simple, both in implementation and interface. It is more important for the implementation to be simple than the interface. Simplicity is the most important consideration in a design.

    Correctness-the design must be correct in all observable aspects. It is slightly better to be simple than correct.

    Consistency-the design must not be overly inconsistent. Consistency can be sacrificed for simplicity in some cases, but it is better to drop those parts of the design that deal with less common circumstances than to introduce either implementational complexity or inconsistency.

    Completeness-the design must cover as many important situations as is practical. All reasonably expected cases should be covered. Completeness can be sacrificed in favor of any other quality. In fact, completeness must sacrificed whenever implementation simplicity is jeopardized. Consistency can be sacrificed to achieve completeness if simplicity is retained; especially worthless is consistency of interface.




Next, a more biological way of viewing the sofware development process: The Internet and GPL as a text-file ecosystem (on "BitWorking"). Important notions here:

  • “software development process can be viewed as the production and processing of text files” (source files): these files are building years after years an ecosystem, the Open Source Software (OSS) ecosystem (compared to the Closed Source Software – CSS – ecosystem, composed of binary files, less granular);

  • “liberty” vs. “freedom”: liberty is the physical right to do something (here the permission to cross the Internet's checkpoints – this network being viewed as a informational highway: you can go beyond the boundaries) and freedom is the physical ability to do something (here to drive freely on the Internet: you do not have to pay at the checkpoints);

  • open source software have become autocatalytic in the recent past: “the whole system could be done using only OSS text files and at that point the system became collectively autocatalytic” (the author, Joe Gregorio, is exploiting here ideas from the complexity theory, more precisely from Stuart A. Kauffman).


Finaly, a more human way of feeling software engineering (via "Russell Beattie Notebook": 'Creating by exertion of the imagination...'), with some words from The Mythical Man-Month: Essays on Software Engineering by Frederick P. Brooks, Jr:

"First is the sheer joy of making things. As the child delights in his mud pie, so the adult enjoys building things, expecially things of his own design.

"Second is the the pleasure of making things that are useful to other people. Deep within, we want others to use our work and to find it helpful.

"Third is the fascination of fahsioning complex puzzle-like objects of interlocking moving parts and watching them work in subtle cycles, playing out the consequences of principles built in from the beginning.

"Fourth is the joy of always learning, which springs from the non-repeating nature of the task. In one way or another the problem is ever new, and its solver learns something: sometimes practical, sometimes theoretical, and sometimes both.

"Finally, there is the delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures."


Posted by Jean-Philippe on May 31, 2003 at 10:48 PM 23 Comments, 272 TrackBacks

Filed in computer science

Post your own.

Comments

Post a comment
Security Code Check





Remember personal info?


Entries by category

Entries by month