Verizon joined AT&T and eliminated its unlimited data plans last week. That was bad news for businesses that see mobile as an important tool in their IT strategies.
Data caps mean they may find themselves either doing less or paying more. What are people with computer programming degrees to do? Realize that the new world of mobile development needs some brushing up of coding skills and an old school dose of software architecture efficiency.
Early in computing, programming had to be efficient. For example, in the 1970s, a symbolic mathematics program called Macsyma had to run in about a megabyte of memory. But computers, following Moore’s law, rapidly grew in power and dropped in cost. Companies increasingly wanted to get business benefit out of computing. It became more cost-effective to program less efficiently, using tools that would get results faster. Code may not have remained elegant, but then, it didn’t have to. Better to have results soon enough to take advantage of business opportunities. However, mobile changes all that when users don’t have unlimited data plans. Verizon’s new plan has gone from a $30 flat data rate for a smartphone to fees that can run as high as $80 a month for 10 gigabytes. Not that many users will come close to that level. But tiered pricing can force businesses into choosing slightly more expensive data plans so their traveling employees can have complete access to IT systems through phones or tablets — particularly when those systems might include video or other large amounts of data for training or presentation purposes.
There are two major parts to writing efficient mobile applications: the client itself and how to partition data and processing between the client and a back end system. On the client end, even though you can look at specific efficiencies you can gain from a particular programming language, choosing the right data structures and algorithms you learned in your information systems degree will play a far more important role. Then consider the trade-offs between what the mobile device can do and what can be done by in-house systems. For example, can you store data on a server and pass only the bare minimum of data that the client will need? Is it more effective for the particular use to cache blocks of data that will likely be necessary anyway? Can the program pull down those blocks a few times a day when the device is on a Wi-Fi connection, rather than using the cellular network, cutting down billable data use?
Think of mobile applications as systems with one foot on a server or cloud and the other on the handheld client, where the goal is to shift data back and forth as little as possible, and you can help your company save money on its wireless expenses.