You have an idea, maybe a product, maybe a website, maybe an interesting service. Any of the above surely prompted you to start with a mobile application. A simple and obvious idea - but what’s next? You would probably want to know about the time scope and budget you will need to invest in the project, so you know whether the idea will pay off. This is where estimation comes into play.
The cost of software development is always rigidly correlated with the estimation of the future project. It is very important to plan in detail how much one can afford, so as to not exceed one’s capabilities.
Supported mobile platforms, technology, design, scope of features, chosen team - a project can be ready in 3 months or 3 years, so it is really important to think about every one of these things.
Choose the platform
Today, the choice is seemingly simple. The mobile world is dominated by two operating systems: Android and iOS. The time needed to create an application for both platforms simultaneously is nearly the same as developing just a single one. But when it comes to the cost - it is two times higher. If you are wondering which platform is cheaper to develop for - the answer is simple. The cost is the same for both.
You need to think whether your business model allows you to create two applications at the same time. In the absence of such a possibility, it is possible to initially create an application for one platform and, when finances will allow, start with the second one.
There is also an alternative to native development - React Native. It is a framework that allows developers to write one codebase for both platforms, which of course saves time and money. Very often, React Native saves days, weeks, or months of work.
So how many people do you need to start the project?
Let's talk about the most common case.
A standard mobile project. A little social app with sharing things between users, connected to an external service. Both platforms. In the native approach, we will need two mobile developers - an Android developer and an iOS developer.
It should take (this is a very, very high level estimation) around one year.
Sounds too long at start? We can do it faster using the React Native framework. Thanks to it, mobile developers can work on a single application for both platforms. Also, when designs don’t contain too many custom modules, the development time can be decreased by dozens (or even hundreds) of hours.
Sounds better? For sure. But keep in mind that React Native also has its limitations. You can find out more about them, as well as the framework as a whole, in the articles below:
So which platform should you choose? It depends. In many cases, React Native will save you money and time. But before choosing it, consult your project with professionals - working on it may be much more efficient using native solutions.
Features in the future
At the start, you certainly think about dozens of functions that your application will have. However, you do not have to focus on everything at once. List all the functions you would like to see in your application, prepare designs or wireframes, estimate them, and think how much you can afford at the start.
Mobile applications offer a wide range of possibilities - NFC, IoT, fingerprint reader, bluetooth, GPS, cameras, etc. Many of them are really easy to implement thanks to included or open source libraries; some of them need days or weeks to integrate with your future app.
Take a look at these examples:
The most basic implementation of NFC could be done in even one day, regardless of technology. Fingerprint scanner? Similar.
But let’s take a custom camera implementation. Android and iOS have really good native solutions and libraries, while React Native has a much harder job to do. It is not easy to cover all Android and iOS versions, densities, notches, etc., with one component. A well-working custom implementation could take weeks of work.
There are also things that looks easy at the first glance, but achieving the same effect on Android and iOS could be really time-consuming. A good-looking chart sounds simple, doesn’t it? Maybe, as long as we don’t want something sophisticated and exactly the same on both platforms. A simple chart could take 2-3 days, a more sophisticated one with the same look on Android and iOS - even 2-3 weeks. This is the place where React Native does the job - you can be sure that the charts will be exactly the same on both platforms.
Be sure that you do not put extra features above the basic functionality. A very popular approach is MVP (Minimum viable product) - start with a minimum of features which should be the base of your application. Extra functions can be added later or as an update to the released application.
Design the designs
It's hard to sell an app with poor UI/UX. A designer is one of the first people who should join your project. He transfers your idea to the screen and designs the look of your application. It’s very hard to estimate the project correctly without having at least some wireframes. You need to be sure that the designer knows the mobile environment and the guidelines for each platform.
The relationship is very simple - the more you deviate from the native platform guidelines, the more time developers will need to deliver the application.
The problem pertains especially to React Native, where each custom component will reduce the time that should be gained over native solutions.
Android and iOS SDKs contain ready elements of UI which are efficient and pretty easy to implement. Both platforms have prepared libraries and solutions for many popular functions - video playback, displaying data on charts, exploring a gallery, etc. Sometimes it is worth consulting the design of such things with programmers - you may not want to extend development for several additional weeks because of a slight deviation from the standard.
And what about the separation of views for smartphones and tablets? You do not have to separate them at all - layouts in general are created in flexible way and adapt to the resolution and size of the screen. However, if you decide that your application should look completely different on tablets, be aware that the additional work required can be time-consuming.
Sometimes applications are full of motions. Great animations, transitions and rotations. Sometimes applications are based on them. It could take a few weeks to achieve the designer’s vision with regards to animations throughout the whole app but, of course, the effect could be worth of it. However, beware of complicated animations in React Native - introducing them in an app developed in this framework may not just be complicated, but also cause performance issues. In such a case your programmers will lose much time resolving the performance issues, or just changing the animation to something simpler.
Logic inside (and outside) the application. Most projects are based on an external server that collects, stores, and handles data. It is very important to keep a backend developer close to the project. A well-written API will dramatically reduce the time that developers will spend on supporting network functions. A poor API leads to bugs, bugs lead to a significant prolongation of the development process, and this leads to increased project cost. If your API was written earlier and it is non-scalable or just badly-written, it is worth considering rewriting it. It will save you money and time during future development.
Choose your team...
As mentioned earlier, ensuring that the project stays on the right course depends on more than just the effort of the mobile developers. The programmer has to keep in touch with the designer and the backend developer, but if you want the project to run smoothly, you also need quality assurance and a project manager.
It's amazing how serious the mistakes that a good QA can find are. It is very important to fix bugs before they spread around the whole application. Creating an application without a tester may lead to transferring the burden of testing to the end user, which brings about the requirement to endlessly update the application. For most projects one QA is enough, even for two mobile platforms. I can certainly say that without a QA, the whole project will take at least 20% more time to be completed.
A good project manager makes sure that everything goes according to plan. If a PM sees that a task is taking too long, he can propose a solution that the developer will not notice in the heat of coding. A PM often offers amazing mental support, helps developers in their communication with the client, and watches over the predetermined plan, so that the developers can focus on coding. The project manager is also a person that you, as a customer, can always turn to if you have concerns or doubts about the project.
...but from where?
A freelancer? In-house employees? A software company?
The fastest (and often the cheapest) solution is a freelancer or an in-house developer.
However, creating a product involves a lot of moving parts that need to be mastered. Project management, tools needed for effective work, software testing, good communication between team members. This is the reason why a software company does things best - it provides complete solutions in every aspect. It is flexible, provides the team you need, optimizes your work, reduces your expenses, and takes care of the future development and maintenance of the application. It’s much easier to estimate the project when everyone is playing on the same team.
You also need to remember about project maintenance. A software company will provide you with the most comfortable way of performing it, as well as with the possibility to update the app later, and guarantee the availability of a development team.
Hello (mobile) world
Starting a mobile development project is always a hard thing. Assessing the possibilities, costs, time frame, and assembling a team creates countless challenges. It is also an individual thing – every project differs in details, and you’d be better off consulting with professionals, with whom you can share your ideas and doubts. They will help you estimate your idea more precisely, help with planning, and expand your perspective.