In the past 6 months, I’ve seen more and more infrastructure companies focused on network data optimization (and why shouldn’t they be with video consumption continuing to explode and now representing 40% of all data load). On the other hand, from an operator perspective, the introduction of data caps in creates the downside protection they need (eg if someone is being data abusive, they are paying a significant premium for it) – not a bad situation for the operator.

That being said, what I haven’t found much focus on is the shift of data consumption responsibility to the developer. Developers need to build network-efficient applications and unfortunately, I still haven’t found a best practices / guidelines for developers to adhere to.

I’m definitely not a network expert but certainly developers should keep in mind the following:

1. Chatty vs queued (I’ve heard that the opening/closing of network connections causes unnecessary pain; developers can design around this?)
2. WiFi vs 3G (It’s not difficult to determine network speed and then determine whether to do the “large” or “small” download. This is similar to how in prepaid days, apps may wait until nighttime to download data because of the cheaper tariffs)
3. Roaming or not (This would require network APIs to be available but assuming it is, this would absolutely impact when the application should be transmitting data)
4. Load on the network (Again, this would require network APIs, but knowing load can be used to a developers advantage)
5. Compressed vs uncompressed (Many argue that the PC resulted in inefficient app development and mobile made you efficient again with limited storage/memory/CPU etc. Now that mobile is the new PC, that may be happening again. If you have a server-based application, why not compress?)

And the list goes on…

Operators need to put more pressure on developers in writing network-efficient apps rather than pushing data caps, IMO. Let me know if anyone finds a list of best practices?

  • Matt Miesnieks

    hey Raj,

    good to raise awareness of how a developer can improve the UX by adopting some best practices for building networked apps (FYI – http://www.w3.org/TR/mwabp/ ). These issues have been around since I was a network architect back in the early 90′s (and they were old then, as old as the IP stack…), it’s just that the current generation of developers never had to think about it as most have come from a broadband web development background. Nearly all the points in your list have well known means to deal with them. One piece of good news is that many of the potential optimizations are managed by the various proxies & routers that carriers deploy, so developers don’t need to think about it (compression, packet sizing, etc) and anything that is likely to cause trouble (e.g. custom session oriented transport layers) are blocked.