
Cost savings in software development
Successful companies today cannot operate efficiently without software development – whether for their own applications or for adapting existing or purchased systems. We provide you with tips on how to avoid cost explosions in the process.
There are numerous ways to control software development costs. In this article, we focus on three selected areas: balancing automated test coverage within continuous integration (CI), using feature flags to roll out features incrementally, and implementing smart automation practices in continuous delivery (CD).
For more ideas on how to optimize the software delivery process, read our article “Mastering Software Delivery: Overcoming Development Hurdles.”
Align coverage with automated testing
Automated testing is essential to ensure that code changes are tested early and often. IT teams often aim for 100% unit test coverage and 80 to 90% integration test coverage. However, high coverage is not a guarantee of quality.

Unit testing
Mariusz Święs, Chief Software Architect at Striped Giraffe, warns against aiming for too much code coverage in unit testing.
“While these tests validate the structure of the code, they may overlook critical business functions. Furthermore, high coverage can be costly, often without a sufficient return on investment.”
Recommendations:
- Quality over quantity of tests: Instead of focusing on test coverage, invest in high-quality tests that verify how the code fits into the larger code base.
- Prioritize tests by code impact: Not all code created is equal. Prioritize comprehensive testing in high-impact areas such as billing and data.
- Focus on frequently updated components: Automate tests for frequently changed functions to ensure greater stability as your code evolves.
- Trust your team’s expertise: If your team has a strong track record of writing high-quality code, comprehensive testing of all minor functions may not be necessary.
- Set practical coverage goals: Aim for about 80% coverage; the last 10-20% can require a disproportionate amount of effort.
Integration testing
Integration testing, which validates entire workflows, often adds more value to a business than isolated unit testing. However, these tests are often poorly managed and focus too much on code structure rather than functionality.
For example: a team we consulted had developed and continuously executed 1,100 integration tests in Java, but only reviewed the results every three weeks. About 400 tests failed each time, mainly because the tests verified the code structure rather than the business logic.
“We recommended switching from writing tests in Java code to developing behavior-driven tests in Cucumber and its descriptive language Gherkin. This made it possible to simply write test scenarios in English and ensure that they included the verification of the business logic. Additionally, we recommended involving QA specialists to validate all test scenarios.”
This change improved the relevance of the tests and reduced maintenance.

Feature flags for controlled rollouts
Feature flags help balance rapid feature rollouts with system stability. They enable developers to release new features incrementally and maintain continuous delivery without major disruptions.
Key use cases:
- Incremental feature rollouts: New functionality is initially released to a small group of users, allowing teams to identify and troubleshoot issues. If successful, access is gradually extended to larger groups until the feature is fully rolled out to all users.
- A/B testing: Teams can monitor the performance of different versions of a feature or UI components to ultimately select the iteration that is most stable or well-received by users.
- Targeted user access: Flags provide precise control over which user groups can access certain features. This approach enables exclusive access, personalized experiences, and targeted feedback without additional code changes.
- Instant rollback: If a new feature causes problems or falls short of user expectations, you can instantly revert it to the previous version using feature flags.
Feature flags accelerate the delivery of new features by allowing developers to incorporate code changes without making them immediately accessible to end users. This enables “silent” testing in a live environment. This approach mitigates the risks of traditional deployment, which can result in costly downtime – as much as $5,600 per minute, according to Forbes – due to bugs that make it into production. Teams can also identify and fix problems incrementally, reducing the need for expensive rollbacks.

Strategic Automation for Continuous Deployment
In general, continuous deployment (CD) automates and regularly releases code changes, increasing agility and reducing human error. However, it is important to decide strategically what exactly should be automated.
Optimal use cases for automation:
- Environment deployment: Automate the creation and configuration of development, test, and production environments.
- Monitoring: Implement automated monitoring for real-time performance insights.
- Rollback procedures: Automate rollback processes to quickly return to stable versions.
- CI/CD integration: Automate the integration of CI processes into CD workflows.
- Performance testing: Automate performance testing to quickly identify issues.
Processes to approach with caution when automating:
- Critical feature releases: Features that are business-critical or require precise coordination across multiple teams should be deployed manually.
- Complex database migrations: Manual processing may be required for large-scale migrations, especially for critical data transformations, to minimize risks associated with data integrity.
- User Acceptance Testing (UAT): Manual testing remains essential to gather qualitative data and understand user experience.
- Edge-case handling: Manual monitoring of rare edge cases can be more efficient and enable teams to avoid complicated automation scripts that provide limited value.
By strategically selecting which components to automate and manage manually, organizations can optimize their continuous delivery efforts and increase productivity while ensuring high-quality releases.
Conclusion
Streamlining software development processes is essential to reducing costs and increasing efficiency. By focusing on automated testing, feature flags, and strategic automation in continuous delivery, organizations can reduce unnecessary costs and improve product quality. By prioritizing high-quality testing and controlled rollouts, organizations can optimize development and accelerate time to market, benefiting both the business and its users.
Optimize your software delivery with our proprietary 5-step program!