Atomic habits to reduce software development cost

Shrutakeerti Behura
Volvo Cars Engineering
5 min readJul 10, 2023

Writing a piece of code is an art. The art retains it’s beauty with the help of proper maintenance. Maintaining the beauty needs quite a good amount of investment. In order to run a sustainable business, we must practice a way to reduce the cost incurred towards the development of our application.

In this story, I’m going to discuss what we do in day to day work to optimize software development cost.

Technical debt reduction

When we take a loan from the bank and doesn’t repay on time, the interest amount gets accumulated and there comes a time, where it becomes impracticable to repay the loan. In a similar manner, as a 96 years old company, our teams have built up numerous applications based on traditional and high level languages. Every old application can’t be rewritten in modern technology based solution because of it’s complex business rules. It’s too much cumbersome to refactor the code and fix smaller parts. That can be achieved by deploying code quality analysis tool e.g. Sonar , so that automated suggestions will help the developers to reduce technical debt.

So the way forward must be that whenever we develop any application, we must follow certain coding standards. Our code must be readable, extensible, maintainable and verifiable.

For example, if there are a lot of nested if else blocks, the cyclomatic complexity will increase and this will be very difficult to understand and maintain in later point of time.

Hence there must be a code quality analyser installed, which is an automated way to review the code.

Reusable components

We’ve worked on many applications based on business domain such as sales, product management, product configuration, customer management, customer ordering etc. Most of the applications are built with similar technology stack. In order to have consistent UI for an enterprise, a reusable component can be used not only across multiple parts of the application, but also sharable across different applications. This helps to reduce software development cost.

These components can be distributed as library or UI plugin, which can be shared across the teams.

Example : Most of the applications we have in the company use Azure Active Directory as the identity provider for the users. We’ve converted it as a reusable component containing authentication and authorization throughout the organization.

Lowering maintenance cost

It’s quite common for the developers to create multiple integrations during the application development. Creating a new integration is easy , but it needs an additional cost to maintain the same. We’re able to achieve this by procuring services from external vendors like Microsoft Azure. We’re subscribing their services to reduce maintenance cost. We can also achieve high quality monitoring of our application.

At Volvo Cars, we use 3 scale gateway services interact with other applications via restful / SOAP services. We’re continuously working on analysing the usage of network calls and database calls. We always try to minimize them as far as possible. We identify frequently used data and cache them. This helps us improving the performance of the application.

Functional Test and Load Test Automation

Automated regression test framework helps reducing the cost to test an application. This is also an important factor to minimize the cost to market by continuous shorter delivery cycle. We’re trying automate our application by preparig regression test suite and run it with our build pipeline.

We’re performing load tests by JMeter / K6. These tools are open source and very much user friendly. This gives us the forecast of cpu usage and performance impact in case of heavy load to our system.

Identify inter-application sharable common data

In supply chain business environment, there’re multiple dataset which can be used by many applications. E.g. market codes. This can be used across the applications. So we need not keep the data inside the application.

We have our own data lake, which can be accessible to all the applications and the big data technology driven application gives a better accessibility and faster retrieval to the data.

We’ve implemented event driven pattern that suggests the events to be published to an event hub. The subscribers can access the data from there. This will minimize the syncing between the applications.

Identify open source components

Before adopting a new technology or tool, open source technology is the better option for the proprietary software. Viewing and modifying open source components are easier. Hence support cost on external service provider can also be minimized.

We’ve a highly experienced architects group, who helps us to choose an open source to lower costs, faster project starts, faster iteration, more-flexible software development processes, robust community-driven support, and easier license management.

PMA (Problem Metrics Analysis) of historical incidents to reduce support cost

Historical support tickets must be gone through machine learning processes in order to identify frequently occurring incidents. Those incidents can be solved either via an automated way or through educating the users.

This will help reducing support cost and will make the application more robust. E.g. we’ve found a pattern in the server, where CPU usage was reaching to 90% and we had to delete older log files, because our application was frozen. So we decided to automate this by having a script which will indicate if the usage is reaching 80% , then delete the files from the specified path.

Last, but not the least, the application development team has a greater responsibility to adopt certain ways in practice, so that it will become a natural mean to reduce cost.

A popular saying proves this idea very well.

“A stitch in time saves nine.”

--

--

Shrutakeerti Behura
Volvo Cars Engineering

Technical Lead with more than 10 years of experience into development, architecting and solution designing. Now a technical lead with Volvo Cars .