Automation and Agile
Almost every time you hear about how to become more Agile automated testing comes up as a must do. The natural assumption might be that automated testing is required for a process to be Agile. If a team doesn’t use automation they feel they cannot be Agile, so why bother trying?
I have read the Agile Manifesto many times. Of course the value statements wouldn’t have anything this specific. I’ve read the 12 principles many times as well. I have never seen where the manifesto or the underlying principles require automation in any form.
What the manifesto and principles do talk about is working software rapidly and continuously. The ideas of technical excellence and good design are stated. Perhaps most important to this point is the idea of simplicity though.
Simplicity–the art of maximizing the amount
of work not done–is essential.
— Principles behind the Agile Manifesto
The important question regarding automation then becomes whether or not it maximizes the work not done. This is not the same as minimizing the amount of work done, and could be an important distinction in this case.
Automation in software development is usually focused on eliminating redundant work. Other times it can be focused on standardization which will, in theory, ease future maintenance. It really has nothing to do with not developing unneeded functionality.
Maximizing work not done is about eliminating waste. This could be not doing documentation that nobody reads, avoiding functionality not requested by the users, or eliminating extra steps between writing code on a development machine and running it on the user’s machine. This last step is where automation can come in.
Automated testing will shorten the time taken to ensure new code doesn’t break existing functionality. Automated builds will shorten the time required to get “done” items to the end-user. Automated code generation will shorten time needed to get functionality from design to demo. All of these are compatible with the definition of Agile, but none are required for Agile.
At the end of the day the answer to the question is no. No automation of any type is required for Agile. A lack of automation or an inability to automate should not detract from Agile transitions. That said, automation can help improve Agile transitions and implementations.