Web services are great especially when coupled with rich clients, such as the iPhone or any other competing smart devices. However, more and more there is a dark-side to connected apps: developers abusing the ubiquitous connectivity of these devices to avoid having to save data locally.
Like most of my posts here, this one was inspired by a real-life experience. Today while working on a client application that had previously been out sourced I was trying to display the logged in user’s name. Simple, right? I should be able to do something like:
This code assumes that a singleton is being used for the current; there are other ways to get the same effect, but I personally like the singleton method the best. However, I surprised to see that my code produced a syntax error. Odd. So a took a look at the user model. Not only was the singleton approach not take there was no property called “name” or anything similar. In fact, I discovered that there was no way to either store nor pull the user’s name directly from the model. Confusion. Confusion is the only word used to describe my mindset.
So, since I had just inherited this app and had my predecessor’s contact info, I pinged him, assuming that there must be some clever way to get the info (the user’s name) locally that had not yet discovered; the app is fairly large after all. I was happy to quickly receive a response from the developer but was a bit shocked by the answer. There was no way to get this data locally. He had planned on just making a network call each time that he had to display the user’s name and number of common user attributes. That’s awful.
You might be wondering why I feel so strongly about this. Think about it. To pull data from a local store you have to call the local store and that is pretty much it. To get data from a web service you have to send a request to the service, the service has to process the request, the service has to reply, and finally the client has to parse the reply. to get the exact data that you had requested. Which would you rather as a user? It gets worse though with most wireless carriers instituting data caps on their customers this lazy way of dealing with data can actually cost the user money!