01 Study Mobile apps and Get your App Features Decided
Study competitor and category apps related to your idea. This is critical to understand the gaps in functionality and features that your app can aim to address. If you are simply creating a me-too App without a proper business plan, positioning and differentiation for the app - it is less likely to succeed. Even a few small features can make a ground breaking difference in an app. For instance, when Whatsapp started, its not as if Yahoo messenger or other messengers were not available on the phone. But for the first time we had an app that offered you to send messages directly based on the mobile no. with the ease of an sms but in the way of a real time chat. The final result - an App which got sold at 19 Billion!
Snapchat added only an extra innovation feature in a messaging / photo sharing app - pictures which disappear. Sounds simple right ? But the result - an app whose parent company is currently valued at around $15 billion (as on Aug 2017).
Unless you have your features decided do not proceed with actual development of your app.
02 Prototype and Visualise your Mobile App before Choosing a Company
This can be done through tools like Balsamiq , Mockingbot, UXPin. It is best to use a tool which has a low learning curve and which can be easily used. You really do not need anything very fancy and you would mainly need to show the application flow by various buttons and appearance of text, labels and popup etc. elements. This helps an app Developer tremendously during the app development and also in giving you a proper effort and price estimate. You can even use word document with Drawing and give indication of colors etc. using an example app. Simply click screenshots on your mobile and crop them to show the appropriate area. Based on these, the mobile app development company creates the layouts (with navigation) first and these can be made available to you for feedback.
03 Choose an App Company and Avoid a Freelancer
I know this sounds a bit harsh.
But the fact is that for mobile app development, a freelancer will rarely work. The exception to this is when your development is properly modularized and you need a specialist experienced freelancer for a specific module or task which can be properly explained and separately outsourced. OR, if you already have an in-house team developing the back-end etc. and just need a the layout design or android part developed.
The reason for this may already be becoming clear. Developing a native or even a hybrid mobile app requires multi functional teams with multiple skill sets. Your freelancer howsoever good would just not be able to cope with multiple aspects of the tasks and would probably subcontract something here and there leading to project management and quality issues. A complete app will require App UI design, Android programming in Java or Hybrid programming, back-end server API programming, Testing, Project Management, and in case of complex apps - proper architecture and pattern design.
As a single individual, maybe Superman might have all these skill-sets, but last i heard, he was busy with Justice League.
04 Test the App early and Get Backend Developed First
This is true for most apps which require lot of interaction with back-end, or the server from where they get or send their data. Most examples: be it On demand Mobile apps, Classified Apps, E-learning Apps, Directories or Discovery Mobile Apps, or E-commerce mobile apps, all have a back-end component to which they send data or get data via web-services. It is important to have the database or data model decided as early as possible and the web-services checked and tested and working. This can be done using tools like Postman which allows you send and receive response of http requests sent to your web API url.
Using RESTFUL web services allows for a standardised way of handling the business logic. Dummy data should be used to test the returned Json responses even before the front end android screens are made. Data should be realistic and created with a view to test various situations of use. In technical jargon these are known as use cases. If the screens are done right and based on them the web api's are created - then android programming won't take much time and effort. All this is something which the app development company will do, but it's something to keep in mind to manage them efficiently.
05 Get Details and Justification of Time and Effort
Mobile app development is a complex endeavour. When a company presents you its proposal and estimate, it is certainly better to see whether they have divided the whole thing into milestones and phases. The phases should show the designing, analysis , coding, etc. estimates . Or if agile methodology is followed then they there should be a plan for the sprints. Time for testing should not be ignored / missing in the milestones.
This is helpful because the mobile app development company will have to re-look at its effort and time estimates internally rather than giving a vague or arbitrary estimate. This may also help avoid under or over quoting by the company your choose.