These principles relate to the software practices we should follow when building software.
- Automate by Default
- Consistent Environments
- Get Feedback Early and Often
- Performance Importance
- Secure by Design
- Design for Testability
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.
Our systems meet or exceed their users' expectations of performance. Degradations in performance are investigated, understood and either remedied, or accepted as appropriate in the business context.
Systems will be designed and maintained with the assumption that our software and the data they hold will be attacked and possibly compromised.
Solutions should be designed - and code structured - in a way that makes execution of its tests happen more easily and quickly.
Each codebase must be understandable and easy to change by new developers with minimal experience of the application.