The Principles

  • Design
  • These principles reflect architectural and design considerations when building software. They should be considered and applied continuously throughout the life of an application or service - not just at the start.

    • Build Differentiators
    • If functionality is a differentiator for the Partnership then we should prefer to build, rather than buy and/or customise.

    • Design for Emergent Reuse
    • Design for well-defined use cases and adaptability. Address reuse as an optimisation opportunity rather than a goal.

    • Operational
    • These principles are concerned with the continued operational integrity of our software - including the platforms they run on and how their data is looked after.

      • Cloud Native
      • Build systems that are suitable for running in the public cloud, using cloud-native technologies suited to our provider of choice.

      • Data Stewardship
      • Actively protect and care for the data stored and accessed by a system, at least as much as the functional behaviour of that system.

      • Organisation
      • The following principles reflect how our software relates to our organisation.

      • Practices
      • These principles relate to the software practices we should follow when building software.

        • Automate by Default
        • Tasks that can be automated should be automated by default. The choice not to automate should always be a conscious decision.

        • Consistent Environments
        • Environments should have homogeneous application configuration, software, operating system, infrastructure and data (where appropriate).

        • Get Feedback Early and Often
        • Gain feedback by frequent and early releases of functionality, rather than Big Bang releases.