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. Keep Pace with Technological Change Use the latest, most appropriate tools and technologies that solve the business problem. Model the Business Domain Terms, concepts and capabilities of the business should be reflected in the way we write, structure and deploy our code and systems.

  • 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.