For a while now, we've been aware that Android development takes longer than iOS. We have the metrics to prove it, and it's about time we show them.
If you're developing a mobile app on both iOS and Android, you're bound to notice at one point that Android development simply takes longer. We've also noticed that, but instead of solely trusting our gut feeling, we've decided to pull out some real stats to prove it.
We extracted numbers for 6 projects we've done in the last year and a half or so. The projects were chosen according to the following conditions:
- the project had the same app built for iOS and Android
- there was no legacy codebase or technical debt in general that could skew the data significantly
We measured the following parameters:
- Lines of code
- Hours of work
Lines of code
We pulled the information on the lines of code (excluding blank lines and comments) with cloc.
|iOS||Android||Difference in %|
The takeaway here is - you write on average ~40% more code on Android than on iOS. A lot of this code is auto-generated - but it's still code, and it needs to be read, debugged, and maintained.
Also, the quantity of code you have in your project is bound to be a lot larger if you're using a modern and clean architecture approach in structuring mobile apps.
In that situation - having more lines of code is actually good.
Hours of work
We pulled the information on the hours of work for each of these projects from Productive.
|iOS||Android||Difference in %|
The takeaway here is that, on average, you spend ~30% more time working on Android than on iOS projects. As you can see in our table, sometimes the difference can be much bigger and sometimes much smaller, but, from our experience, the median value is around 30%.
We're not inclined to believe that this has anything to do with the quality of engineers on any of the platforms, as our team is equally great on both platforms, and our HR process doesn't discriminate when hiring for either position.
So why is Android development slower?
That's a very good question. We've been speculating about this for a long time, and what we've managed to figure out is that it's a combination of a couple of factors:
- Just more code - applications for Android are written in Java, which is simply a more verbose language than Objective-C or Swift. You're bound to write more code. More often than not, having to write more code means working longer and more potential bugs.
- Emulators are slower - even with GenyMotion, Android emulators are just slower than iOS simulators. This is just a factor that slows down the overall development.
- Fragmentation - more devices to test against, more potential vendor-specific bugs ("Damn, this only shows up on this random Chinese phone you can only buy in Lithuania!")
- XML layouting - on Android, layouts are primarily written manually in XML, so WYSIWYG techniques are used less than on iOS.
What does this mean?
When we started doing iOS and Android development on a work for hire basis, we based all time estimates on the assumption that iOS and Android development take the same amount of time.
We abandoned that premise about two years ago, and today we take into account 20-30% more time for Android for all the estimates we do.
That means that if we estimate an app at 500 hours to be built for iOS, we estimate it (and charge it accordingly) at around 650 hours for Android.
What's the trend here?
What's good here is that the trend is changing. The tooling for Android, which we covered here, is getting so much better, that in the future this Android tax will probably go down. Only metrics will tell.
Of course these metrics can't possibly convey every possible scenario and problem you have while building software. But what we wanted to say here is that, generally speaking, Android takes longer.
Thanks to my colleague Ivan Kocijan for his help with the data preparation for this article.