How Automation Benefits Agile Technical Practices
A discussion in Technology Review, inspired by the book Automate This: How Algorithms Came to Rule Our World, describes automation as being essential for success, citing the experience of stockbroker Thomas Peterffy, the creator of the first automated Wall Street trading system. In his article, Regalado points out that “some say what’s taking shape is a more productive symbiosis between man and machine—and successful businesses will be the ones that optimize it.”
Automation is an important aspect of agile technical practices. Automated builds, testing, and deployment enable developers to implement features and refactor to improve code quality with confidence. Automating routine tasks in the development process can improve quality by reducing variability in the testing and deployment process, so it’s easier to detect problems. Providing automated mechanisms for testing, build, and deployment can help developers focus on the task at hand, as they need not spend energy on the routine. So, is there any reason to be skeptical about the benefits of automation? There are some insights we can gain from examining automation of processes outside the software development universe.
A recent Planet Money interview with Peterffy had a less upbeat take on the issue. Peterffy described how the initial automation steps added value not just for traders but for all investors who benefited from faster, less expensive execution. At a certain point faster, automated, execution became less focused on adding stakeholder value and became an end in itself. At some point the focus on automation and speed delivers less benefit and even generates risks and instability. William Davidow in IEEE Spectrum re-enforces this point with examples of tools and automation doing more harm than good.
Petterffy’s mention of “value” led me to think that there are lessons to be learned for those automating software development processes. It’s important to consider the value that the automated process adds. Consider testing. While a fully automated test suite for your full application stack is a good goal, teams can get caught up automating tests for rare, low impact, problems that could be better found by visual inspection.
It’s important to remember that your automated tests have limits. I once saw someone refuse to run an application after a change because he was very confident in his tests. As it happened, the change removed a key menu bar on the UI—as the client soon reported. Automation is only one element in service of the goal of delivering value to stakeholders. While agile software development uses automation, it also relies on other, more interactive, forms of feedback such as Pair Programming.
None of this is to say that you should shun automation. Automation is a powerful tool and can make your life easier—if you consider how and why you are using it.