I am often surprised/concerned to hear where many organizations are along their “software automation continuum”. Developers spend most their time automating processes for users, yet don’t always see ways to automate their own development processes.
Sometimes developers/organizations are under the impression that they have automated an activity because they’ve written a few scripts to eliminate some steps in the development process. It’s not about throwing a couple of scripts together and running them all the time. In order for automation to be effective for the entire team, you need to share your automation script(s) to the SCM repository, incorporate into the build system and finally, make it continuous (or at least scheduled). The figure below demonstrates the steps along the automation continuum.

- Identify - the activity you seek to automate. It may be compile, test, inspection, deployment, database integration, and so on. An easy way to think of this is based on the major software disciplines/activities that most projects typically engage in - no matter which methodology they are using
- Automate - the activity so that it is repeatable. This will involve writing some scripts
- Share - using an SCM tool such as Subversion, so that others may use the scripts/programs you have written. If no one else can use your script, you are not leveraging the capabilities of automation.
- Build – A process that you have automated that lives on its own is of minimal value. In many cases, you’d like one process to precede another. For example, you may want to remove certain files before you perform a compile. You can do this by incorporating your automation into a comprehensive build script. You may write this in a build script using a tool like NAnt.
- Make it Continuous - so that humans do not need to run the automated process and so that risks are mitigated by ensuring all is well whenever a change is applied to the software. You may do this using a continuous integration tool such as CruiseControl.
Where is your organization along this automation continuum? Use the above heuristic to determine how automated your development activities are on your projects. Note, that you may be performing steps 2 and 4 together (for example, if you are using a build script). The more you can make these activities automatic, the more time you will have to deliver value to your users.

April 11th, 2006 at 6:17 pm
[…] Finally, remember that you should be script every part of your build process so that you can execute it early and often. If you don’t have a repeatable way to build or test your software, there isn’t much else matters. […]
February 25th, 2008 at 11:28 am
Since a very popular automated build tool is named “Continuum,” perhaps you should use a different word to describe the process - perhaps “timeline” or simply “process”?