The battle for mobile platform dominance is a hard-fought, sometimes bitter battle between the Big Three software companies – Apple, Google, and Microsoft. We all know that while sales of desktop computers have plateaued, sales of smartphones and tablets have exploded.
Competitive differentiation in the mobile space depends only peripherally on the hardware – all modern smartphones have similar processing, display and networking capabilities. And, while some are notably superior in terms of a niche capability – cameras, for instance – it’s the software, rather than the hardware, that separates the platforms.
Today’s consumer may have a preference among the visual idioms of Apple’s iOS, Google’s Android, and Microsoft Windows phone edition operating systems, but, even more than that, they crave the applications which these platforms support. Consumers are unlikely to buy a phone without solid implementations of their favorite applications – Facebook, Snapchat, etc., while business users need high quality implementations of enterprise email and business tools for expense management, travel and other tasks. Therefore, to win over the mobile phone buyer, each platform needs to build a solid applications marketplace, and, to do that, win over the application developer.
Apple’s Xcode is an OSX-based Integrated Development Environment (IDE) that runs only on Apple desktops and laptops, but which may be seen as the gold standard for mobile application development. It is well-documented and provides very strong code editing capabilities. The storyboard system and visual design tools are – as you would expect – top notch, and the integrated database management system (CoreData) also is excellent.
However, despite all the typical Apple attention to detail that has gone into Xcode, it may not be the best choice for beginners. It requires knowledge of Objective C -, a Smalltalk-influenced variant of C- that has a closed, stubborn syntax, and creates a difficult learning environment for a new developer. Ironically, Xcode may the best choice for experienced developers, but a poor choice for the beginner.
Windows Mobile Environment
Microsoft has always treated developers as first-class consumers – who could forget Ballmer’s “Developers, Developers, Developers” rant? So, it’s no surprise that the Windows Phone SDK provides an excellent experience, and probably the easiest, for those who are beginning mobile phone development. The visual design tools generate aesthetically appealing results, and the Visual Studio environment, which will be familiar to many, can claim to be both easy to learn and productive. C# as a language is familiar and powerful.
Unfortunately, the Windows mobile development environment falls short for more advanced applications – multi-page applications are awkward, and database management is cryptic. And, of course, developing for Windows mobile requires something of a leap of faith given Microsoft’s distant third place in the mobile OS market.
Android Development Environment
Given Android’s rapid market take-up and the rapid proliferations of Android applications, you might be forgiven for assuming that the Android development environment would be on par with those from Microsoft and Apple. However, the Android Eclipse-based development environment is not easy to learn. The visual interface is by far the weakest of the three editors, and the methodology for creating complex apps seems unfinished, requiring increased documentation and design work to create anything more than a basic application. Java is very well known, of course, but the Android SDK requires manual coding of things like database storage, which are provided as easy-to-use services by the other SDKs.
Providing a strong user experience for both beginners and experienced programmers is essential for the long-term health of a mobile platform ecosystem. Let’s hope that these SDKs evolve to provide more productivity for developers at every level of experience.