Our clients often ask why development times for different platforms vary on multiplatform mobile development projects. From their perspective it appears that the development time for an app should be roughly the same for any platform. However, differences in the software, devices, development environment and submission processes mean things are rarely the same from platform to platform.
Here I’ll try and explain these differences from our point of view, and how they impact the time and cost of development.
Android - simple and quick
Android is in many ways simpler than other mobile OSs because the platform's Software Development Kit (the tools they provide for developers to create apps for their platform) has been developed by Google with simplicity in mind!. The aim was to make life easier for Java developers who want to start building apps for Android. Android apps are programmed in Java, which is considerably easier to program compared to, say C/C++. These are the main reasons apps for Android will usually take the least amount of time to develop.
iOS (iPhone, iPad) - medium complexity
Development for Apple’s iOS is more complex than for Android, but considerably simpler than Blackberry and Symbian OSs. It is highly standardised and many 3rd party modules and libraries (such as Facebook iOS SDK) are readily available for developers. Many apps can be built using largely standard controls (sliders, dropdowns and other basic UI elements) with less time consuming custom design work and implementation. Unlike Blackberry apps, most of iOS apps also work on any iOS version out of the box. Sometimes some porting is required, however to port an iOS app to a different iOS version is relatively easy. Also, they run on devices with only two screen sizes: x and 2x. Unlike Android, iOS’s programming language is C++/C. It’s considered more difficult (e.g. programmer is responsible for memory management to a larger degree than with Java) than Android’s Java so iOS projects usually will take longer to develop than projects for Android, but they are still relatively straightforward.
BlackBerry - complex
Blackberry is an odd case. It remains the market leader in terms of sales but it uses a wide range of devices and operating system versions. Different models run on different OS versions and have different screen dimensions and resolutions. This means there are a huge variety of different device/screen/OS combinations that must be considered. User Interfaces and sometimes the core programming of Blackberry apps have to be adjusted for each screen resolution and/or OS version, which significantly extends the development time. We almost have to ‘port’ an app to each device! The development environment is not nearly as user friendly as that for Android or iOS, so a simple task of uploading an application to a device for testing can take as long as 30 minutes on Blackberry (compared to around a minute on Android). Developer documentation is rather scarce, which sometimes causes unnecessary difficulties.
Unlike other mobile platforms, Blackberry devices use a proprietary Internet connection service (Blackberry Internet Service) and a unique device management solution (Blackberry Enterprise Server), which coupled with the lack of documentation, complicates development even more. For example, writing a piece of code responsible for establishing a network connection or implementing push notification can be very time-consuming in comparison to other platforms. Blackberry projects generally will take longer than iOS or Android to complete, partly as we often have to come up with on-the-fly fixes to general problems we expose as we work.
Symbian - very complex
Symbian is considered as the most difficult platform for developing apps for a variety of reasons. One of them is the scarcity of standard UI controls in the Symbian SDK. It means that many UI controls (sliders, pickers etc.) have to be custom-developed and implemented, which is time consuming. In comparison, most of the regularly used controls on Android and iOS are provided in the SDK. Also, building apps for as many as six screen sizes and numerous feature packs (effectively OS versions) requires a lot of additional development. On top of that, Symbian's developer documentation is rather poor; many listed features simply do not work and require finding a work-around. Just like iOS, Symbian’s programming language is C/C++, but an element that takes only 10 lines of code using a graphics library (such as ones in iOS) could take up to 100 in Symbian. Finally, Symbian’s application approval procedure is the most complex of them all. These factors make Symbian development the most difficult and time consuming (and so expensive) of them all.