Processes around creating and releasing software are often manually orchestrated. Some steps of the process are more involved than others.
There’s immense value in automating the important parts of the process. For example, software testing and verification is ripe for automation.
As with automating anything in business, it’s important to apply an investment mentality. Make sure there’s value beyond the potential effort.
Blindly automating everything is as reckless as avoiding automation altogether.
Step 1 – Outline the process
Use your intuition to decide what steps of a process are the most valuable or ripe for automation.
Write down what’s involved and create an outline of the existing process. Highlight what parts are manually executed.
Step 2 – Eliminate the unnecessary
Reflect on what’s involved. Sometimes processes exist for historical reasons and are no longer necessary or are only partially valuable. Eliminate the parts that aren’t valuable. Eliminate the parts that are ceremonial.
Even if you decide not to automate the process, you can at least walk away with a simplified manual process.
Step 3 – Establish objectives
Based on what’s involved, enumerate objectives and expectations of how automating the process will improve the work your organization does.
Consider how you can improve the process while you’re at it, but don’t deviate too much from the objective to automate the process.
Step 4 – Establish measures
Once you’ve established objectives for automation, discuss what you can measure to determine progress. What’s the current state of affairs and how will you measurably improve?
- Are you looking to reduce the time it takes to release software? What does it take now? What should it take after you’re done?
- Do you want to consistently apply a process every time you release software? Instead of relying on delayed feedback from a daily or weekly process. How often is it applied now? How often should it be applied after you’re done?
Step 5 – Enumerate value
Discuss what raising the bar would mean for your organization. Discuss why the objectives matter. Quantify and qualify the value of improvement. Discuss what measurable improvement would mean for your organization.
- What impact will automation have on getting software into the hands of your customers faster?
- What mistakes happen from manual repetition? What have mistakes cost your organization recently?
- Do people dread the existing manual process? What impact will automation have on morale?
- Are you faced with challenging regulatory constraints? How can automation provide the highest level of accountability (who, what, when, why, where and how) and expedite the process instead of slowing it down.
- How much time will be saved and what will you be able to do with that time?
- How can you save time and better react to problems by leveraging automatic notifications of problems or potential issues?
Step 6 – Make a decision
All of the prior steps exist so that you can make a decision. The steps above are methodical but shouldn’t be time consuming. They provide the basis with which to make an investment decision when investigating automation.
There’s no reason to tackle marginally valuable automation. If something appears marginally valuable but in your gut you know that’s not the case, then go back to the steps above and enumerate the unspoken value.
Why the automation is valuable will also dictate how you automate it. All the time I find organizations automating things inappropriately because they don’t know what makes the automation worthwhile.
For example, automated code inspections can make information readily available for review and improvement. But, if you only review that information on a weekly basis and there’s no value in reviewing it more frequently, then there’s no reason to inspect systems on a daily or hourly basis.
Only proceed if there’s substantial margin between the value of meeting your automation objectives and the potential cost. Substantial means two or three times the cost at least.
If nothing else, you walk away with a refined appreciation for an existing process and something to keep in mind for the future.
The steps above apply to automating any business process, not just software development processes. Do what’s necessary to automate it.
For software development processes, the following steps provide a template.
Step 7 – Manually trigger an automated process
I’m often asked, with software development processes: “Can this or that be automated?” Individuals fear that certain tools or processes will be difficult to automate. And, that may be the case at times.
First, get to a point where you can trigger the process manually. Everything should run automatically after you push the button.
The proverbial button is typically executing a command in a terminal. Can you script everything necessary so that a simple command kicks off the process?
Step 8 – Automatically trigger it
Once this is done, automating the process is a matter of applying an automated trigger. Scheduling this trigger is a matter of going back to what interval is valuable and applying the appropriate trigger. Perhaps a weekly schedule. Perhaps every time someone changes the software. Use value as your guide.
Step 9 – Gather results
Once the process is automatically executed, you’ll want to get information out of it.
What artifacts are generated as part of the automated process? Are there reports you want to archive? Is the output of the process meaningful? How do you detect problems in the process? How do you determine success?
However information comes out of the process, determine what you need to keep and how you will interact with it.
Step 10 – Act on results
Based on what’s valuable, act upon the information coming out of the automated process.
- Store reports for historical purposes, perhaps for auditing.
- Go back to what’s valuable and create notifications necessary to quickly react to the information coming out of the process.
- Make information easily accessible for review. By automating collecting the information, more time can be invested in analysis.
- Use the information to control other processes. Perhaps it’s valuable to trigger other processes. Perhaps it’s valuable to stop other processes on a failure.
Step 11 – Reflect
Observe the impact of the automation. Give it time to pay dividends and assess how it was and wasn’t worthwhile. Use this insight to invest in further automation projects.