Automating repetitive processes can give real value to software development projects. In this article, we will explore the values of automation, should we carry out automation or not. If yes, what to automate and when?
There are many arguments for and against the motion for automating development processes. However, if you are a developer or tester who likes spending time actually adding value to your project, instead of repeating the same procedure again and again, you will want to advocate the concept of automation to your team. If you are a project manager who is dedicated to maximising the talents and time of your team members as well as minimizing the risk the failure of your project to deliver on time and on quality, you will want to encourage your team to invest the important time and effort automating the tasks.
Why should you automate?
Among the many benefits of automating the development processes, some common ones are:
- Repeatability: Scripts can be repeated and you can be certain that the same instructions will be followed in the same order every time the script is run.
- Reliability: Scripts lower the chances of human error.
- Efficiency: Automated tasks will often be quicker than the same tasks performed manually.
- Testing: Testing is carried out for scripted processes throughout the development cycle, in much the exact way the system code performs. This highly improves the chances for successful process execution as the project runs. Automated scripts finally represent a proven, mature set of repeatable processes.
- Versioning: Scripts are artifacts which can be placed under version control. The only artifacts in manual procedures that can be versioned and tracked are documents of the procedure.
- Leverage: Another big advantage of automation is that the developers and testers can pay attention to areas where they add value- developing and testing features and new codes- instead of bothering about the underlying infrastructure issues.
What should you automate?
If you are convinced that automating is a good idea, then the possible next question is which processes to automate. While the answer is somewhat different for every project, there are some obvious ones as well as general guidelines to follow. Some of the specific targets for automation are:
- Build and deployment of the system undergoing design
- Report generation for code coverage
- Unit test execution and generation of reports
- Load test execution and generation of reports
- Functional test execution and generation of report
- Report generation for Coding conventions
- Report generation for code quality metrics
The above list is of course not exhaustive, and every project is unique in its own way. Here’s a general rule of thumb to identify any process that should be considered for automation: select automating processes which would be repeated frequently throughout a system’s life. The more number of times the process is repeated, the higher the value of automating them.
When should you automate?
Automation should be executed as soon as the team members decide to start executing the process. For example, automating the build process after the project is nearly finished offers very little benefit. However, before you start automating everything, be reasonably sure that the procedure would be required for the project, that it will be repeated over two or three times during the life cycle of the project and that you understand the steps that are required to be executed for the process.