The mobile development area is one that grows stronger and stronger each day. As such, many different applications have appeared on the mobile stores, and many others are requested by different corporations. This creates a wide variety of styles, ways of use, and general functionality of the different applications. But no matter what type of App you are making and for what purpose, there are some practices that any mobile App should follow or at least consider.
Audience and platform standards
When starting a project a mobile developer needs to consider the following questions: “Who am I developing for?” and “For which platform am I developing for?”. The first question is similar to what developers on other environments would ask themselves, to make sure the application is useful for the final user and that he can use it intuitively. But the second question is something that is seldom thought about the first time.
Even if we just consider the two biggest mobile OSs (Android & iOS), there is notable differences in how the end user expects the App to behave, how it navigates between screens and even how it looks. Both Google and Apple have substantial information about how to design Apps for their platforms, and even when developing the same App for both we need to consider how to comply with their respective guidelines. And this rarely can be achieved with a single unique solution. It is important to understand the core principles of the target platform before deciding on a possible solution or design option. Only defy this guidelines if you have an extremely good reason to do so, and this reason is specific to your App.
This problem is particularly important for mobile developers who use hybrid solutions to develop once for both (or more) platforms. It is not uncommon on this types of solutions to have one design for each platform per screen, which in turn hinders the code reusability for the logic of the App.
The risk of not following the standards (or not considering the audience) is mainly of confusing and frustrating the user, since he tries to use the App in a way he is used to and it does not respond in the expected way. This can then turn into the user uninstalling the App, bad reviews on the stores, and/or general dissatisfaction with this and other related App products.
We can easily see an example of this differences between Android and iOS just by going to the Play Store and App Store respectively. Both feature tabs to show their contents, but Android’s Play Store feature Tabs are at the top and only use text, while Apple’s App Store features the tabs at the bottom of the screen and are a combination of images and text. Even the way to mark which tab is selected differs. On Android we see that the selected tab is underlined, while on iOS the selected tab is marked with a different color and filling the icon.
Design is the next big consideration for mobile development. This can make or break your App according to how comfortable your users feel with it. As with all applications which need a visual interface, it is important to strive for intuitive and simple design for the user to, almost immediately, understand everything. But mobile development comes with a couple different aspects to consider.
First of all, this point is heavily related to the last section about standards and audience. A user will expect your App to have a look and feel similar to other Apps he uses in his device or that he has used in the past. This helps making your app intuitive and enhances the user experience.
However, this does not mean that if you need to develop an App for more than one platform you need to make them completely different. The same application on different platforms should behave consistently throughout all of them, even considering mobile Apps that have an associated web App. What the App can do and the workflow of how to do it should be as similar as possible, while adapting to the guidelines of the target platform.
Another aspect of UX design to consider for mobile development is the ratio of images to words that is present in your App. Thinking visually is important while designing the App to develop an engaging experience, but words can be easier to understand and explain better what you want to communicate. A key rule is using common icons for common actions, as would be the back arrow to go to the previous screen or a camera icon to take a picture. After that, it is usually good to use images and icons only if they are representative enough of what you want the user to understand, and use words for what you cannot say with images. Show your App to different potential users and try figuring out which images are intuitive and which should be changed for clarity.
Basically you want not to overwhelm the user with images, and not force them to read unnecessarily. The best way to achieve this balance is not to keep what you think is the best idea, but what your potential users say they understand. You need to make sure they will understand by showing it to them and getting their feedback.
No matter how good your App looks and how intuitive it is, it will fail if it performs poorly. Obviously this is true for every type of development, but as always mobile development can be a different problem entirely.
With mobile Apps, the user expects almost immediate response to their actions, and if that is not possible they want to be informed that the action will take time to complete. The most common ways to indicate this are looped animations (for example activity indicators) and percent-done animations (for example progress bars).
When should you use one of this methods and when to use each one? Unfortunately there is not a perfect way to determine this, but there are some useful tips that can help you decide. Usually if an action does not take more than a second to complete, no indication of progress is needed for the user. The visual impact of his action will be evident (either by a change on the screen, a change of color, a toast message appearing, etc) shortly and he will not become impatient. Moreover it can confuse the user if every click he does comes with an indicator even if the response is immediate (like quick navigation or toggle button presses).
If the action takes more than a second, but it is not very long (for example 10 seconds or more), or there is no way of determining how much of the progress is complete or how long it will take (as waiting for an HTTP response), you should use a looped animation, either one that is custom to your App or the usual one for your platform. This makes the user realize that the App is working and not that the click has not registered or that it does not work.
Lastly, if the action takes longer than about 10 seconds, and you can give an estimate of how much time is left or how much of the work is done, you can use a progress-bar to show this process to the user. This helps him notice that the action will take a while and can give him an idea of how much time it will be. As always you should check the platform guidelines to ensure you use time indicators correctly.
As a general rule of thumb, always try to optimize your code to respond as fast as possible and show visual progress to the user, notifying him if something is happening in the background to reassure him that the App has not become frozen.
Yes, security is important in all types of development. Yes, as it has been the case on the last sections, mobile development has some extra considerations to take about security as well.
Mobile Apps usually have the feature of communicating heavily over the network, being dependent on the responses and processing that is done server-side. Also, by nature, they are used on devices that are on many different (potentially non-secure) networks. All this without even mentioning that mobile devices are more likely to be lost/stolen, which can lead to information being stolen if mobile developers do not put emphasis on security.
The principal aspects that need to be treated are:
- Encryption for all data that is being shared by the App wirelessly, both incoming and outcoming.
- Backup of user data automatically, to ensure that no data is lost for the user if a problem occurs, of any nature.
- Authentication to ensure that only the destined user sees the information that only he should have access.
- A way to erase information remotely in case a device is lost in any way, to help prevent stealing of data.
The last point we will cover in this post is the importance of analytics data on mobile development and applications. Integrating analytics help track your users activity and how they use your App. This in turn can give you information on what aspects of your App are the most popular, the amount of time the users spend on it, and what is the general navigation process that most of your users follow.
This aspect is linked to the audience importance we discussed earlier. Who uses your App and why lets you redesign the App to make it more usable and useful for your users, and evaluate in which areas to focus. There are many analytics tools that can be used in the different platforms, and in some cases even the platform itself can give you tools for this purpose.
Analytics also helps with finding and fixing bugs, if it is incorporated to send crash logs and different internal data flows. With this, information about the errors on the App can be found earlier and in a more complete way, and also see which ones are the most common and their impact on the user experience.
Exactly which analytics are necessary for your App varies from case to case, but crash logs, navigation flows, device type, time of usage, duration of usage, and user location are usually useful information to have and to process later.
It is important to integrate analytics as soon as possible in the development, since the task of adding all the logs to your analytics can be a daunting experience if done all at the same time instead of when it is being programmed the first time.
This post is just a simple guide of practices and is in no way a complete guide for all considerations in mobile development. There are many other aspects that should be considered such as testing, how to know your end users, cloud, etc. without mentioning the guidelines that each platform has for developers. And as always, experience is invaluable to make the correct decisions when the different problems appear.
We will cover iOS and Android best practices on other posts on this blog, which will be linked below when posted.