Using automation in the development pipeline
Using automation in the development pipeline
The benefits of automation in development are relatively straightforward; it saves time and money, reduces errors, and improves efficiency. All great things. Especially when you consider that inefficiencies cost many organisations 20-30% of their annual revenue.
Developers are writing code all the time, and just like in any job, developers’ time costs money. It means we welcome anything we can automate that will save time, reduce expenses, and get the project done on time and to a higher standard.
When it comes to automation, the tasks automated are typically the mundane, repetitive tasks that take a long time or those that need to be repeated over and over again. At Createk, our team is highly skilled and we want to get the most out of them. So sometimes this means automating the daily, repetitive tasks to free up their time to focus on the more complex jobs that only a skilled developer can do.
Here are a few ways we use automation in the development pipeline and how it helps us do our jobs even better.
The tools we use
There are plenty of tools out there that look to speed up and simplify the development process.
Sometimes it’s simple things like text editors that have auto-complete to help you type faster when editing code. Two we rate highly are RubyMine and VIM. Both are highly configurable and help you work smarter, not harder.
Tools like this all have features built in to help you be more efficient. Much like if you were typing on Microsoft Word, they can help to check the syntax of your code, help you navigate code quickly from one point to another, split your screen and move a section of code from one to another, or make changes in two related places.
Not only do these help you work more efficiently, but they also lead to fewer mistakes, making for quicker, more reliable development.
As developers, we also look at each other’s code and review it. Some aspects of this can be automated, such as style, complexity, and security issues. Tools can help you identify how hard and expensive a piece of code will be to maintain. Code Climate is one we use frequently.
In development, this process of automated checking is referred to as ‘linting’. It’s about getting rid of the excess, assuring you’re meeting coding standards, avoiding any unsafe practices, and reducing any security issues. With the right tools, you can lint as you go, therefore saving time and reducing the likelihood of errors later down the line.
Using Docker locally
We broke down everything you need to know about Docker here. But it’s another example of how automation can help the development process run more efficiently and simply.
Docker automatically sets up local environments for developers. Instead of having to download specific packages or software for each individual project, we can automatically run any of our current projects from any machine.
In this way, Docker affords us more flexibility, enabling us to jump from project to project seamlessly and minimise any wasted time and effort.
Any code testing a human can do can just as easily be automated. But saying that, we can’t and won’t automate all testing. There’s still a need for human, exploratory testing to review a piece of code and ensure it’s fully secure and reliable.
There’s a theory that developers who write code and test it have a certain bias towards their own product. They won’t write tests that could break it. This is why exploratory testing and code reviews are essential. They put code to a full, unbiased test. This is an example of how there are some manual tasks we choose to retain despite their being automated alternatives.
Automated testing is great up to a certain point. You need some human intervention to confirm maximum security and quality of code.
Deployment involves shipping a new version of a piece of code or product. It usually takes place when there have been new fixes made, features added, or enhancements to a product.
Automation means this can be done automatically. For example, our work with CR Worldwide included setting up continuous deployment.
When we began working together, they did infrequent deploys – every few weeks or months – and a lot of manual testing. Their deployments often took several hours or days to plan and execute, which meant increased overheads and wasted time.
We changed this to deploy automatically every day, meaning once tests are run and human testing confirms no issues, little or no human intervention is needed through deployment.
To automate or not to automate?
Automation saves time and money for projects, while giving developers the opportunity to focus on the more enjoyable aspects of their role. By automating the daily, mundane, administrative-like tasks, you reserve your resources for the complex tasks that have higher stakes.
But there are other benefits to consider. Think about how long someone else has to wait for you to do a certain task. By getting it done quicker, how much time and money are you saving them? How often will you make a mistake? And how much time might be spent fixing this mistake?
When it comes to deciding whether or not to automate, you need to question how often you do the task and how long it takes to complete. There are costs to automation as well. Sometimes, it may cost more to try to automate something than it would save you. And in these instances, automation might not be the best choice.
For automation, it’s better to go for the low-hanging fruit – the simple tasks your team does twenty times a day. Over time, the time and cost savings would massively add up and make any investment put into automation worthwhile.
At Createk, we apply the same logic to our clients as we do our own business. We automate the tasks that will prove most beneficial to your projects and will help us to be as efficient as possible. If you’re interested in our services, give us a call on 0330 995 0685.