Automation in Software Development
At Bastian Solutions, we are known for the work we do in the material handling industry, largely relating to how we help our customers increase the efficiency of their day-to-day workload through automation. But what about speeding up and automating our own day-to-day business processes? While I cannot speak for all employees at Bastian Solutions, I can speak for those of us working on software development.
For software developers, one of the main goals is to make software that is powerful, yet easy to use and simple to pick up. The benefits of creating software like this often come with higher levels of complexity on the developer’s end and an initial time investment, which may be significantly higher than a more basic version of the same software. However, we can take advantage of automation to help ease the creation of certain applications.
How We Automate Software at Bastian Solutions
A few examples of the tools and methods that are more “well known” are things like:
- Creating re-usable code packages
- Unit testing (which my colleague Jonathon Ferguson has written an excellent post about, that can be found here).
- Continuous Integration/Continuous Delivery (CI/CD), which allows for developers to rapidly create and release new versions of their code.
On my team, we have integrated the three above concepts into a single automated build pipeline that runs whenever we make updates to our code. A developer needs only to make the necessary changes to the code and push the code changes to Azure DevOps using git. Then, the build process takes place. If the code builds properly and passes all the unit tests that have been written against that package, then we are able to release the new versions of these code packages automatically and nearly immediately.
Check out this video to learn more about building with pipelines in Azure DevOps: https://www.youtube.com/watch?v=NuYDAs3kNV8
When To Automate... or Not
Just like automation in material handling, there can be considerable overhead when developing a powerful and useful solution. It is important to analyze the problem and decide if it makes sense to spend a few days (or even weeks) developing automated tooling that can be reused in the long term, or if it makes more sense to dedicate time to regular project work instead.
For example, when I first started working at Bastian Solutions, I got to know some of the tooling that my team had created prior to my hiring. I immediately tried to automate little things here and there because of how useful I thought it was. However, I failed to consider three key concepts:
- The complexity of the task.
- The frequency at which the task occurs.
- How much time and effort would it take to automate this task.
By doing so, I ended up using slightly more time in the long term than I would have had I done these tasks manually.
On the other hand, I have been able to contribute to the development of automating our deployment process. I work on the team that develops and manages Bastian Solution’s fleet management software, Exacta Maestro. When done manually, deploying new versions of Maestro is very time-consuming. Our team has developed scripts using PowerShell that both shorten the time needed to make a deployment, as well as allowing us to focus on other things while a deployment is taking place (such as writing more code).
Automation in software can be a very powerful thing, when done correctly. It can make processes more efficient, but evaluations of complexity and frequency of these processes are necessary to ensure automation is worthwhile.
There are likely going to be times when you think automation would be beneficial due to how frequently you are doing it, or due to how complex the task is. However, before you proceed you must first consider how much time it will take upfront to create the utilities for automation.
We hope you can improve your software workflows through automation!
No comments have been posted to this Blog Post
Leave a Reply
Your email address will not be published.
Thank you for your comment.