• Tomasz Soroka

5 reasons why your application development takes so long?

When developing an application or digital product, it may happen that work on the application, closing subsequent stages of the project, or implementing new functionalities takes longer than planned. This situation is not unusual or unheard of, but you can prevent delays if you know what they may be causing.


Today I'll tell you about 5 reasons why your application development takes so long. What is the reason that you do not necessarily get the results you would like to get?

If you are a "non-technical" person, but deal with a development team, or with an external company that you outsource your application development to and would like to understand where the delay may be caused by this article, this episode is for you!


The first thing you should understand and which is very important is that if we are talking about challenges, problems, top 5 reasons why your application development does not go as it should, the reasons should always be looked for in one of 3 areas: process, tools, or people.


All these areas make up one whole and it is these 3 elements that determine how efficiently your team functions. On the one hand, it may so happen that you can use super tools by inexperienced people - in which case you will not get the desired effect. On the other hand, you may have a team working for you that is chaotic because no one has ever put everything into a rational process. The key is to be aware of it and be able to identify these problems and solve them effectively.


Below I will list and discuss the top 5 reasons why your application development takes so long.


NUMBER 1: THE ARCHITECTURE OF YOUR SOLUTION

Number one is the architecture of your application, i.e. 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 for something to work, for your application to function as it should, at the same time 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). Since it's an MVP, it's more of 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 for this, etc. However, when you build a large skyscraper, you must have a completely different approach to it. 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, there is no way to change this 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 "somehow" ”It worked.


NUMBER 2: USING THE BAD TECHNOLOGY


The second thing you should pay attention to, which may be the reason that development is not going as it should, that you have been waiting a long time between releases of your application versions is using bad technology, bad frameworks.


I will try to illustrate this problem by showing you how to choose the technology and frameworks to build a mobile application. Because it is the choice of technology at the very beginning that is crucial here.


As you probably know, the mobile application can run on an IOS or Android phone, these are the two most popular solutions. Of course, you can also build an application that also works via a browser, for example. The most important question at this stage is: What technologies should you use?

Should you use native technologies? So your team will build separate applications for IOS and separately for Android. Or should you choose Cross-Platform technologies such as Native, Flutter, or Xamarin? Or should it be a PWA application?

How do I choose?


If the requirements are such that your application must use, for example, the hardware of the device very much, then probably creating this application natively may be a good solution. On the other hand, if you are developing a lightweight application, it should look the same on many platforms and it 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, on the other hand, 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 approach 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.


NUMBER 3: TECHNOLOGICAL DEBT


Another thing that can affect the development delay of your application is the so-called technological debt. What is technological debt?


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 comes out, a new version of Android, a new version of Flutter comes out, a new version of React Native, native libraries, etc.


Your team should have time to update these versions of these libraries and frameworks as part of the application they create for you. The same applies to the functionalities of the application, they also change. Functionalities should be refactored - we should be changing the code, and this is often not done because there is never time for it.

The effect is that after a long period, if your team does not have time for it, it turns out that it is very difficult to manage, there are many errors in the solution, it becomes more and more difficult to manage. What's worse, if you use old technology, there are fewer and fewer specialists available on the market who will want 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.


NUMBER 4: APP VERSIONING


Another thing worth mentioning is versioning the application. It may seem trivial it is not. As you can see in the diagram below:

It very often happens that development teams have a very messy application versioning process. It turns out then that we have an application that is available to users, we find a bug in it and we have a big problem because the developers are busy creating a new version of the application and nobody has time to fix the versions released to users - it should never be like this.


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, i.e. on the next version of the solution.


NUMBER 5: POOR FUNCTIONALITY PREPARATION FOR DEVELOPMENT


The last thing that affects development on the one hand, but also affects product management a lot - that is, everything we do before a given functionality goes to the development team - 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 want 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 this functionality because they expected something different.


What is worse, we spent money that will never be returned. That is why in Product Manager 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 I want to deal with this at all and why do we want to have such functionality in the application?


The next question we should answer first is: What user problems will we solve? And are the users sure that these problems have? Do they sometimes not solve them differently? Not necessarily with the help of our application. Maybe it will be the case that even though we will do this functionality, no one will want to use it.


The next step is to validate our idea with users. This is a step that is most often omitted and then such functionality is created based on a hypothesis, as it seems to us, but it is always worth asking a few users if what we have prepared is what they expect, what they need.

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 - can we pass the functionality to development. The likelihood of missing a hit decreases greatly.


Summary: If your application development is taking longer than planned, it is likely that in which of the 3 areas (PROCESS, TOOLS, PEOPLE) there is a problem. The top 5 reasons why your app's development takes so long are:


  1. Architecture of the solution

  2. Use of bad technologies/frameworks

  3. Technological debt

  4. Digital application/product versioning

  5. Bad preparation of functionalities for development


WATCH MY VIDEO: