01 Software development
I am not rich enough to buy cheap things.A folk proverb in Croatia
When doing software development, it’s wise to follow best practices and use powerful tools. This way, you increase software development productivity and at the same time bring significant benefits to your client.
If you combine these two things into an formal process, you will introduce quality into every project you work on. And doing things the right way will come automatically for you.
To be specific, things like automated testing, pull requests and CI/CD (Continuous Integration and Continuous Delivery).
- Automated testing will significantly reduce the number of bugs. As the system you’re developing grows, it will improve its robustness and provide you with confidence during upgrades.
- Pull requests will improve code quality. They allow dev leads to oversee code quality in your project and helps the whole team learn and improve by reviewing each other’s code.
- CI/CD will solve the problems of deploying new versions. Everything will run smoothly and automatically. It’s one less thing for you to worry about.
02 BUSINESS VALUE
Integrate and deliver continuously
The CI/CD system is the one to point out since it improves the delivery of the project.
It worked for us on the Fitness Anny project, and my colleague Matej explained exactly why. Without it, meeting all goals would be a lot more difficult. Not to mention quite lengthy. But the CI/CD system made our problems disappear.
Before I dive into the “how”, let’s define what CI/CD are.
Continuous Integration is the practice of regularly combining small system upgrades into one cohesive unit.
Continuous Delivery is the practice that helps a software company release new system versions fast and regularly, ensuring they always have a dependable software version.
With this dynamic duo we got the benefits of automatically building a new version, automated testing and automatically publishing new files to our environment.
If something goes wrong, with one click we can revert things to the old version, and your users won’t even notice the issues. This is a project saver!
Life is much easier and more peaceful when we have mechanisms that ensure robustness and service continuity.
How much will that cost? 🤔
Maybe you’re skeptical when you look at the initial cost of a system like CI/CD. Emphasis on the initial!
For this system to work, we have to build the infrastructure. There are several servers the system needs:
- Separate servers for building, testing, and deployment.
- Servers for the staging environment.
Staging environment server is the one where software development company will deploy the changes and let the client confirm everything is okay before they release the new version into production.
As you can see, it is a complex system that takes time and costs money. To make it worthwhile for the software development company, they need to charge a higher hourly rate or offer a more expensive service in some other way.
Cue in the emphasis on the initial cost
Since you are a serious company with healthy ambitions to grow your project, it’s wise to automate things from the start. Investing now for the future is a smart choice in the software world, because doing things manually on big projects tends to get costly pretty soon.
The manual approach seems logical at the start, when the tasks are simple and the project is small. But as the project develops and things get more complex – don’t you wish you automated processes from the beginning and made your business life easier?
If you’re nodding in agreement, keep on reading.
Advantages of an automated process
Let’s paint the scene.
You’ve ordered an upgrade for your app and we’ve been preparing it for 3 months. Now it’s time to release it to the public. Users are starting their workday and for that they rely on your app. That means that deploying the new version shouldn’t cause any interruptions.
There’s two directions in which this story can go:
In this case, we deploy the new version of the system manually. The new version is ready, it passed all the tests and we proceed with the deployment.
Because the system is large and everything is done manually, the deployment takes an hour. It seems to be going well. But soon enough, the support line starts ringing and the reports of a bug that prevents the use of the app start coming in.
The support team calms down the users while the development team searches for the bug. Stress levels are HIGH.
After an hour, developers find the bug and start fixing it.
Three hours later, the bug is removed. Another hour goes by for deployment, since everything is manual. Your users are disappointed because they’ve lost half of their workday. It’s pure luck that the error wasn’t more severe.
Your total cost includes 1 hour of support, 5 hours of development, and a bunch of disappointed users.
Here, everything gets done automatically. Building, testing, and deploying go through a CI/CD system.
The system is large – but build, test, and deployment take 10 minutes. It seems to be going well. Not for long. The support line is in the red. A signal that there’s a bug blocking your users from the app.
The support team calms down the users. Your development team rolls back the old system version where everything works properly within 10 minutes. That’s the perk of an automated process. Your users are calm, they can get on with their work day.
While they’re working, the development team can now calmly find the bug and fix it.
Two hours later, the new system version is online. Life is good.
Your total cost includes: 10 minutes of support and 2 hours of development. Users work day was only briefly interrupted, and they understand it was only temporary.
All in all
These examples are illustrative. In reality, all would be much worse because under pressure, people make even bigger mistakes.
This is not only true for the software development, but also for the design part of the project. But even here automation can make things easier. Read how our UX designer Petra explains what are design systems and their role in delivering a better project.
To sum up, you will pay a higher hourly rate for a partner using powerful tools. But the overall service will cost you less. And your reputation will remain intact, earning users’ respect.
For a software partner that does things manually you’ll pay a lower hourly rate. But the overall service will be more expensive. And on top of that, there’s the steep price of losing your users’ respect.
So what’s it gonna be?
The lack of a quality process can be tolerated while the project is simple. But every successful software project will grow and become more complex.
Automated process is essential for quality development and maintenance of such systems.
Or as the saying goes: I am not rich enough to buy cheap things.
Subscribe to EnterWelt
All the advice you get while working with us. Now available in your inbox once per quarter.