There is a huge variety of different applications on iTunes and Google Play markets, where you can find quite different apps, such as a simple informative one-page content visit card or a huge complex bank system with backend that means you can transfer costs to different accounts all over the world, edit a database with a million users and purchase a luxurious villa in the Caribbean Sea. Each application has unique design and functionality, including some specific features and content that should be regularly updated to keep users interested in further usage and an increasing number of downloads. However, sometimes it’s possible to find a similar “clone” with the same idea. So, maybe you are going to create an app and you don’t know how to start, or you’re confused by the fact that you know nothing about the development of mobile apps and how this process should actually be done. Moreover, you might have a great unique idea for the mobile app, which could bring you great success and a substantial profit. However, you may be afraid that it could be easily stolen by another party after sharing your thoughts with a potential partner. Also, you want to be sure that your potential partner will develop a great quality product in terms of your budget and won’t leave you on halfway through, having stolen your funds and ideas.
All of the above mentioned points are quite reasonable and, unfortunately, a lot of ideas just haven’t been realized simply because clients were not able to find the right freelancer or a company with which they were comfortable working. As a result, to avoid a lot of possible pitfalls and misunderstandings while initiating a project, there are some easy and effective steps which might help you to develop your application with a reliable freelancer or company.
The first step to developing a successful product is quite simple but important: just take a pencil and draw your idea on a piece of paper. Keep it as simple and clear as possible, as this rough sketch will help you to build the visualization of your idea, whereby you can find a lot of other potential features and missing items to think about. Believe me, you’ll save a great deal of time and costs and get a better understanding of the project if you generate a sketch yourself instead of hiring a UI/UX designer to create basic wireframes and spending hours on Skype calls, clarifying your ideas, confirming each minor change and releasing funds.
So, if you can generate a rough cut with some marginalia on it, then you have already initialized 50% of the project, as it is a very important thing in the app building process, similar to a draft for building a house. Please note that such suggestions as “I need an app similar to an existing one” are not helpful, and may cause confusion because it's not possible to provide a detailed quote according to an app that already exists. Let me provide one simple example: you see a particular car on the street and tell the manager who works in a motor show that you want the same car. Of course, the manager clearly understands which car you want, but the problem is that it’s not possible to understand which facilities there are in that exact car: turbo engine, leather seats, featured audio system, etc.
In the case of mobile app development, the points that might cause confusion are:
another team may change their app during your project development;
developers may miss some features in the app. For example, a specific feature may appear only under certain circumstances. As a result, this feature will be missed out from your project;
some portion of a third-party app might simply not be visible to developers, such as the Admin panel, for example. In this case, it is impossible for developers to know how the mobile app should be controlled and edited by the admin.
As you can see, drawing a rough cut is quite a good idea to avoid possible confusion and to get an approximate visualization of your project.
The next major point that you should specify is a budget that you can afford. Of course, it depends on the project’s complexity; a higher budget provides more opportunities for your idea to be realized and for you to create a really successful quality product. Basically, there are two possible ways to work with freelancers and companies:
Fixed Price basis.
Hourly Rate basis.
There is a big difference between these two approaches, as the Fixed Price basis includes detailed finalized project specification, estimation and concrete milestones. All of these items will be included in the agreement – note that any additional tasks involve creating new requests and could be integrated after the basic agreement closes. The Hourly Rate basis usually makes sense when you don’t have a full specification and don’t want to waste your time going through a complex process of estimation and composing/checking an agreement. Let me clarify how this system works using a very simple example:
If you want to go abroad, there are two options:
Take a taxi.
If you decide to take a taxi, this will involve a Fixed Price option with a fixed fare for the journey. However, if you want to change/adjust the path during your trip, it will lead to a complex process of re-estimation, which may cause a delay. The Fixed Price basis is preferable if you have an accurate plan and your destination won't change during the trip.
Rent a car.
Alternatively, you can rent a car and drive wherever you want. This is done on an Hourly Rate basis. It's more flexible but you bear more responsibility because the amount of gas you consume depends only on you. The Hourly Rate basis is preferable if you don't have an exact plan and wish to make decisions during the trip.
Also, specify which platform you would like your project to support, as this is also quite important in finalizing the budget. You can think about native app development or a cross-platform project.
The difference is that hybrid apps are cheaper and work on different OS, but native projects include other quite significant advantages:
native applications are much more reliable and stable than web-based or cross-platform products, as ObjectiveC/Swift and JAVA programming languages were basically developed for iOS and Android platforms;
web-based or cross-platform products are limited by default UI design elements and functions, while native applications can be easily customized and include unique design elements and animations;
another point is that native applications can include some unique functions and features which are available only for iOS and Android platforms.
When you have created your rough cut and specified the budget, another really major and significant step is finding a freelancer or a company who can help you with the UI design creation and mobile app development. Honestly, I would suggest working with companies because in this case UI designers can discuss the creation of mockups with mobile developers in order to avoid any possible misunderstandings. Working with an independent freelancer on UI design could cause problems: when you’ve specified and confirmed mockups and paid for the job, you will go to another mobile developer team and, after checking the existing mockups, they might say that it’s not possible to implement this design in a mobile app… In such a case, you will have to work on the required changes to the existing design to resolve the development team’s concerns. Another advantage of cooperating with IT companies is that there are dedicated teams that provide in-house development. Thus, if you want to develop a project that includes a server backend with iOS and Android mobile applications, for example, a developer team can easily cooperate with each other and save you a lot of time and costs.
Just imagine how much effort and time you might spend on interviews if you are going to hire different freelancers for iOS, Android and backend development! Moreover, you will have to be a link between each freelancer to coordinate the work on the project, otherwise everyone will blame each other for any bugs, mistakes and delays in the milestones. One more advantage of working with a company instead of an independent freelancer is that if something happens to the Lead Developer working on the project, another quite experienced person could fill in for him with the project and finish it. With an independent freelancer, however, if the person is ill, there just won’t be any progress on the project.
Basically, there are a lot of existing freelance platforms, such as Upwork, Guru, Freelancer, etc., where you can find a lot of potential candidates. However, this is not the only way to search. You can also refer to business portals such as Clutch or GoodFirms, which contain great databases of existing companies. They will check the work history and portfolio and review potential candidates, as clients need to undergo a real verification process in order to leave a review there.
Another way to search potential candidates is to use business social platforms such as LinkedIn, Opportunity, XING and other media; these are also quite helpful as you are able to check the company decision maker’s profiles and projects that have been developed in past. Of course, you don’t have to set limits using only one of the abovementioned ways to search for a candidate, you can use all of the above to learn more about your potential partner and check his/her work history with a portfolio in different sources to be sure that everything is fine. After you have verified the candidates you might be interested in, write a private message on Upwork, LinkedIn, or a personal email to contact that person or company account manager. Set up an introductory Skype call or a conference meeting with the developer team to make sure it is a real person or company.
Also, don’t hesitate to ask any questions about their past experience and some general questions such as:
Where is your office located? Can you provide the shipping address of your office?
Do you have any representation outside of your country?
How many developers do you have on-board?
Please provide links to existing projects that you have developed.
What is your approach for initializing new projects?
Will there be a project manager who can provide me with daily updates and clarify unclear points?
What is your hourly rate?
How will you charge me during project development?
Do you have a QA team on-board?
Will you upload my app on iTunes and Google Play?
Is it possible to provide a discount on the existing rate?
Do you provide a guarantee for your work if there are any issues after the app has been released?
Will I have access to a ticketing system?
May I come and visit your office?
These are quite wide-ranging questions which will help you to learn more about your potential partner and to decide whether it makes sense to proceed further with the cooperation. You can also just share some of the more general points of your project and allow the candidate to suggest different ways of integrating them into the app. Communication is a really important part of project development, so you need to think about the level of English language skills the person has, as you will have to communicate quite often in the future and it’s important that you are able to clearly understand each other. So, if you say something like, “This project budget is costing me an arm and a leg,” and they reply by asking you, “Oh, how is your health?” this might not be your ideal partner for moving the project forward. Ask any potential candidates if you will have access to a ticketing system and receive one or two internal builds each week to check on the progress of the development. These are absolutely standard requirements, as the development process should be clear and open to you. For example, imagine you have decided to build a house, and you want to check the construction progress each day and ask the workers about approximate timelines. Just try to imagine that when you arrive at the house, you see that the builders have hidden your house in a big black box which you can’t access to check how the construction is progressing… This is a really unacceptable way of working.
So, if after the introductory call you believe that a potential candidate might be a good match for your project, ask that person or account manager to sign an NDA. A non-disclosure agreement is a really important document, as it is a guarantee that your idea won’t be stolen. After another party has signed an NDA, you can share your ideas and any existing rough cuts you have created. Try to provide detailed clarifications and ask the potential candidate to generate an approximate quote for your project. If the approximate quote is higher than the expected budget, it should be possible to reduce some of the features in the project and divide the app development into two phases. For example, the first phase can be a prototype which includes basic functionality, and the second phase can include other non-urgent features which have been placed on hold. As a result, while the basic prototype is being developed, you can increase the budget for implementing the second-phase features in the future. So, when your budget is equal to the provided quote, it will be possible to plan further development stages with the selected candidate.
The next important step is to sign an agreement with the selected candidate for the project development. Be really careful during this stage and read each point of the agreement thoroughly. There should be a description of project scopes, specified minimum supported OS versions, technical expertise for your project, general project description, and exceptions if some of the features are reduced. One particularly important item that should be specified is that the app source code should be provided to you after completing the final milestone, and the app should be published with your copyrights. Make sure that the agreement includes fixed milestones if you are working on a Fixed Price basis. Each milestone should have a specified deadline with a detailed description of the items that should be completed and the payments that should be made for these. Also, the agreement should include a detailed estimation with a fixed number of total hours and a total price for the project. If you are not working via a freelance platform such as Upwork, on which an Escrow system is included, try to specify milestones with a minimum pre-payment or without any pre-payment at all. However, if you are working on a freelance platform, you will have to fully fund the first milestone in Escrow so that the developers can start working on the project. In this case, if you don’t like the way the development process is going, you can take back funds only after a third-party dispute. If you are working on an Hourly Rate basis, the points are the same, but the agreement should include a fixed hourly rate price for the project instead of the total price as well as timelines for releasing the funds without limited milestones. Also, don’t forget to specify points such as QA, warranty and support after publishing the app, or any other options that the selected candidate suggests.
Always set “UI design creation” as the first milestone, as this is the background of each project. Only after finalizing this stage is it possible to proceed to mobile development. Moreover, sometimes it makes sense to sign a separate agreement for UI design creation and then another agreement for the mobile app development, based on the existing design. Let’s try to understand more thoroughly how this process should work:
the UI designer will investigate the rough cut which you have already generated; this should help him/her to understand the general idea of the app and all possible questions about your project should be clarified. As a result, the designer will update the provided cut with missing screens and generate new ideas for your confirmation;
after the sketch has been finalized, the designer should work on an approximate UI design creation and then compose application wireframe. This should be generated as a big “sheet of paper” image that includes basic app screens that have been created by computer program;
when you have received the app wireframe and discussed it with the designer, then it’s possible to work on the creation of the application Flow Chart; this is a scheme that describes the project’s basic algorithms and includes a detailed UI design for each app screen;
if you have accepted the provided Flow Chart, it’s possible to work on the creation of a prototype, which should include connections between app screens that show the app logic and describe how the user will interact with the app;
finally, the designer will generate finalized mockups for each app screen so that you can see the real design of your project.
This is the way to get finalized mockups for your project and, of course, don’t hesitate to share your thoughts and suggestions with your designer, as this is your project after all! You should keep in mind one important rule: it’s better to finalize the UI design creation before starting the development process, as changing the design during the app development will cost you much more time and money.
When the first milestone or agreement with the UI design creation has been finalized, the developers can start coding. So, the next project milestone usually includes such points as the application’s basic skeleton and the creation of the database and storyboards, as well as the UI design slicing so that it can be integrated into the app, etc. If your project includes a backend, the server setup can also be moved to this milestone. Also, try to use only well-known, reliable services as these should have great security and be quite flexible in case you need to update the server to support more users or to get more free space. (For example, you can use Amazon, where it’s also possible to develop an admin panel if this is required.) Of course, you can use existing cloud services such as Parse, or Firebase, which is a cheaper option; however, the security level is not as high there… So, if you want to include chat, payment transfers, bank accounts or some other important content, it’s better to use a separate server. Specification of all of the other milestones just depends on the project’s scope and requirements, so it’s not a good idea to provide any predictions or suggestions for now. Just make sure that, according to the agreement, all of the milestones are described in detail and include a list of completed features for specific dates. Pay for milestones only after checking the progress of the development and don’t hesitate to ask the freelancer or company contractor any questions you have.
Also, here are a few tips that might help you with your project:
if you’re going to develop a location-based app, you can use Google Maps API as the location service for Android and Apple Maps API for iOS;
it’s possible to use existing services such as Quickblox SDK or PubNub SDK if you want to integrate a chat function. However, another option is to ask the developers to create their own chat API on a server which will work via sockets. In this case, the developers can integrate message encryption and provide superb security. This option will take more development time but you won't need to pay for it in the future, while Quickblox and PubNub are paid services;
there are two ways to integrate push notifications into the app; the first is to use the services of a third party such as Urbanairship or something similar, like native APNS for iOS and GCM for Android. Another way is to integrate it into your personal server; this option requires more development time but you won't need to pay for it in the future;
implementing payment transfers in the app depends on the content you want to sell. If you want to sell digital content, such as app extensions or some content inside an app, it is better to use native solutions: Apple Pay or Google Wallet services. In this case, IAPs can be easily created on the developer console and integrated into the mobile app. Another option is to use Stripe SDK or PayPal for integrating payment transfers into the app. Both of the aforementioned services are quite reliable, but the only difference is that Stripe supports the US and some European countries, while PayPal is available all over the world;
you can edit/change the application content without updating the app in-store; this requires admin panel development for your mobile application so that you can edit/delete mobileapp content in the online mode. In this case, users will just have to "pull to refresh" the page or move to another tab on the mobile device, and new content should appear.
When you get to the last milestone, the application should be fully completed and finalized. This is your last chance to check the app from your side very thoroughly to make sure that there are no bugs, that the UI design looks good and the application works according to your basic requirements. Note that after releasing the funds for the last milestone, the project is considered to be officially completed, so if there are any issues or bugs, you won’t be able to get your payment back.
The last point I want to mention is that if you want to publish the app on iTunes or Google play markets, you will have to create a developer account. A standard Apple developer account costs $99 per year, while Android costs $25. When your application is completed, the developers should publish it on the app store using your account, so don’t forget to include this point in your basic agreement. You will have to set up apps on markets and provide all of the required information such as the app description, keywords, copyright, etc. I would also recommend that you think about project marketing as soon as you start working on the mobile development, because this will help you to save time and plan the budget with future costs. Feel free to ask your partner any questions during the development process, as cooperation is really important and can account for half of the project’s success. Moreover, having a reliable partner is also a good option for consultations when the app has been published and while initializing new projects. I believe that the first important steps in the mobile applications development field should be clearer now and at some point you might even start thinking about creating your own product… so take a pencil and draw your idea on a piece of paper!