I screen for automation skills during software engineer interviews. “Tell me about a time where you solved a problem using your own code.” I need to hear the story about a problem, how they recognized that automation could help and the journey to create.
Software engineers need to automate tasks of any size and complexity.
Successful automation improves all three pillars:
Precision: repeatable process over multiple iterations.
Accuracy: the results solve the underlying problem.
Speed: the task is completed in less time.
Career survival depends on precision, accuracy and speed to delivery quality work in less time. Automation is our only hope.
Case Study - The Impossible Update
Our app had a very simple, easy-to-follow 107 step process to run the latest code. (Obvious sarcasm). The update process was a pain in the butt. Dubbed The Impossible Update, it was darn near impossible to do it without error. As we scaled the team size, the engineers frequently reported failures running the latest code. The update process was not precise, was not accurate and slow!
With over 100 team members, if each spent 4 hours per week getting the latest code then we spent 10 work-weeks of manpower on non-value added tasks. Per week!
I lead a mini project to automate the update process. Our tool became a must-have for engineers on the team. The app managed their dev environment and tamed the a 3-headed beast into a cute puppy. We delivered on the three pillars of automation: the update became precise (the same steps were used each iteration), the update became accurate (the result met the requirements) and it was faster than the manual update.
It wasn’t easy. We made some mistakes along the way. Other engineers added changes after they saw the promise. Slowly but surely, one by one the problems performing the update went away. The update will never be perfect but it’s no longer the biggest problem.
Pull Request Bot
Another example: an engineer created a bot to message the team when they created pull requests. Now, no one needed to remember to ask for a code review because the automation handled it.
Days-To-First-PR
Here’s another: I needed to track the number of days it took for new engineers to complete their first pull request. I created automation to retrieve the stat directly from Azure DevOps instead of manually tracking data points in a spreadsheet.
Bug Tracking
One more: I needed to reconcile which bugs were fixed in older versions of our software. The information was stored in the tickets but someone needed to review everything. Again, I created automation to build a report by crawling the tickets the completed tickets and fix versions.
Automation can turn the terrible, boring and manual task into a painless click of a button. And because we are software engineers we have fun writing code to solve problems. Now, the awful manual task is presented as an interesting challenge to automate. Win-win.
Find the problem that is plaguing you, or your team, and use code to solve it. Seriously, the possibilities are endless. It’s the terrible submission form, the environment setup, the error prone process or the slow deployment.
Go forth and conquer.