Ways to Cost-Optimize Software Development
Custom software development is far from quintessential and, thus, the use of the word “custom”. There might be a few similarities between some software applications, but each custom-developed software is a brand-new undertaking.
A recent Harvard Business Review article revealed that one in six IT projects has a cost overrun of 200%. Agile development introduces a whole new set of additional challenges to budgeting and planning. Standardization and economies of scale are hard to come by, but there are some universal routes to get there.
Covid-19 has accelerated the digital transformation in all industries. For software development, the key challenge is adapting to 100% remote work and the induced cost-optimization pressure in an uncertain economy. In opposition to the pre-Covid era, there is less need for keeping talent in-house. Sourcing remote, specialized industry teams seems to be the cost-saving tactic of the day.
A complete suite of such tactics is described below, ranging from way of working to infrastructure alterations. They can provide real operating cost savings, and do not just address the Covid-specific issues of today. Assuming constant maintenance budget levels, optimization might allow for the expansion of an organization's innovation portfolio, which in turn will help secure the competitive edge in the marketplace long term.
In this article, we will present key strategies and tactics to optimize costs in the current, uncertain environment.
When teams suddenly and unexpectedly went remote last year, leaders and organizations across the world faced a fundamental redefinition of workplace dynamics. Now, it’s clear there’s no going back.
Remote working will evolve, but it’s become clear that it is not just a contingency anymore and instead must be adopted by the long-term strategic mindset of leaders and as a fundamental arrangement for the whole organization, not just a select few. This requires a comprehensive strategy and some expertise.
Remote teams have been prevalent in the telecommunication industry for years, but these days even the most persistent lagers have been forced to adapt to this way of working and, for the most part, they have learned that letting people work from home is not the end of the world. In fact, in many cases, productivity went up.
A Gartner survey on 5 June 2020 of 127 company leaders revealed that 82% of respondents intend to permit remote working some of the time as employees return to the workplace.
Talent is available anywhere. Once a company goes remote there is little incentive to keep the team local or even in the same country. There are underappreciated talent pools of highly-educated experts available across all ICT fields from less competitive regions, where high supply and low demand lowers the cost for top skills. Numerous factors come into play, such as cultural compatibility and the work permit procedural overhead, so in many cases CEE might prove more accessible than far east, but the principle remains: there are fewer limiting factors in forming remote teams and minimal effort vastly expands elasticity.
However, developing a sustainable remote culture requires new approaches. Here are some of them:
- Communicate clearly
Miscommunication is the first sin. Misinformation passed on ensures none of the further steps matter. We have evolved for neither Slack nor email. We do need facetime and body language to convey non-verbal meaning. A video call is not a substitute for in-person meetings, but it is the closest thing we have, so let’s use it to its full potential.
Home office employees can often feel disconnected. Not everyone copes well on their own (though introverted developers might!). Regular calls, if not crucial, are important to maintaining personal relations and a sense of belonging to the group. It’s not just about the tasks!
- Mind home office dynamics
Research shows that home office employees tend to be more productive on average. But working from home means we give up a lot as well. We can no longer take part in small office ceremonies like trips to the kitchen for short coffee breaks or lunch breaks in the office cafeteria. It is important to encourage employees, especially the most productive ones, to maintain a proper work-life balance. The loss of a clear division between home and office can lead to overwork and burnout.
Good time management is useless if the tasks performed are of low value. In today’s competitive environments there is little place for mundane tasks that could easily have been automated. Useless, manual tasks can be demotivating, especially for star employees. A good rule of thumb is to make sure that tasks are automated on every level, BEFORE they are delegated. Use scripting, RPA, or, if possible, even AI/ML deployments to release your teams from tasks they don’t need to do and let them focus on high level work.
Optimized Workflows: Accelerating Agile Transformation
In the last 20 years, two philosophies have revolutionized software development as well as numerous other industries. If the first would be an agile manifesto, the second would have to be Eric Ries's bestselling book: “Lean Startup”. A combination of these approaches forever changed the way we look at project management and product development in general.
Although both were introduced a while back and precursor concepts like iterative development and lean manufacturing were explored decades ago, they are still often misunderstood and misused. IT manager should build effective cost optimization practices based on:
- Minimum viable bureaucracy - minimal governance because of the need to act quickly.
- Value-based prioritization - teams rapidly reprioritize deliverables, not tasks.
- Incremental and iterative planning.
- Quality assurance.
It used to be understood that agile is the preferred on-site framework, but with the advent of modern agile management platforms this is no longer true and while few years ago the issue was still the subject of debate. Adoption during the pandemic has proven that there are few disadvantage s and a lot to gain in taking agile teams remote.
Why is bureaucracy so resistant to efforts to kill it? In part, it is because it works. With its clear lines of authority, specialized units, and standardized tasks, bureaucracy facilitates efficiency on a large scale. It’s also comfortably familiar.
Despite this, bureaucracy is not inevitable. Since the concept was introduced, much has changed. Today’s employees are skilled, not illiterate; competitive advantage comes from innovation, not sheer size; communication is instantaneous, not tortuous; and the pace of change is hypersonic, not glacial.
Trust is a key in combating bureaucracy.
Base priorities on value
Focusing on core features and launching a product based on usability over visual impact can help narrow the scope of the design process and adjust the development budget. Consider implementing additional features only when there is proven ROI or an increase in the number of users. Also, avoiding complex and expensive features that do not provide value to users can be critical in keeping the budget in check. Ship on time and learn to let go of overhead functionality. That can wait.
In 2020 the very word “agile” sounds like a worn-out cliche, but the proper adoption of agile practices is key, and not as common as you might think. Adopting the agile software development approach fosters better collaboration and communication among stakeholders and developers, throughout the entire development process. It facilitates all sorts of structural and functional pivot possibilities. It allows customers to provide product insights and that feedback is vital for product revisions and improvements. Properly adopted, it has also shown to improve team motivation and increase productivity. But beware! Agility is not a swiss army knife, built for any scenario. Make sure you adopt the best framework for each particular case. Sometimes waterfall, or any of the other techniques, will simply work better, specifically when the project scope is well-defined in advance. Of course, the pace of change might put you in a different spot from when you have started once you’re done.
Utilizing manual and automated testing from the beginning of the development process helps prevent human error, assist in completing tasks, and aid in building scripts and performing quality-assurance testing. Both manual and automated testing are critical and help simplify the software development process in terms of time and costs. However, development of significant test coverage is labour intensive and, without proper methods and tools, it is virtually impossible to acquire. Test automation should be implemented by design and additional testing layers like mutational testing [link] should be implemented to extend testing coverage.
Flexible Architecture - Reduce upfront cost
Implementing DevOps helps speed up deployment, improve team agility, improve quality, and boost performance. It opens the door to better integration, automation, measuring, and monitoring of the software development lifecycle. This is step one for implementing a number of other good practices which depend on proper infrastructure and processes like continuous integration and development (CI/CD). It will most likely be challenging to build an inhouse DevOps team from scratch, as it is one of the most sought-after talent pools today. It is vital to secure the right people and, while bringing new employees on board may prove challenging, consider outsourcing. Infrastructure management is now mostly software-based, so why not go remote?
Integrate and deploy continuously
Monthly or bi-monthly releases were the norm not long ago. Today Amazon deploys a new release every 11.7 seconds. Netflix does this a few thousand times a day. Even Etsy deploys to its production servers 50 times a day.
Actually, most successful companies implemented CI/CD and raised their speed of deployment. Automating this process not only allows for faster increments in production but, most of all, more precise and wider testing coverage.
Low-cost maintenance - Lower TCO
Utilize Existing Solutions
One of the most efficient cost-optimization strategies is utilizing previously developed, tested, and supported design or code. This includes both commercial and open-source libraries and modules but also elements such as design systems (Google Material, IBM Carbon, etc.). There are numerous third-party service providers such as WaaS, SaaS, and BaaS, which offer solutions for a reasonable fee or even free of charge. Finally, there are also industry standards that should be used to both speed up development and help conform to standards. A good example for telecommunications would be TM Forum’s Open APIs.
Release Maintainable Code
One of the most prevalent misconceptions in software development is that the role of a software developer ends with deployment of working code. Most projects produce code that is hard to maintain and, as projects grow, up to 80% of developers’ time can be used up on “researching” someone else's code. Code should be clean, clear, and readable. Someone said: “clean code should read like poetry”. Others say it should be expected and unsurprising.
This is important because it is rare that one person does it all these days. Developers code in teams and it should be possible to rewrite and develop someone else’s code. This saves an enormous amount of time down the line, but since the benefits come later, clarity and good coding practices are often sacrificed in the name of speed of delivery.
While in the past, any sensible automation or platform deployment secured competitive advantage, today this software has simply become an everyday part of business. As companies continue to drive the business forward, compelling software development, adapting technologies, and methodologies that help reduce costs become very important. Alongside this, embracing best practices and lean development cost-saving measures also helps in evaluating the time and budget required. Paying attention to the above-mentioned aspects will not only help minimize costs, but will ensure the delivery of a sophisticated product at the right price and in the least amount of time.
I also encourage you to broaden the perspective of Hycom team members on the challenges of digital transformation. We are constantly facing these challenges, so we are more than happy to share our experience with readers. https://www.hycom.pl/hycom-blog-digital-transformation-planning
Before choosing ways and paths for realizing cost optimization, but also productivity, it is worthwhile to seek advice from a consultant experienced in the telecommunication industry.