Have you ever wondered why software development is becoming more and more costly? It would seem there are many frameworks and development kits on the market designed to speed up development and reduce costs. Nevertheless, over the past 20 years, the cost of software development has increased by almost 10 times, and the process itself has slowed down. What influenced this? Digitalmara’s experts identified the following 6 reasons:
- Unstable requirements
- Wider target audience
- Increased project complexity
- The need to support various client applications
- Using third-party libraries and frameworks
- Increased privacy requirements
Let’s go over these factors in more detail.
Unstable requirements
How was software being developed 20 years ago? In those days, a rather rigid methodology was applied: Waterfall. In this model, the stages of software development followed one another in a defined pattern: first, creation of a comprehensive specification, then the development of the architecture, then coding, then testing, and finally release of the product. The full specification allowed the team to estimate the time and cost of the project more accurately, design the right architecture, and, in general, develop the software’s functionality step by step, relying on stable requirements. Frequent changes in the requirements were not expected. The entire development cycle could take years, as there was no big competition in the field of software products at that time.
What do we have now? Due to increased competition, companies strive to bring a new product to market as quickly as possible. It may take only six months to go from idea to release of software, which is clearly not enough to elucidate all the requirements. In addition, products are now being developed in a rapidly changing environment, which affects how software will be implemented and introduces uncertainties into the project.
To respond to these external challenges, development teams began to apply Agile methodologies, moving away from full specifications and a sequential process. A small piece of the more or less identified requirements is taken into development, then testing, and, voila, we get a product increment. All activities — analysis, design, coding and quality control — can be performed in parallel. This process sounds tempting, but in fact, with frequent changes in the requirements, you either need to put excessive flexibility into the product configuration, which makes the software more complicated, or keep a team in the wings that can implement changes as needed.
Wider audience
Compared to the early 2000s, the target audience for software has grown exponentially. Even if we put aside discussion of firmware and system software, which can now be found in almost any device, and talk only about application software, then sit’s clear that potential users include virtually everyone on the planet, from toddlers to seniors, regardless of gender, country of residence or education. It’s not just about games and various types of communication tools; people now use software to interact with the TV and smart home, read the news on the Internet, order purchases, and much more. In addition, software manufacturers should take into account that their audience may have physical limitations (such as impaired vision or hearing, inability to distinguish colors or to speak).
The rise in users also increases the load on the servers on which your system is deployed. Even if you’re a mobile game maker, most likely you need a backend to sync information and store game scenarios, which then will be downloaded to the client side. If your software is at the enterprise level, which must meet high-availability requirements, in building your architecture you’ll need to consider its flexibility in terms of scaling and how capable it is of self-recovering, which significantly affects the cost of development.
Increased project complexity
We’re not talking about complex mathematical algorithms here. For application software, complexity is primarily reflected in what’s required for the user interface. In addition to various visual effects, modern software uses custom unique widgets, and all this splendor should work equally well on different operating systems, under different browsers and with different screen resolutions. Old-school developers sometimes recall with nostalgia those great times when the GUI was developed almost exclusively for Windows, standard controls were used, the basic web functionality was launched only on IE6 and no one had ever heard of UX.
The expanded ecosystem of projects has also contributed to their complexity. You’re unlikely now to find software that does not require interaction with anything else. Common examples include integration with payment systems, cloud storage and chat systems. The most difficult challenge is in the enterprise sector, where companies often need to release new software that must be integrated with legacy systems. Any third-party software introduces an element of uncertainty into the project and is a potential risk, which means it can affect both the timing of the project and its cost.
The need to support various client applications
There was a time when the client and server parts were being coded in the same source file. And it was being done quickly and there were almost no bugs — or so the developers thought :). However, increased requirements for UI/UX and the need for various client applications (mobile, web, and even desktop on Linux) made it necessary to separate software into different subsystems and layers. The code has become more complex, yet, as paradoxical as it may sound, also clearer and more reliable. Nevertheless, the fact remains – the more layers you have in the application, the higher the development cost.
Using third-party libraries and frameworks
But what about third-party libraries and frameworks that are designed to facilitate the development process and reduce effort? There is a subtle nuance here: in general, using third-party software help reduce the effort required, but only if:
- You are using stable versions of this software;
- Your requirements can be “crammed” into the limitations imposed by third-party libraries.
If the first point is violated, the team can waste a lot of time looking for the causes of problems in their own code, while the error is actually on the side of the integrated library. The second point can lead to a situation when you need a unique design (but the development kit does not support the extension of widgets) or a customized workflow (but the framework used does not provide the necessary conditional branching). In this case, you will either have to abandon the idea of using a third-party library and rewrite everything yourself, or cut the requirements for your product.
Increased privacy requirements
With the movement of business to the Internet, the requirements for information privacy have increased. And it’s not just about banking data or sensitive business data. People are used to sharing everything online: Instagram is replete with photos showing personal life, Twitter is full of thoughtful (and not so) statements, and political battles can arise on Facebook. But the main concern is that information that has once entered the Internet can remain there forever and in the future may be used against the person who posted it. Therefore, countries have been developing laws to protect personal data. This is a fairly new trend; for example, the GDPR came into force in 2018. Suppliers whose software doesn’t comply with this law may be subject to a multimillion-euro fine. After weighing the pros and cons, it’s clear that it’s best to spend the additional budget to bring your product in line with regulations for storing and using confidential data.
So how can you minimize costs and risks?
It all depends on the specifics of your software.
Does your future product implement a unique idea? It makes sense to focus on this idea, releasing the first version as soon as possible and staking out a place in the market. Subsequent releases may already contain more advanced functionality that overlaps with your competitors’ products. However, this approach must be used with caution on systems where the cost of error can be too high. We all remember the sad experience with the Boeing 737 Max, when poorly tested software cost several hundred lives. Therefore, if the pitch is to release an MVP (minimum viable product) from scratch in a couple of months, understand that you will either have a very small piece of functionality actually implemented, or the product is likely to contain a large number of bugs.
Do you have a very diverse target audience, and for its maximum coverage you need a mobile app, web app, or even desktop app? Look towards cross-platform development to maximize codebase reuse.
Is your application from a specific domain area (e.g. Healthcare)? It makes sense to look for a company that offers not only good programmers but also competence in this specific area. The presence of expertise significantly reduces the time needed to work out the requirements. Moreover, such companies may have original boilerplates for a quick start of your project.
Do you need to attract investments to implement your idea? Try starting with clickable UI-prototype. This approach will solve two problems at once:
- Business analysts, together with designers, will work out the main user flow and minimize the risk of missed requirements.
- Having spent a small budget, you will receive a visualization of your idea, which can be presented to business angels in the future. Be assured, a clickable UI prototype that allows a potential investor to imagine how the system will function is much better than a boring static presentation in the form of a slideshow.
The Digitalmara team is ready to help you
Finding your way through software development today may feel like wandering through a maze, but DigitaMara’s professionals are ready to guide you. In addition to expanding your team with our specialists, DigitalMara offers expertise in domains such as omnichannel customer engagement, high-load systems, cloud solutions, and business processes automatization. Get in touch with us, and together we will succeed!