The Principles
- Design
- Build Differentiators
- Design for Emergent Reuse
- Operational
- Cloud Native
- Data Stewardship
- Organisation
- Keep Pace with Technological Change
- Model the Business Domain
- Practices
- Automate by Default
- Consistent Environments
- Get Feedback Early and Often
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.
If functionality is a differentiator for the Partnership then we should prefer to build, rather than buy and/or customise.
Design for well-defined use cases and adaptability. Address reuse as an optimisation opportunity rather than a goal.
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.
Build systems that are suitable for running in the public cloud, using cloud-native technologies suited to our provider of choice.
Actively protect and care for the data stored and accessed by a system, at least as much as the functional behaviour of that system.
The following principles reflect how our software relates to our organisation.
Use the latest, most appropriate tools and technologies that solve the business problem.
Terms, concepts and capabilities of the business should be reflected in the way we write, structure and deploy our code and systems.
These principles relate to the software practices we should follow when building software.
Tasks that can be automated should be automated by default. The choice not to automate should always be a conscious decision.
Environments should have homogeneous application configuration, software, operating system, infrastructure and data (where appropriate).
Gain feedback by frequent and early releases of functionality, rather than Big Bang releases.