6 Insider’s Tips to Avoid Mobile App Development Problems
Recently, a friend approached us for “Help !!!” – literally, with 3 exclamation marks ! He had developed a mobile app with another development house, but due to some dispute, the mobile app development company threatened to stop hosting the mobile app (which is gaining some initial traction) and blocked his access to the backend administration system. He could not even access his existing customer list.
Such horror stories happen with disconcerting frequency. Therefore, we thought we could offer some tips on how buyers can protect themselves. Obviously, the best way is to avoid horror stories is to select a reliable developer. We give tips on doing that in our main Mobile App Buyers’ Guide article. This article focuses on the unforeseen circumstances that may arise even after best efforts to find a reliable developer.
- Legal protections
Ultimately, the buyers’ bargaining power derives from the agreement signed with the development house. So here’s what to look out for in the agreement:
- Singapore incorporated – The development house should have an entity based in Singapore. This would mean that in the event of any dispute, the development house is likely to have some assets at risk. If the development house is incorporated in other countries, you would have to go through a great extent (i.e. time and money) to pursue any recourse.
- Singapore jurisdiction and law – Enforcement and dispute resolution mechanisms are efficient and well-established in Singapore. The agreement should be governed under Singapore law.
- Clear intellectual property, source codes and data ownership – Make sure the agreement specifies that the buyer owns all intellectual property, codes and data generated from the development process and also in the operation of the app.
- Payment terms – Having a tranched payment as work is completed is a fair way of payment. Should you be dissatisfied with the progress of development, you can stop development without having paid the full amount.
- Termination clause – Ensure that you have a effective termination clause with a reasonable notice period. In that termination clause, you should be able to get possession of all work done (e.g. design assets, code assets, server access) prior to termination.
2. Source codes
While legal protections are great and would strengthen your bargaining position in the event of a dispute, ideally you don’t want to have to go down that route. So protect yourself upfront by making sure you have access to the source codes at all stages of development. If the development house uses a source code repository such as GitHub or Bitbucket, get access to these repositories and download a backup copy at all stages of development. With these source codes, should you face disputes, you can try to get another development house to continue development.
3. Passwords and hosting
Make sure you have admin passwords to the backend system that you can change should a dispute start to occur. Also, make sure you sign up directly to any hosting providers that are being used, and that accounts are created in your name. You can then provide access to the developers as needed. Many hosting providers such as Amazon Web Services have Access Management systems that allow you to delegate access to developers as needed.
4. Agile development
Agile development, in simple terms, means that the development house should provide interim builds to you as the project progresses. These interim builds may be buggy and not fully functional, but it pays to test them as thoroughly as possible to make sure the developer is on track with your timeline and expectations. If you sense that progress is unsatisfactory, at least you can pull the plug and look to switch developers early in the development process.
5. Go native
As mentioned in our Mobile App Buyers’ Guide article, there is much debate on the merits of using hybrid systems (and there are many) versus coding in the native iOS and Android programming languages.
Nonetheless, we are going to reiterate our simple recommendation to go native. If you get into a dispute and want to switch developers, there are vastly more developers that support native iOS and Android development. If your initial developer (which you are now dissatisfied with) used one of the hybrid development platforms, you have to find a new developer who is familiar with that particular hybrid platform. As you can imagine, you will have very limited choice, particularly in Singapore. At that point you will be faced with a tough choice – be held hostage by your current developer or start again using native development.
6. 3rd Party Costs and Maintenance
Before starting development, have a clear understanding with your vendor on how to treat 3rd party costs. 3rd party costs are costs that arise from 3rd party services such as cloud hosting, SMS servers, email servers, specific APIs etc. We feel that the right approach for development houses is to pass through such costs without any markup, since these services are technically not being provided by the development house but by 3rd party. By passing through, it also allows a cleaner way for you to become self-sufficient if needed.
Before starting development, also ask for a clear understanding of maintenance arrangements. Some development houses will perform maintenance. Some would rather not do that. We feel it is a good sign if development houses are willing to perform maintenance at a reasonable cost. That means that they are willing to form a long term relationship and carry on maintaining their own work.
We also feel it is important to let the client choose NOT to sign onto our maintenance package. Some clients would graduate to hiring in-house resources. In these cases, we should be happy for the client and graciously exit from the project.
Handing Over and Taking Over
Too often, we get requests to take over from other developers. We hear of stories where other developers hold buyers hostage. Frankly, even with the best intentions, it is tricky to take over a project mid-stream, so it is best to avoid such situations. Handing over also involves Handover Costs, which are costs required for the new team to read and understand the existing code base and do any necessary refactoring.
Hopefully, the above tips help to level the playing field between buyers and mobile app development houses.
Also published on Medium.