Do good, better. CoActivate is a platform for social activism.

  • Appendix A - 12 Principles

last modified September 23, 2010 by strypey

Paper for FreeCulture2010

Appendix A

Table 1

The 12 Principles of Agile Software as ordered in the Agile Manifesto, with Holmgren's permaculture principles re-ordered to illustrate  correspondences and reveal underlying systems thinking.

 12 principles of Agile Software

- 'Agile Manifesto'

 Holmgren's 12 permaculture design principles

- 'Principles and Pathways Beyond Sustainability'

Our highest priority is to satisfy the customer
through early and continuous delivery
of valuable software.
Obtain a yield - Ensure that you are getting truly useful rewards as part of the work that you are doing.
Welcome changing requirements, even late in
development. Agile processes harness change for
the customer's competitive advantage.
Creatively use and respond to change - We can have a positive impact on inevitable change by carefully observing, and then intervening at the right time
 Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.
 Use small and slow solutions - Small and slow systems are easier to maintain than big ones, making better use of local resources and producing more sustainable outcomes.
 Business people and developers must work
together daily throughout the project.
Use edges and value the marginal - The interface between things is where the most interesting events take place. These are often the most valuable, diverse and productive elements in the system.
 Build projects around motivated individuals.
Give them the environment and support they need,
and trust them to get the job done.
 Integrate rather than segregate - By putting the right things in the right place, relationships develop between those things and they work together to support each other.
 The most efficient and effective method of
conveying information to and within a development
team is face-to-face conversation.
 Observe and interact - By taking time to engage with nature we can design solutions that suit our particular situation.
 Working software is the primary measure of progress.  Catch and store energy - By developing systems that collect resources at peak abundance, we can use them in times of need.
 Agile processes promote sustainable development.
The sponsors, developers, and users should be able
to maintain a constant pace indefinitely.
Use and value renewable resources and services - Make the best use of nature's abundance to reduce our consumptive behaviour and dependence on non-renewable resources.
 Continuous attention to technical excellence
and good design enhances agility.
 Design from patterns to details - By stepping back, we can observe patterns in nature and society. These can form the backbone of our designs, with the details filled in as we go.
 Simplicity--the art of maximizing the amount
of work not done--is essential.
 Produce no waste - By valuing and making use of all the resources that are available to us, nothing goes to waste.
 The best architectures, requirements, and designs
emerge from self-organizing teams.
 Use and value diversity - Diversity reduces vulnerability to a variety of threats and takes advantage of the unique nature of the environment in which it resides.
 At regular intervals, the team reflects on how
to become more effective, then tunes and adjusts
its behavior accordingly.
 Apply self-regulation and accept feedback - We need to discourage inappropriate activity to ensure that systems can continue to function well.