Development Group

Mobile Development

Back to Blog

How to estimate a mobile application

September 4, 2018

Nowadays a lot of businesses are thinking about creating their own mobile applications to deliver a new product or improve those, that are already running. What is common for all of them? It is the budget. All of them, and probably you, are thinking - "What is the cost, how much will it take to implement my idea?". And it is not only about the money, but the time as well.

In this article, I'm going to share our experience in estimating the mobile projects. We’ll go step-by-step through the estimation process where I explain how it works for our company. It is challenging to deliver a complex solution on time within the estimated budget and I hope that this article will help you. Let's start!

Application idea

Before starting the estimation we should collect some essential information about the future application and its idea. Using simple language, describe the idea of your application. Don't dive into details of implementation but keep the focus on the general vision and usage. At that stage, you don't need implementation details. This part is an intro to your idea and it should be simple and straightforward so other people can easily understand the concept.  

Bird's eye view

After the application idea is clear to all who will be involved in the project, we can proceed. It is good to have an overall application`s view that we call the navigation map. The navigation map is a view of your future mobile application, which illustrates the user’s flows screen-by-screen. That view should demonstrate all screens and their connections, which currently fit into your idea.

User interface and its design

So, we now can explain our idea and share a simple description of it. Plus, we can demonstrate the view of the application by sharing the navigation map. The next step is to prepare a user's interface design. Ideally, this should be created in conjunction with the development team and I recommend to do such because it will save your time and money. The key point here is the communication between designer and developer on early stages of application UI creation. Exchanging implementation details during the design phase will help to avoid adding redundant UI elements and make sure that UI is feasible from a development perspective.

Native or hybrid

To receive an estimation you should choose the technology stack and be aware of its pros and cons. I wouldn't describe why native is better than hybrid development because it is a topic for a separate article.

What platform?

After you've chosen the technology stack it is time to think about your target audience. This will help you understand, what devices are supported by your application. Should it be iOS, Android or both? What exact devices, phones only or tablets as well? You need answers to these questions to get an estimation and you can find them by understanding your target audience.

The estimation process

Basically, all previous steps were made to make it possible. At this point, we should have enough information to divide the required scope into logical entities. The goal is to make the work breakdown structure that can be then analyzed and hours can be associated with every task. Let’s take an example and make the decomposition of the user’s authorization flow. Usually, such flow can be divided into:

- User's interface (UI)

- UI’s logic implementation

- Networking entity for API communication

Now you can estimate each part of authentication flow and calculate how many hours is needed for implementation of this particular piece of functionality. After all logical entities are decomposed and estimated in the same way, you’ll get a preliminary project estimation. Also based on work breakdown structure and estimated hours you can build the critical path of the project and calculate its overall duration.

The more clear and exact idea’s description, its navigation map and UI design are provided at the very beginning, the more precise estimation result you will receive at the end.