How do you react when you come across a hitch while using an app. It's certainly an awful moment, isn't it? Everyone hates it when apps crash or even when they slow down for a few seconds. Interestingly, a research shows that 61 percent of users expect mobile apps to start within four second, whereas 49 percent want responses to inputs in two seconds. And in unfortunate instances when an app crashes, freezes, or has errors, 53 percent of users are likely to uninstall it.
In that case, it's advised to take your target audience quite seriously whether it's your consumers or the enterprise crowd, as failing to meet their expectations will make you lose out on them. Here an attempt has been made to present to you the most common problems faced by the mobile developers during the development process and how to keep them at bay.
1) Memory management
This is genuinely among the most common and biggest problem areas. An app might be having several issues like spinning too many threads or it might be running on a system that has too many apps open. Sachin Agarwal, VP Marketing at OpsClarity asserts, Your software needs to be a “good citizen in the app ecosystem,” he says. “I look at some news apps and they’re looking at almost a gig of data. They’re archiving news from the last month. There’s a level of corporate citizenship that needs to come up on mobile apps.”
On the hence side, Andrew Whiting, vice president of business development at Solstice Mobile puts it this way. “In iOS there are more things you can do to leverage Objective-C to handle a lot of the memory issues.” But there is a trade-off. “On Android, you have much deeper memory control and you can usually make it do exactly what you want it to do, which adds complexity.”
“You get into things with Android like running out of memory in Java, which typically we find correlated with things like loading big images or processing bitmaps. There are actually a surprising number of what look like linker issues on Android, where a class can’t be found, or there’s an exception called unclassified link,” avers Jonathan Karon, senior software engineering manager at New Relic.
2) Software lifecycle
Usually during an app development process, we see constant series of frequent releases that paves way for entering into the market with a minimum viable process. Gradually, it progresses and builds an audience. However, there can be a set of complications in your way due to your loss of the traditional software lifecycle. This is owing to your dependencies on the operating system and third-party APIs.
“If you look at the latest Android updates, the apps crash a lot,” Agarwal says. “The OS is unstable itself. Or the OS gets updated and the app hasn’t been updated. Or the user doesn’t download the new version. You have no control and it speaks to a core development process.”
With the expansion of mobile and cloud computing there has been a boost in the use of third-party services and their associated APIs, this saves time and the apps gets marketed more quickly. Still, certain issues have been registered. “A lot of the libraries are the lowest common denominators,” Whiting says. “They’re trying to solve everyone’s problems and not making an optimal solution for anyone.”
There are several tricky techniques, for instance iOS method swizzling. Director of mobile at online travel agency Fareportal, Raman Bhatia says, “You could call it one of the ‘dark arts’ of iOS app development. If your app code is written in a certain way, it can cause a crash.”
APIs can again bring in uncalled modifications. “API latencies, error rates, data bandwidth, version of the API used, and the number of API requests can lead to small issues that become big problems,” says Agarwal.
There can be other problems like memory errors too. “You’re pointing to an object you had already removed from memory, and that’s not usually a problem if you created all the objects yourself because you know whether or not you can refer to it,” says Long Le, cofounder and developer of We Get Fit, an upcoming Apple Watch and iPhone fitness app. “The problem happens when you bring in third-party frameworks. You’re never sure what they’re cleaning up and what they’re creating.”
3) Inadequate testing
Well, it's imperative for an app to be tested, however, with there being myriad of Android versions and devices it is immensely difficult. Despite the presence of simulators, it can be tricky for the software running on a server as it might show the same performance limitations. Like, one thread of an app tries to read a database at the same time a second thread tries to modify the same database.
“It’s a timing problem,” says Wayne Carter, chief architect of mobile at Couchbase. “If they don’t hit at the exact moment in time, the issue doesn’t surface. It can be covered up with something as simple as a log statement.”
Ultimately, it is advised that the testing be combined with benchmarking against industry standards and user expectations so that what is acceptable to developers is also acceptable to users. Testing needs to be an ongoing process like performance must be monitored and also look for user feedback suggesting problems, and then fix things instantly.
4) Network management
Yes, network access play a crucial role as apps mainly depend on the same, either for data or third-party services. “The most important reason apps crash is the responsiveness and your app hanging when you’re trying to get some data, or you have submitted something and you’re waiting for a response,” says Pravin Vazirani, associate vice president of operations for Chetu, a software development consultancy. There could be an instance where the developer had a good Wi-Fi connection, however the user doesn't have a smooth running mobile network. As well, there could be changes in networks, caused by going from 3G to 2G, going into and out of elevators, and many more such conditions.
In such scenarios you can save yourself from user's wrath by informing them of the connectivity break and offer something interesting to do. People tend to remain calm when they understand that the temporary condition is beyond the control of the app. This way it won't affect the sheen of the brand name associated with the app.
5) Error condition and exception handling
Certain errors are unavoidable in the mobile development like there could be unexpected API change, a memory problem that avoided previous detection, or a network condition that puts an end to the connectivity or hampers data speeds during the transmission of large files like images and video.
However, you can easily deal with such a situation with good error and exception handling as then the app won't be bothered with an unexpected issues like attempt to divide by zero, an incorrectly entered response from a user, or the temporary loss of connectivity.
When the app is properly coded then it will gracefully terminate the process or activity while informing the user of the error. This might not be an ideal way, but you have good chances of keeping the user.
6) Excess code
Keep it simple. Offer the single-purpose tool that people desire and it's advised to code only when needed. “The best and most bug-free code is the code that you don’t write,” says Felipe Laso-Marsetti, senior systems engineer with the enterprise mobile development firm Lextech Global Services.
Well, it seems practically not possible to create a bug-free app, however, focusing on these trouble sources you can manage things well and avoid unwanted situations.