This article aims to explain the cost of web app development. Many fixed-cost projects underestimate the costs in terms of money and time. And while there are many reasons for this (e.g. poor judgment, requirements that were not clear, and salesmen trying to win your bid at all costs), the main reason for underestimations is that it is hard for humans to think in exponential terms.
The more complex an application, the more time it takes to implement changes in functionality. A feature that could have been implemented in just one day at the beginning of the project could require several days six months after the project starts.
Let’s take a look at this process from a scientific perspective. Systems theory tells us everything is a system consisting of various elements at different levels of complexity.
Web app development is an example of such a system.
At the first level, we have the basic elements of the future web app (e.g. user stories or descriptions of individual pieces of web app functionality). Based on these, we will build the next level of the system. This is our base. Making changes at this level is easy.
At the second level, we have the connections between the elements – each element is connected to others by means of information exchange (e.g., in order to allow users to view their profile details, we need to make sure they are logged in). At this level, complexity starts to creep upwards – introducing a new element that could impact existing connections between other elements would not be that easy (e.g. adding a new user role to a web app or adding some specific new functionality to existing user roles).
Building the structure of a web app is the next level. The structure combines all of the elements and the connections between them into one body. At this level, the entire system (the web app) starts developing a brand new quality. This new quality can only be associated with the system as a whole, and it’s not simply a collection of qualities or of individual elements. It can be compared to a basketball team. If you follow sports, you understand the difference between a set of players and a true team.
It is obvious that the complexity of the software grows with time, and that means that the cost of development grows as well. Sometimes adding a small piece of new functionality might require rebuilding a number of connections between existing elements.
Let’s use a home construction project as an example. Imagine the floor systems, walls, and roofing are completed. Adding electrical wiring at this stage costs X amount of money, but once you install and finish the drywall, the cost of replacing electrical wiring will grow exponentially. Unless you are an electrician, even some small changes to the layout of wires after you put the furniture in could cost you a ton of money. If you’ve worked with electrical contractors in the past, you know what I mean. 🙂
So, what should we keep in mind when starting a new project? Clients need to understand how the cost of changes grows exponentially along with the growing complexity of the web app and not underestimate the importance of proper planning in the beginning. And developers need to plan for unexpected changes along the way.