Automate by Default

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

Rationale

Automation of well-defined tasks, such as deployment and testing, improves speed, consistency and reliability compared to manual execution. The automation code can also be valuable as a form of documentation for the correct process or desired outcome.

Implications

  • Automation requires an upfront and ongoing investment that usually pays off quickly, but must be balanced with delivering business value.
  • When evaluating COTS packages or SaaS solutions, the ease with which they can be automated should be a significant factor in their selection.
  • Automation may benefit from use of specialised tools, frameworks or languages, in which case teams will need to acquire or develop the appropriate knowledge & skills.
  • Software and processes that are difficult to automate will need to be changed or replaced if they require too much effort or are not amenable to being automated.
  • Automated tasks/processes that are complicated but infrequently executed can become a source of risk, to the extent that people decide not to perform the task manually because they don’t have confidence in the automated scripts. Design for Testability must be applied so that the automation can be regularly proven to work, so that it can be relied upon when needed. Disaster Recovery processes are a good example of this.
  • Automation scripts must be treated in the same way as other software and conform to these engineering principles.