whatsapp messenger

How did WhatsApp team go about building app on multiple platforms cheaply?

Answer by Sayo Oladeji:

As much as I agree that scaling the backend is a very challenging thing. Android, S40 and S60 are particularly difficult to program. WP7/8 are relatively easier. There’s a reverse engineered source of the WhatsApp Android client online; take a look at the number of com.whatsapp classes and you’ll get a feel of the enormous work that this guys have done (humorously, this kind of explains why Facebook has never been able to put out a decent Android app).

On the client-side, you have to deal with fragmentation issues as your users won’t be running the same OS version, screen sizes and color depth, hardware, memory, processor, etc. Things even get messier when they’ll have to run your app on tabs. Some devices won’t even allow HTTPS out-of-the-box.

Now take Nokia S40, you have FT (full touch), NT (non touch), TT (touch and type); on S60 you have FT and TT; on Android you have FT, NT, TT (and then you also have tabs to cater for); on BB you also have FT, NT, TT (and you also have the PlayBook tab to cater for), on iOS you are free from fragmentation to an extent but there comes the iPad and then iPad mini which you also have to cater for; its only on Windows Phone that you’re somewhat free from fragmentation since Win Tabs run Win 8 and not WP8.

For us at Booshparrot, our S40 codebase alone is more that 12,000 lines of executable code (no comments, no whitespaces). Our Android has seen very serious work too.

I heard its easy to develop on iOS (since you have good libs for all those visual effects; I do not have iOS dev experience) but on S40 and to some extent Android, you are on your own. I’ve developed on WP and its super easy but that’s as good as it gets. You won’t be developing very impressive mobile apps cheaply.

WhatsApp did not build apps on multiple platforms cheaply. WhatsApp has a solid S40 client and S40 that only offers apps 2MB of heap!!! And with very low processing power on these devices, a lot of deep engineering has to be done to make the app run fast. The reason why they have succeeded in building on multiple platforms is that they have a strong engineering team and they have the support of some of these platform providers.

Meanwhile, there is a technique called engine abstraction that can make mobile app development across multiple platforms significantly faster. We use it as Booshparrot, WhatsApp will most-likely be doing it too. There’s another technique called UI abstraction, but that is a terribly bad idea (in our little experience) so don’t think of it. WhatsApp doesn’t use it and we don’t use it either.

Well, at Booshparrot, I work on the server-side and scalability has been a very difficult challenge (which we’re handling pretty well so far) and in general I acknowledge its a bit more difficult than making mobile apps but the difference is not that much; I’ve seen how hard my colleagues work on the client apps (I browse their repos). And looking at solid apps like PicsArt Photo Studio (Android) just drops my jaw completely!

View Answer on Quora

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s