CSDI Working Principles

What does 'principle' - and specifically, 'working principle' mean? Why are 'working principles' important in software?
We propose a set of robust 'working principles' to deal with tough, untractible, unresolved issues in software development

Importance of Principles in Any Discipline

Principles are the (validated) laws, assumptions, or facts of nature which fundamentally determine the behavior of a system. (Sometimes called, "Working Principles") See also LimitationsOfWorkingPrinciples.

Principles allow sifting of concepts for ones which help us understand why things work. As such, principles are required for understanding and reliably controlling complex, mission-critical systems such as airflight, medicine, reactors, power distribution, oil refineries, etc.. They make possible controlled, confident, aggressive, and transparent action while they prevent accidents.

Working Principles are not limited to technological systems. As an extreme example to deliver the point, social behavior routinely uses working principles but most participants are rarely aware of it. Principles serve to unify, increase collaboration, and insure economic behavior of complex systems. The purpose of these particular examples is to find an appropriate analogy between other high knowledge and skill disciplines and the software discipline.

In this way perhaps analogous and congruent software principles can be drafted and the advantages explored.

Attributes of a Working Principle:

  1. Clear, distinct, and independent in action, with visible functional effect
  2. Synergistic and indispensable to the system behavior or outcome
  3. One of a set where all principles in the set will be essential at any given evolutionary stage of a specific technology or system
  4. Explicit basis in science or empiricism
  5. Adopted by the community with virtually unanimous agreement in all important particulars
  6. Co-evolution shapes principles; ie W-P set 2 evolves from W-P set 1 due to changes in technical or social domains. E.g. 'anesthesia' added to surgery created the operating room as we now it because more complex operations could be attempted, ie 'gut' wounds.
  7. Universality of method allows propagation of generalizable concepts to unrelated disciplines: the sterile operating room became an integrated circuit cleanroom, which further evolved into the software 'cleanroom'. Also known as 'superclean'.
  8. Working Principles may overlap with other working principles.

AreaOfValidity of Working Principles
  1. Working Principles can be observed as effective even with little experience. In any given complex technology their AreaOfValidity will not be understood without considerable experience.
  2. Working Principles are used within human systems and they make high performance possible, but they are not to be used when evidence contradicts standard usage.
  3. Working Principles are NOT: tautologies, guidelines, or casual statements.
  4. When the context is safe, working principles should not inhibit creative ideation, i.e. re-thinking or testing implausible but intriguing alternate models.


Examples of Principles in Other Disciplines:

Modern Surgery

  1. Anesthesia prevents pain
  2. Asepsis reduces likelihood of infection
  3. Antibiotic treats residual infection (edit per Dr. H)
  4. Diagnostic technologies and processes
  5. High Performance Team --trained, experienced, BASA certified, expert, collaborative
  6. Operating room with highly sophisticated equipment
  7. Shared taxonomy; processes, methods, techniques, and procedures
  8. Deep internalization of the scientific method

Commercial Air Flight

  1. Physics and mechanisms of lift, thrust, drag, directional control
  2. Radar and other sensing systems
  3. Air traffic control
  4. Instrumented flight reference for night and inclimate weather
  5. High reliability of overdesigned airframe and subsystems
  6. High Performance Team
  7. Shared taxonomy; processes, methods, techniques, and procedures
  8. Deep internalization of the scientific method

Discrete Manufacturing: These will require more explanation later.

  1. Large scale collaboration of manufacturing complex
  2. Known good inputs of materials and services
  3. Co-evolved systems: Defect distribution is known apriori and congruent with successive operations
  4. Team discussions are concise and convergent
  5. Physicality of operations teaches constantly
  6. Moderate (or higher) performance teams
  7. Shared taxonomy; processes, methods, techniques, and procedures
  8. Deep internalization of the scientific method

Discrete Manufacturing Detail

  1. Scientific and technical theories and methods well-internalized in supplier chain
  2. Co-evolved systems and sub-systems of equipment
  3. Defect distribution is known apriori and economic
  4. Team and production discussions are concise, accurate, and verifiably representative of physical environment.
  5. Physical realization of concepts is ubiquitous and absolute in impact: Nature does not lie and will fool you frequently if you don't understand what you are doing. This situation converges all discussion on technical merit
  6. Moderate Performance Teams guided by Masters (Architects) and Experts(Designers, Engineers), distributed and collaborative, trained and experienced operators, robust systems which accommodate in-training operators
  7. Shared taxonomy; processes, methods, techniques, and procedures
  8. Methodologies instantiated in processes
  9. Deep internalization of the scientific method

Proposed Working Principles for General Software Development

Draft of proposed working principle list (not in any order):

  1. Workflow systems constrained by programming language, and potentially the application domain
  2. Co-evolved, ergonomic, modular tooling system. Action is intuitive and upgradeable
  3. 'Super-clean' common awareness of the orgins of defects and their stagewise exponential economic effects
  4. Capability growth intensive (global optimization)
  5. (At least) Moderate performance team with high performance support systems
  6. Master-Apprentice approach to training and enculturing high performance individuals
  7. Shared taxonomy; processes, methods, techniques, and procedures
  8. Deep internalization of the scientific method
  9. Glance-visible project status including economics and capability growth profiles of all capital: individual, social, technical, organizational
Note: Working Principles for a software factory would be somewhat different.

Intention and Rationale

The intention and rationale of these analogies is: To propose a working- principle constrained software development system --leading to an analogous high performance discipline. See HighPerformanceTeam. Additional development of this rationale would include the social, process, and technical capital required. Certainly, other rationales might suggest different systems and this author welcomes alternative views. For example, we might instead propose a moderate performance system which would have the virtue of being easier to staff and manage. Later, I will provide rationales for each of these as working principles. I believe that if we can fix (locate) 3-5 working principles we can interpolate several others. This process of emergence of unimagined but critical and enabling working principles is part of the evolution of complex adaptive systems. The medical analogy with anesthesia is a good example of working principle emergence.

Importance of insight

It is important to consider that in these other high performance disciplines such principles were --in many instances-- contemplated before they were achieved, usually by breakthrough technology. For example in ocean going sailing circa 1700's celestial navigation was effective on a cloudless night, but if the subsequent course through shoals depended on it, mere clouds brought doom. Thus charts were required to navigate before compasses and clock-determined longitude made them largely unnecessary. But people knew by inference, given the stars, there must be ways to navigate besides detailed charts. In the same way we can imagine working principles of software from the hints of insufficient solutions currently available. Authors of creative behavior call this 'problem finding'.

Implementation by Information-Mediated, Stepwise Adoption of Principles

Implementation becomes the next objective after acceptance of principle-based software development. Given the problems at the extremes with radical change and incrementalism that a strategy of patterning change after similar systems seems best. This sounds a bit more complicated only because the goals seem larger. Neither objective, strategy or design does requires it. Other disciplines evolved over fairly long periods of time due to the constraints of building capital. Physicality and remoteness of practitioners therefore required long time constants of change. And to be sure people move slowly with risky situations and wait to see the effects of change before moving on to the next change. Recently we have observed hyperspeed changes in medicine with the adoption of new diagnostic equipment such as CAT and MRI. Information as a rule then does not tend to slow or impede existing principle-based systems but rather it catalyzes it. Here since software development is long accustomed to rapid change we can bootstrap the changes accordingly.

Bootstrapping Using Software's Good Fortune

The proposal is simple. Use stepwise changes moving from one set of practical working principles to the next set. Use patterns of information acquisition to support each set of working principles and the transitions between sets working principles. This might seem strange but that is the common situation with other disciplines if we try to visualize the changes there in a time-lapse photography thought experiment. Software has the good fortune to be susceptible to rapid change as catalyzed by information. Many of the working conditions, skill sets, equipment capabilities of software development support rapid change to working principle advances. Social changes proceed more slowly however The Agile community has demonstrated that these social changes proceed fairly rapidly i.e. a year or two at most. Some might say even less.

How Then Co-evolution?

Stepwise, principle-based strategic change in software operations may well move very rapidly. That is a reasonable assumption and if so would help the development of collaboratives. But even at the longer estimates of social change limited progress, the benefits of the changes would be significant. There are many questions such as how we would control co-evolution of systems but that will be discussed in another chapter.

Envision software development as a high performance discipline when constrained by a system of working principles.