With new smartphone operating systems such as iPhone, Android, Maemo ,Palm WebOs and the legacy ones such as Symbian , Windows Mobile, Blackberry, Mobile application development is a booming industry.
As someone just starting in Mobile application development, it could be confusing as to where to start. So here is a list of at least 6 things to know for a prospective Mobile apps developer.
1. Understand underlying Mobile architecture
First and foremost remember that , Mobile Phone is an embedded device. Unless you are working for highest end smart-phones it is unlikely that you would be working on a sophisticated operating system.(Remember Symbian is also an ‘embedded’ smartphone os)
Moreover the processing power of a Mobile device rarely goes beyond 500MHz. So learn how to build an embedded application. Learn all the mobile specific quirks to optimize speed, size and memory requirements of your application !
2. It isn’t web 2.0 in Mobile
Recently I saw some REST XML apis for a Mobile application and I was about to burst out laughing.Please remember that even on majority of 3G networks the real life data speed is mediocre .. so you have to optimize your app accordingly. Maximum times you have to invent your own optimized protocols for data traffic and optimize them even further using some compression algorithms.
3. Know thy Standard
Mobile industry is historically about standards. And these differ significantly from rest of the web or computer world.
For starters please understand what is meant by 2G, 2.5 G, 3G etc. Do read up at least basics of GSM / CDMA/ WCDMA /HSPDA modems.
On top of that your particular development environment may come with it’s own standards. For example to be a J2me developer you may have to read about different JSRs supported for the handsets you plan to work. If you want to work on technologies such as IMS they come with their own set of standards.
4. Fragmentation you should be aware of
If you read a lot of blogs, you will hear that there are more than 3 billion Mobile handsets. But if you are a down-loadable application developer, it is most likely that your target-able handsets are much lesser. Make sure you are always aware of that when you promise ‘moon’ to your customer.
Mostly it is beneficial to target only a niche subset of handsets aka iPhone / Blackberry. They themselves represent a decent market size. But, if you are trying to target hundreds of Millions of handsets please be sure on what you are getting in to.
5 . C++ / Java ? It does not really matter
Lot of new engineers I interact with ask me this question about which language to learn to work on Mobile. There are various languages and SDKs to choose from C, C++,Objective C, Symbian C++, Windows C++, .Net, Blackberry Java, J2ME, Mobile Python, Web run time, Palm web os, Flashlite, Android Java to name a few.
My advice is to just pick one to start with, (preferably an embedded native environment such as Symbian C++, Objective C for iPhone or Android Java) if you have strong Mobile development skills, learning a new language or SDK will not be tough at all.
6. Mobile development is about integration
I have seen hundreds of Mobile application development life-cycles so far and in every project the bottleneck has been integration. Writing code is far too easy. But on an embedded system such as Mobile, the real art lies in integrating multiple components in time bound manner. It’s more of a process issue but unfortunately I have not seen a solution so far. So 99 out of 100 times you would see applications taking far too long during integration and release phase.
System integrators is a very priced community in Mobile ecosystem so if you learn the debugging and integration skills, you are invaluable as an engineer.
Finally, here is a bonus tip
7. Attitude of a Mobile developer
This is something very hard to learn unless you have it in you. Mobile phone application development can take a lot out of you. Sheer frustration of not being able to release your app for some nasty unknown crash can drive you crazy.
You need a ‘never die’ attitude with cool mind to be able to subjectively analyze seemingly irritating ‘unkown’ bugs for days to release a successful mobile app. If you are working for a handset manufacturer and need to pass certifications like FTA, you need it more that most ..
So if you have just started on this path, welcome to Mobile developer community .. and all the best for your Mobile app adventures !