When developing applications for mobile devices you often find the need to use a rapid application development (RAD) platform to achieve your goals and meet the time to market requirements for mobility projects. I have been developing mobile applications for several years now and I have seen many development platforms/frameworks. There are many reasons why you often need to take use of a platform/framework; wide device support, rich and flexible UI, secure and reliable communication, back-end integration and so on. If you were to take care of all these challenges by your selves the application development project would be expensive and time consuming. This post is written with large commercial enterprise applications in mind.
You should be very careful when selecting a platform for your project, by selecting the wrong platform your in for failure. The most important you need to do is to define your needs and make sure that the platform your are choosing fulfills those (or at least the most of them). Many companies/developers have different views on how to develop mobile applications, make sure that your chose a platform developed by a company that shares your view on this.
No matter what OS, programming language or technology you are using I think that flexibility is the key word. Do your self a favour, chose a flexible platform. By flexible I mean that even tough you are using a third party platform you must be able to chose when to use the platform functionalities and when to do custom coding. The platform should be easy to build functionality on top of (extending) and you should be able to switch between the platform API and the Standard API (Java ME, Compact Framework etc.).
I have been on both sides, I have been developing a RAD platform and I have been using third party platforms. I worked for over three years in the core development team at mBricks AS. mBricks is a RAD platform for developing Java ME applications (also supports Blackberry and Android). In my opinion mBricks is a great platform because of the flexibility it offers. If I were to develop a Java ME application there would be no doubt in my mind what platform to chose
What level of support are they able to give you? Keep in mind that when using third party platforms you have a great dependency to the third party company. Are they able to give you the needed support? How quickly are they able to release bug fixes for bugs you reported? It can be very frustrating if you are working on a project with a tight deadline and you have to wait for weeks to get bug fixes/enhancements.
You should investigate what’s on their roadmap (if they have any at all). Do they have the power/founding to keep on for several years? Does the roadmap fit into your plans for the future? You should also try to find out if your company are able to influence on the roadmap.
In my opinion this is very important; are you still able to be a creative developer when using this third party? If the third party platform limits your development that is no good. The project members will not be inspired to give it their best over a certain period of time. When you find yourself using a significant amount of time trying to bypass limitations in the third party platform you have probably chose the wrong platform or are lacking training.
You need to decide what’s the best technology for your project. Should you focus on only one technology or should you go for a cross platform solution (earlier post about who will win the mobile technology race) ? Anyway it is important to chose a third party platform that have focus on the same technology as you. If you are focusing on only one technology you should not use a vendor that have this technology just as a small side-project.
For mobile applications I think this is very important. You need a good system for deploying your application and also for handling application updates. Several of the third party platforms have built in support for this.
This is just as important as application management, especially if your are deploying to a large quantity of users and on several different mobile devices. Are you able to maintain users, roles and devices? What about lost/stolen devices.. can you send kill pill and wipe the device?
This is just a short list of what I find most important when choosing a third party platform. My best advice is to take your time and investigate several companies before you chose one. The time spent in this period of the project are quickly saved later on by using the most suited platform for your projects. I like third party platforms because they tend to save you a lot of work and they are running on a well tested code base with many users(hopefully). This will save you costs and increase your product quality, if not…you have not chosen the correct platform for your project.