I'm still fairly new to mobile development, just a little over a year. As I dig deeper, it just gets more and more interesting. This won't be a technical writing like a tutorial but more to how the development scene has been evolving for the past 1 year. Putting it simple: Trends.
I started my mobile development efforts with Blackberry. Against all odds, I installed the SDK on a Windows virtual machine usingÂ ParallelsÂ Desktop. The experience developing using a virtual machine was painful. For long term use, it's too slow and too awkward. Anyways, I managed to connect the Blackberry device with the IDE. So I created my first Hello World with it. It took me a great deal of my time learning about the platform. Most of the key information are for paid developers unfortunately and sadly enough, BIS is needed and I didn't have it. A big roadblock for a newbie developer.
Being dissatisfied with Blackberry, I moved on to iPhone. I got myself an iPhone 3G and boy that was the worst iPhone I've ever played with. Why I say this, the experience is just sour with iPhone 3G. The hardware couldn't keep up with apps that are demanding. However, it was even worse with its SDK. So I downloaded and installed Xcode + iPhone OS SDK (at the moment). I couldn't get apps to be deployed to the iPhone without a paid ADC membership. Well being a single minded person, I jailbroken the iPhone and followed tutorials to get it to work with my intentions.
The most powerful thing an iPhone has to offer is its native development approach. They are using Objective-C and that directly translates into better performance (supposedly) compared with Java platforms. Okay I surrender the argument, Android can use NDK instead of SDK to develop BUT only in Android, kudos to Google! Back to iPhone, I managed to get my first Hello World running. The next step was to study Objective-C in depth. The result: none. I hated pointers in C and still hate it today. So I didn't learn Objective-C at that time, instead I came across Titanium Developer.
Although my first experience developing in iPhone left happy memories, I wasn't satisfied with its distribution in Indonesia. No one was using it so I thought why not try the Green Robot, the userbase at the time can be rounded to 0 meaning actual users were very limited. I sold the iPhone and bought a Nexus One. First impression: YEAYYYYYYYYYY!!!!!!!!!!
I was completely stunned how smooth an Android was. A Nexus One is Google's example of how every Android device should be and the bar was set very high! The quality of the hardware was pristine as do with any HTC devices able to run Eclair without much effort. I eventually upgraded it to Froyo and was really satisfied with the phone's performance. However, although Android can be a developer's best friend immediately, still the UX was way off compared to iPhone. It didn't bother me much, it's a motivation actually to be better than average.
Immediately I started learning to develop on an Android and must I say, the learning curve was not as I expected. I never coded in Java other than Hello World in Blackberries. I was comfortable because syntax-wise, it was not quite much different than PHP. The 1 thing I was grateful in Java and PHP is Garbage Collectors. I mentioned before that Android has its own NDK allowing developers to code in pure C if needed so performance of an Android app is actually tweakable.
Now I'm using an iPhone 3GS and boy it was one of my most memorable gadget buying decision. The performance woes I experienced with iPhone 3G was not present with 3GS. The experience of a proper Apple device is just magnificent. Apple focuses on experience and the consumptive nature of any perfectly normal human beings and I was sold lol.
Enough with hardware, what I really want to write about is software. An example of superb apps in my opinion are Wunderlist, Evernote, Angry Birds and Instagram. This is limited only to my knowledge and the apps I have used before in any platforms so you are welcomed to debate.
Wunderlist is a To Do list organizer and it's available in iOS, Android (beta), Chrome Webapp (beta), Macs and Windows. This is a prime example of how an app is bringing its experience agnostically across different platforms. This particular app is made with Titanium Developer which makes its development efforts actually faster than native developments. Apart from Wunderlist's functions as an app, it showed a glimpse of the future.
After Wunderlist, there's another productivity booster I can't live without which is Evernote. Note taking has never been so easy and because it's cloud driven, the notes are immediately available. Need I say more about this app? It's just fantastic, lifesaving and above all, all my data is available 24/7 from any device I access it with. Evernote is amazingly available for iOS, Android, Blackberry, Palm Pre/Pixi, Windows Mobile, Macs, Windows and Chrome Extension.
Next up is that hyper-popular game named Angry Birds. Another example of cross platform success. Angry Birds is available initially in iOS devices but now has widen its reach to Android, Windows and Macs. A clear example of how microprices (sub $10) apps/gamesÂ flourish. I'd pay for this game without even thinking about it because it's damn cheap and I can play it in any platform I have in my hands at any moment. The experience with multiple platforms does not a change a bit, gameplay is consistent and boy its fun to play with.
Last but not least, this app is only available with iOS but has instantly received success. None other than Instagram. The app is a photo sharing app instantly enabling the average person to get an experience as a professional photographer. Okay it's quite shallow but it's simple and less is more I must say! Instagram is only available for iOS but now opening up its API to be used by developers. With that many photos from millions of users, I must say it's an interesting API to play with. They are fishing for creativities and innovation from developers like you and me to use their data and turning them into food on the platter (information) for users.
If you noticed, I didn't talk anything about monetizing apps because the ecosystem is not there yet, at least if you're looking into monetizing from users. Only iOS I say have the best monetizing platform, they have paid apps and in app purchases while others still only offers paid apps. So I'll leave it for another blog post.
The conclusion is as a mobile developer, I must be as agnostic as possible when it comes to platforms. Being good enough in 1 platform is not good enough. With platform fragmentation rates very high, a mobile developer need to have a clear understanding of the concept of experience. Tech stuffs I say is geeky and very interesting but it's not enough to win over users. Futuristic is cool and we're getting there ;)