Yesterday Windows Mobile asked this question on Twitter (windowsmobile):
Question for developers: what are the top 5 questions you would have when investigating application development for mobile devices?
My response to this question were:
@windowsmobile device fragmentation, GUI possibilities, transport protocol, patterns & practices and application distribution
I don’t know if they were asking this on a technical view or on a business view, but since I’m a “tech head” I gave them my technical view on this question.
Why are these five topics my greatest concern when looking at technology/platforms for developing mobile applications?
When I am developing applications for mobile devices I want my application to run smoothly on a high number of different devices. Therefor it’s important for me that application will scale well and look good on different screen sizes and screen orientations. Off course if I am developing with .Net Compact Framework I have set a limit that the application only will run on Windows Mobile devices, but I want it to be able to run on as many different WM devices as possible. I do not want to make changes in my code for each different device. Building one application for 240 x 320, one for 480 x 600 etc. is a road you don’t want to walk.
By selecting Java ME as your mobile application technology you will address a more wide range of devices increasing the device fragmentation complexity.
I want my applications to be smooth and sexy! I don’t want to develop applications with the late 80’s early 90’s look & feel. Usually this means that you have to build your own controls/composits/widgets to be able to achieve your design goal. Therefore it’s important for me that you quite easy are able to create your own graphic elements, preferably by extending built-in functionality (I want it to look good, but I do not want to develop my own platform).
So what I need is a flexible GUI system, easy to use and easy to build your own graphics on.
Most of the mobile applications needs to connect to a back-end system or a server. To be able to do this you depend on a reliant transport protocol. It must be optimized for the mobile network (GPRS, 3G, etc) and off course it must be network unaware (must work on WiFi, 3G, GPRS, EDGE etc). The protocol should also offer security functionality such as encrypted messages. It should not be to complicated to define your messages and send/receive these.
Patterns & practices
I strive hard to use well known and good patterns & practices in my projects. It’s important for me that the mobile application development technology I am working with allows me to use patterns as desired. I do not want to be forced to use anti-patterns or to use a specific pattern. I want to be able to choose patterns freely based on the needs I have regarding my application.
When all the four topics above are fulfilled and based on that you have successfully developed a great application you need to be able to distribute the application. How this should be done differs from what kind off application you are developing. If it is a consumer application for the public you need to be able to distribute this to a lot of devices without any trouble. This is were the application stores come in handy. Apple started it with the AppStore and now all the big ones are following announcing their application stores as well. For enterprise applications you might want to choose a different distribution strategy using a device management system pushing out the application to the devices. This should also handle updates and possibility to wipe-out the device (kill pill).
I think that if you are choosing a technology fulfilling all these five topics, you are in for a success.