“If you are a developer, you can make ‘Whatsapp’ in 8 hours” mentioned in a news article in my city.
If you know nothing or a little about programming, you may believe in that;
If you are experienced developer and project manager, I am sure you will doubt about this;
Maybe what he is saying is a “lite” version; But if we are making an application as good as Whatsapp, that is impossible;
Why? There are lots of technical challenges solved by the Whatsapp maker;
This article will answer why we can’t make “Whatsapp” in 8 hours or even 8 weeks by listing out the challenges involved to make a “Whatsapp” application.
Building for different platform and devices
Whatsapp is a software that available on many platforms such as iOS, Android and even Windows phone;
To do that, we need deal with different platform SDK. It is not an easy task, it take time to familiar a platform;
Besides the platforms, we need deal with different devices which have different screen resolution, memory limits;
In my recent project, one problem is encountered by us due to cross platform; That’s we want to share videos between iOS and android; To solve this, we need to define which format to use and how to convert into that format.
Building a robust server
One of the Unique character about Whatsapp is that it is very responsive; It is not easy to do so, the engineers there are making a very robust and fast backend.
To achieve that, lots of work need to be done, such as diversify the loading, build a replicas, cache to increase the availability, build an infrastructure to transfer and store the data;
Here is the article about how they build the backend:
Making UI and UX
Another challenge is that UI and UX of Whatsapp; There are lots of work related. And the work need to be polished and polished again until it is good to be released.
There are lots of detail need to be implemented such as how to show something with decent animation, when to show and hide a progress indicator, how to tell the status if a message is sent successfully or fail to sent;
Besides, we need to tailor made for different mobile users, Android users and iPhone users have different usage behaviours; Android users have “back” and “menu” buttons while iOS users doesn’t have any;
There are many more issues that may increase the project duration and hardly to list them all here; However, there are two hot items that cause us much time;
First is debugging. Debugging is a task that we can hardly determine how much need to spend; However, if the software is more complicated, there should be more time required to do debugging;
Second is the proficiency of the developers to the application and the technology involved; If the developers are new to the technology such as the platform SDK or 3rd party libraries involved, it is also hard to determine how much time required to learn them or use them well.
The statement inside news article really help to is to rethink more about effort estimation; Some discussions among developers here quite against what the news was saying; But this kind of wrong estimation happened all the time;
During my previous projects, I usually fell in this trap too, often under-estimate the cost; It is not fine if someone else trust your estimation;
For example, the business team has promised to deliver the product to the client on a certain date, but you deliver late; This will cause two results: First, you company will give penalty to the client; Second, the dev team need to work overnight to ship it on time;
Thus, we, project manager or software developer, need to think seriously about the estimation and do it as good as possible;