• Tomasz Soroka

Why does your application development take so long? 5 most common reasons.

Sometimes it occurs that the development of an application or other digital product doesn't go as well as planned. Working on the solution, closing subsequent stages of the project, or implementing new functionalities takes much more time than it should. In this article, I'll describe the 5 most common reasons why your application development takes so long.


What is the main reason that you do not get the results you would like to get? This article will help you to diagnose and understand the possible source of your problems with app development (no matter what if you have your own development team or collaborate with an external company responsible for your application development). It's the first step to prevent delays and improve the whole process.


We have 3 areas of every project: PROCESS, TOOLS and PEOPLE. In those 3 areas you may find the reasons for problems with your development. Those three elements determine the efficiency of your development team, they should work together and every one of them should function well. For example - you can use super tools, but when those tools are used by inexperienced people, you will not get the desired effect. You may also have a great team of people working for you, but their work will be chaotic if you don't put everything into a rational process. The key is to be able to identify challenges in these areas as fast as possible and solve them effectively.

1: THE ARCHITECTURE OF YOUR SOLUTION

Number one is the architecture of your application, for example the plan based on which developers build the entire solution. You can think of it as a foundation. If the foundations of your application are not well defined, not well laid out, the team will waste a lot of time doing something for your application to function as it should, but this effort, this time will be invested in the wrong place.


Imagine you are building a summer house. This holiday home is your application, its first version (MVP). It's more like a holiday home than a large skyscraper. The foundations of a summer cottage are different from those of a high-rise building, right? In the case of a summer house, it is enough that the foundations are basic, they do not have to be very hard, deeply buried in the ground, we use other materials, etc. However, when you build a large skyscraper, you must have a completely different approach to it. The architecture must be different.


The big problem with software development is that digital applications/products that are initially built as MVPs suddenly turn into huge projects that need a completely different architecture. Nobody thinks about creating a large, scalable architecture when creating an MVP, because we only build MVPs.


At the moment when our MVP becomes a full-fledged product and the team does not have time or there is no way to change the architecture (foundations), problems arise. The skyscraper has no chance to stand steadily on the foundations of the holiday home.

Changing the architecture at this point is not easy, but it is required and it is worth remembering - if you are building a large application that is based on the foundations of a summer house, developers will probably waste a lot of time to make the application work.



2: USING WRONG CHOSEN TECHNOLOGY

The second thing you should pay attention to is choosing the right technology, frameworks. I will try to show you how to choose the technology and frameworks to build a mobile application. This choice is crucial at the very beginning.


As you probably know, the mobile application can run on IOS or Android, these are the two most popular solutions. Of course, you can also build an application that also works via a browser. The most important question at this stage is: What technologies should you use? Should you use native technologies to build separate applications for IOS and Android? Or should you choose cross-platform technologies such as Native, Flutter or Xamarin? Or should it be a PWA application? How to choose?


If the requirements are such that your application must use, for example, the hardware of the device, then probably creating this application natively may be a good solution. On the other hand, if you are developing a lightweight application that should look the same on many platforms and doesn't use a lot of advanced hardware at the hardware level - building natively will make it take twice as long. Why? In that case you need to have two teams, you have to sync it all and the costs associated with it will go up. If you are building something in between, hybrid technology will probably be perfect.


After choosing the technology, you must choose the appropriate frameworks.

Imagine that we build applications in React Native technology and you need to manipulate images in the application. Here, too, you can do it in two ways.

You can either use a library, i.e. an element that works the same on IOS, on Android, or you can build such a library yourself. A solution, functionality that works more natively and is separately integrated with IOS, separately with Android as part of the React Native framework.


The two approaches indicated above will generate in the first approach: more challenges and more time, but you will be able to adapt more to a specific platform. In the second approach, you do something cross-platform and the same code is running on iOS and Android, but you have to be careful about that, because if you want to use something specific to the iOS platform, it may not be possible for Android.


It is very important that you are aware of this, how important it is to choose the right technology and frameworks. Analyzing options and focusing on the most appropriate solutions adequate to the needs of your project.


3: TECHNOLOGICAL DEBT

Another thing that can affect delays in your app development is the so-called technological debt. What is it? Technological debt, as you can see in the diagram below, is code, libraries, technologies, technology versions that change over time.


Just as you know that from time to time a new version of IOS, a new version of Android or a new version of Flutter or native libraries comes out. Your team should have time to update these versions of these libraries and frameworks as a part of the application they create for you. The same applies to the functionalities of the application, they also change. Functionalities should be refactored with changing the code.


When your team does not have time for it, in a longer time period it turns out that it is very difficult to manage and there are many errors in the solution. What's worse, if you use older technology, there are fewer and fewer specialists available on the market able to develop this solution further. There are many methods to avoid this, but you need to keep it in mind all the time and you need to give your developers time to manage this technological debt.


4: APP VERSIONING

Another thing worth mentioning is the app versioning. It may seem trivial, but it is not. Just see the diagram below:

A messy application versioning process may be a source of problems - especially when we find a bug in an application available for users and the developers are busy creating a new version of the application plus nobody has time to fix the versions released. If a fatal error is found, by appropriate management of the versioning process we should be able to correct the error within a few hours and release another version of the so-called hotfix, which has no negative impact on what the team is currently working on.


5: POOR FUNCTIONALITY PREPARATION FOR DEVELOPMENT

The last thing that affects development on the one hand, but also affects product management a lot - is bad preparation of the functionality for development.


In the diagram below you can see the steps that should be performed for larger functionalities, with smaller ones you may need to perform some of them, but not necessarily all of them.


What is important? You should avoid situations where someone comes up with the idea, for example, "let's make a new version of the calendar!", and this idea goes straight to development. After releasing such functionality to users, it will turn out that the idea was not right. Users are not satisfied with the change, they are not satisfied with the functionality because they expected something different. What is worse, we have already spent money that will never be returned.


That is why in product management you should always go through the appropriate steps and the first thing that should be explored and defined is what value will the functionality bring to your business? Why do we want to have such functionality in the application?


The next question we should answer is: What users' problems we solve? And are the users sure that these problems exist? Don't they solve them differently, not necessarily with the help of our application? Maybe it will be the case that even though we made this functionality, no one will want to use it.


The next step is to validate our idea with users. It should't be omitted! It is always worth asking a few users if our solution is exactly what they needed or expected. How to do it? You can prepare simple mock-ups of prototypes and show them to users. Only when we have confirmation that our idea, our hypothesis has a real reflection in the expectations of users - we can pass the functionality to development.


SUMMARY

When your application development takes longer than planned, it is likely that there is a problem in one or more of the 3 areas (PROCESS, TOOLS, PEOPLE). The 5 most common reasons are:


  1. Architecture of the solution

  2. Use of wrong technologies/frameworks

  3. Technological debt

  4. Application/digital product versioning

  5. Bad preparation of functionalities for development



Need some help? Use our checklist FOR FREE to help you find problem areas in your app development.