Home

Manifesto

Values and Principles

About Us

The People

Whitepapers

Risk management

Contact

Links

Forums

Resources

Muse Cases

Values and Principles

This document outlines the values and principles espoused by the Appropriate Process Movement that are applicable to activities of tailoring of Software and Systems Development Process.

Terms and Terminology

Appropriate Process is concerned with development processes for software and systems.  This area of interest will be expanded to include other processes relevant to enterprises such as Business Process Re-engineering (BPR), and already encompasses aspects of business relevant to systems development.

Appropriate Process Tailoring is itself a process.  However, one expects any Appropriate Process tailors to be well versed in process, capable of applying the values and principles of Appropriate Process without a detailed prescriptive recipe.

The terminology I use here is as follows:

  • Process refers to any process of any type.
  • Development process refers to system or software development processes, tailored or otherwise.
  • Untailored process is a development process that hasn't been produced according to the principles and values of Appropriate Process [1] , the untailored process is probably but not necessarily less than ideal for the job in hand.
  • Tailored process is a development process that has been produced according to the principles and values of Appropriate Process, the tailored process is at least reasonably close to being ideal for the job in hand. The ideal process being unattainable usually accounts for the difference.
  • Appropriate Process Tailoring is the process of specifying a tailored development process according to the values and principles of Appropriate Process.
  • Ideal process is a development process that is in all respects as close to perfect as we can conceive for the immediate situation.

Values

Agile Methods favour values of

  • Communication
  • Simplicity
  • Feedback
  • Courage

and Agile Modeling [2] adds the value

  • Humility

Appropriate Process needs to consider the values appropriate to the tailored process.  Appropriate Process needs also to consider the values appropriate when tailoring a tailored process.

The values required in a tailored process are not necessarily those of agile processes.

Our three key values are

  • Adequacy
  • Efficiency
  • Attainability

In effect, we have taken a step further back to provide a higher-level view that concentrates on the key values of appropriateness of process.  Below this level, the agile values are still appropriate in their context.

Adequacy

The tailored process must be up to the job.  It must address the risks adequately, and it must be capable of developing the products. Where the product is not adequate, the process can not have been adequate.

Efficiency

The tailored process must attempt to minimise the cost of development while still satisfying the needs of the other required values.  Both short and long term costs and benefits are to be taken into consideration: While we play the current game, we prepare for the next.

Attainability

The tailored process must be within the ability of the resources available.  Note that this does not mean that the tailored process must limit itself to the abilities of the staff, etc. available at the time of tailoring, but that, as the available abilities change, the tailored process must match those abilities.

Relationship to Agile Values

Communication must be taken into consideration by any adequate process.  Efficiency of communication by reduction of the amount and cost of communication necessary will be a component of any efficient process.  The abilities of the people and the availability of communications channels are intrinsic in considering the attainability of the process.

Simplicity is orthogonal to adequacy; adequate processes can be simple, complex or anywhere in between.  However, we may assume unnecessary complexity implies unnecessary cost. Typically, an efficient process is as simple as possible while still adequate.  Usually, simplicity aids attainability.  There are one or two possible exceptions.  When learning new techniques, it may be necessary to start by dotting all the I's and crossing all the T's; this additional detail may become unnecessary once techniques are well understood.  Concepts may be communicated with less effort once all parties are familiar with them.

Feedback is necessary in any adequate process.  Efficiency demands that feedback strikes a balance between the effort of collecting feedback and the cost of delaying feedback.  Any reduction in the cost of collecting feedback has to be a good thing.  Attainability considerations may place restrictions on the opportunities for obtaining feedback.

Courage is a specifically agile value, one not often taken on board by the hard-nosed heavyweight methodologists.  The argument would be that to take on board unnecessary risk might lead to an inadequate process.  However, the demands of efficiency mean that the adequacy of recovery after mishap needs to be costed against the adequacy of prevention of mishap.  In this respect perhaps more than others, attainability is important.  Strategies that put less emphasis on preventing risk rely on the ability to recover after mishap. That ability significantly increases the skill level demanded of those working with the process.

Humility, as expressed in Agile Modeling, means the acceptance that nobody knows everything.  Everybody can learn something from somebody else.  Even those people with vast experience can learn some things from the newcomer.  While adequacy may say what needs to be done, while efficiency may say what roles should be assigned to which work, attainability may say that there is no single person with the skill set to do a particular job.  Humility is about getting help where necessary, giving help where required, and getting the right set of skills to bear on the work to be done.

Process Tailoring Values

When a process tailor addresses the process of tailoring a development process, he may bear in mind the agile values.

Communication is important both in establishing the criteria within which a tailored process is to perform and in providing the information in how to perform the tailored process to all developers who will enact it.  In addition, it is advised that Appropriate Process Tailoring is not performed alone, communication between the tailors is also important.

Simplicity in the tailoring process helps in keeping the tailored process simple. However, a related topic is more important: Understand the tailoring process.  The deep level of understanding of the tailoring process that permits simplicity is our aim.

Feedback is important, as always.  As early as possible, feedback as to the ability to understand and attain the process should be elicited.  Ongoing feedback should be elicited to ensure the process is working, addressing the risks as intended and producing the product. This feedback should also be suitable to confirm that the expected level of risk to which we tailored is commensurate with the observed incidence.  In addition, we would expect levels of risk to change with some degree of predictability so feedback on expected risk should also be elicited.  A tailored process should be adaptable to changes in attainability [3] , measured and predicted risk.  The process should adapt where the predicted savings are greater than the costs and risks of change.

Courage is necessary in tailoring process.  There has to be some limit to the effort of assessing risk.  At some point, one must stop tailoring and go with the process as-is, relying on feedback and adaptation to cover any mis-assessments.

Humility is advisable in tailoring process.  It needs to be accepted that, on one's own, one cannot know everything there is to know about the development process.  No one person can know everything about process tailoring, risk, and the situation of the project and enterprise, in addition to the availability, abilities, and learning curves of the people who will be enacting the tailored process.  Agile Modeling and various agile development processes advocate working in pairs.  Appropriate Process recommends, but does not demand, working with others.

Principles

The principles of Appropriate Process are similar to those of Agile Modeling and Agile Alliance.  This is hardly surprising.  We are describing the process of developing development processes, the Agile Alliance are describing the principles behind agile development processes.

  • A process tailored to immediate needs is your primary goal.
  • A process adaptable to future needs is your secondary goal.
  • Lightest adequate process.
  • Expect the needs to change.
  • Prioritised, Incremental change.
  • Prepare, change, consolidate; iterate.
  • Minimise total costs.

A process tailored to immediate needs is your primary goal

The immediate needs usually are to start producing the product as soon as possible.  That means we need to develop rapidly a tailored process that is both adequate and attainable, and as efficient as can be managed in the timescale. 

There are two major alternatives as starting points.  First, there is a team and a process in place.  Second, there is neither a team nor a process in place.

Given the first starting point, we can consider this as a normal process adaptation path characterised by evaluation of risks, prioritisation of process problems, preparation for change, installation of change, consolidation and re-evaluation.  Should there be time available prior to the tailored process being enacted, then a larger initial increment of change than normal may be feasible.

Given the second starting point, there are many more possibilities.  An ideal situation should be sketched out whereby the perfect tailored process is being enacted by the perfectly qualified personnel.  Then apply reality, consider the quality of people that are likely to be available and the impact this will have on the needs of the process.  As actual people become available, adjust accordingly.  Plan for much more skills transfer needs at the beginning of such a project.  Consider advising the work scheduler to hold off from assigning the most difficult, most architecturally significant work to the first iterative cycle.  Give the team an opportunity to ‘bed in' on something less challenging.

This last strategy needs to be balanced against the need to address the highest risks first, however. Having given the team a chance to bed itself in, the priorities must soon revert to taking on the most challenging, hence riskiest, tasks as soon as possible.  The heuristic to apply throughout is; tackle the ‘riskiest' task for which the team is reasonably confident of success.

A process adaptable to future needs is your secondary goal

When considering future needs, there are at least 3 target situations. 

First is the situation where the team is perfectly able to enact the ideal process for the immediate needs.  Typically there will be some shortfall in ability that keeps the team away from this ideal, but in future years this may not be the case. 

Second is the situation where the team will find itself at some later date on this project with needs that have changed. The process should have adapted to meet the changed needs.  Some needs change in a predictable fashion, and these changes can be planned for.  Some changes in needs occur unpredictably, yet we can plan for them by introducing flexibility, feedback and the ability to respond rapidly.

Third is the situation where we take into consideration the long-term needs of the enterprise and what will be happening once this project is finished.  There may be few specific details on which we can base such planning.  However, work in the same domain is likely to proceed, and the need to support such work is likely to be present.  At some level, the strategic goals of the enterprise are unlikely to change.

A tailor of appropriate processes should take into account both the first and second situations; the third situation is a matter for judgement.

Lightest adequate process

An adequate process needs to produce the product and address the risks.  In choosing strategies to address risks, the cost of prevention should be compared objectively with other approaches such as amelioration or acceptance.  It is not acceptable to use an expensive technique to prevent a rare risk that is comparatively cheap to detect and put right should it occur.  All elements of process should be justifiable because either they are necessary or they provide preventative or ameliorative measures that are cheaper than the expected costs of alternative curative measures.

Process elements may have various degrees of rigour.  The process element should not be applied with more rigour than is necessary.  In many cases, the necessary degree of rigour cannot be decided other than by the persons enacting the process at the time the process element is to be used. Process elements may in general be used to aid in understanding, to aid in development and communication of information and ideas, to record information and ideas for posterity, to verify or prove the efficacy of ideas, or any combination of these. In general, the least rigour is when the element is used to aid in understanding.  Degree of required rigour tends to increase based on purpose: investigation, communication, documentation, and verification.

Expect the needs to change

An adequate process needs to address the risks.  However, as the project progresses, the risks change.  Many risks decrease as more work is done.  Some risks increase.  These changes are expected; it is in the nature of the risk.  In addition, some unexpected risks may appear.  As stated earlier, some needs change in a predictable fashion, and these changes can be planned for.  Some changes in needs occur unpredictably, yet we can plan for them by introducing flexibility.  Predictable changes include those that change through an iteration as the iteration moves from being analysis-rich to implementation-rich; those that change with change of iteration; those that change with major phase changes from Inception through Elaboration, Construction, to Transition and eventual retirement.

Prioritised, Incremental change

It is commonly the case that though the ideal adequate, efficient process can be identified, it is not immediately attainable.  Changes are needed either in the personnel or in their skill set before this ideal process can be attained.  However, change takes time and it is not normally wise to attempt all the change necessary to attain the ideal process in a single step.  Note that Appropriate Process admits to the possibility of exceptions to this rule.

For this reason, it is useful to order the changes necessary to attain the ideal process in a prioritised sequence.  Some of these changes will be essential and must be made before any tailored process can be enacted.  On occasion, the degree of change that is marked as essential is so great that it becomes worthwhile to aim directly for the ideal process.  Otherwise, change should be conducted in easily managed increments.

It becomes necessary to re-evaluate priorities for change as the needs of the project change and as the abilities of the developers become more in tune with the ideal process.

Prepare, change, consolidate; iterate.

Before change, prepare.  Ensure all parties are ready to enact the change and that any remaining learning of skills will not be too great to jeopardise the change.  As the change is made, provision should be made to help personnel through their first live encounter with the new process elements.  After change, learning should concentrate on consolidating the existing skills prior to preparation for the next prioritised set of changes. All change implies disruption; the change should be timed to cause the least reasonable amount of disruption.

Minimise total costs.

The aim for any process improvement is reduction in production or maintenance costs, in increased probability of success, or in improvement of delivery times or quality. In fact, more often than not, enterprises aim for all of these things. Introduction of a process, be it a new process or an improvement of existing processes, brings in new costs. Both the cost of tailoring and introducing the process and the continuous overheads of the new process must be balanced against the potential savings. This balancing can be done only with consistent measurement of all the costs.

Costs introduced by process tailoring include: Tailoring costs; process introduction costs (training, lost time, etc.); new risks associated with the process.

Savings possible with tailoring include: Production costs; cost of delayed delivery or inefficient delivery; cost of correcting low quality deliverables; cost of mitigating risks; cost of putting things right when risks that have not been prevented become reality.

The expense of process improvement should be scheduled carefully, in line with the client's wishes and priorities. The approach taken to address individual risks should be the most cost effective overall. The effort to assess risks should be commensurate with the value of addressing risks.

This implies some balance between heuristic and rigorous approaches tailored to the situation. A higher value project will probably justify more rigour in assessing risks and tailoring process. Lower value projects may need to rely on heuristic approaches if the gain is to exceed the cost by any significant degree. It is important that the client understands this; he may want to bias the balance for reasons that are not visible to us as process tailors.

A migration plan with costs amortised over several projects may be worth considering. Bear in mind that sometimes the most cost effective solution is to let the client continue as-is, any improvements would cost more than they would gain. Where this is the case, the fact should be discovered as soon as possible.

Thanks to:

For contributions of ideas and aid in reviewing this document, thanks go to Paul Oldfield, Hüseyin Angay and Charles Edwards of the Appropriate Process Movement and Alan Yezierski of Hartford Life.


[1] We accept that others may tailor a process very well without explicit awareness of Appropriate Process values and principles – their own values and principles may already be similar or may be tailored to the particular situation.

[2] We retain the American spelling of its founder, Scott Ambler; see www.agilemodeling.com

[3] That is, skill levels are expected to increase, permitting adoption of less rigorous process. It may also come to pass that particular tasks require particular skills that have previously not been needed.

 

 

Copyright 2002, Appropriate Process Movement