When it comes to going mobile, the first order of business for most enterprises was simply getting an app built – learning the technology, designing effectively for the mobile form factor, writing the code and getting it out the door.
Having surmounted that initial challenge, many companies now realize some refinement is in order, not only to the initial design, as you learn how users actually use the app, but also in “hardening” the app – making it truly enterprise-grade.
The tried-and-true principles of software development that were second nature with traditional web and enterprise applications, such as ensuring quality and performance, apply equally to mobile. The dilemma is how to incorporate these fundamentals and still deliver at the wildly faster pace – and with the superb user experience – customers and employees have come to expect in the mobile world.
We recently had a great conversation with Michael Facemire of Forrester where he highlighted exactly this challenge. As Facemire put it, with the requirement for speed comes the opportunity to cheat. Meaning that the time-to-market imperative imposed by mobile can introduce the temptation to cut corners. However, while cutting corners — by not testing sufficiently, for example — may indeed allow you to release faster in the short-term, these shortcuts will ultimately slow you down and come back to haunt you in the form of buggy apps, dissatisfied users and an unwieldy portfolio.
So how can enterprises operate at this new breakneck cadence and still clear the requisite quality hurdles? We’ve talked previously about how to accelerate your mobile app lifecycle, including how a minimum viable product (MVP) approach can help. The other side of the equation relates to this notion of “enterprise-grade” and incorporating the tenets of good development into our mobile delivery process without sacrificing velocity.
If you try to decipher what is admittedly a somewhat vague marketing buzzword, what we are ultimately after when we refer to “enterprise-grade” is a purposeful, high-quality app. These are some of the elements this should include and how they can be incorporated for mobile:
- Functional quality: The argument for automated testing was a compelling one even before we had to contend with testing across the explosion of operating systems, devices and form factors that mobile has introduced. The ability to have a single automated script that can work across all these variations now seems like a no-brainer to support faster, higher-quality releases. We can very quickly know when we have broken something in one of the many combinations without getting bogged down in endless cycles of manual verification.
- High-performance: A superb mobile experience is one part great user interface and one part performance. You must have both, or your app is doomed. It is no surprise that one recent study shows 88 percent of users have uninstalled an app due to poor performance. So what constitutes good performance? The prevailing thinking is that we should target sub-second response, including any delays that might result from the network. Whatever target your team ultimately sets though, the critical step is to actually measure new features and changes against this benchmark as part of your continuous testing regimen. You can then improve speeds as needed by refining the code or doing things like incorporating a caching strategy.
- Reliable: A reliable app lets you accomplish your task without interruption – meaning it doesn’t crash. Despite all your testing, real-world users will subject your app to scenarios you could not have predicted and find ways to make it fall over. Part of a mobile team’s job is to monitor the app in production so these exceptions can be identified and fixed before they impact a large number of users. Crash analytics not only provide visibility into the specific scenarios causing crashes, but can also give actionable information (even down to the specific file and line of code causing the problem) so that issues can quickly be fixed, tested and deployed.
Another dimension of reliability for mobile is the ability for an app to continue to function as expected despite fluctuations in network connectivity. Online/offline synchronization as part of an MBaaS capability such as ours allows this complex functionality to be implemented out-of-the-box.
- Scalable: Usage profiles for mobile are dramatically different than those of traditional apps. Users now have 24/7 anywhere access and are performing tasks in any spare moment. The resulting increase in transaction volumes means the back-end services for your apps need to scale elastically. Selecting an architecture that accommodates this is the first step. Look to asynchronous, event-driven architectures such as those provided by technologies like Node.js to accomplish this.
- Secure: Security concerns abound with mobile, and it seems like every few months a new vulnerability of some kind is identified. There are a handful of precautions that you can easily bake into your default development process to produce security-hardened apps. These include encryption of the source code (that now resides on the user’s device), database and file-level encryption for data on the device, encryption of data in-transit, and app controls that come with MAM solutions. See our Five Practices for Secure Mobile Apps post for insight on these measures.
- Easy to maintain and improve: Maintainability is one of the characteristics most often overlooked. The rapid update cycles of mobile apps makes this all the more important. If we take the use of coding standards as a given, one of the next big things you can do to help yourself down the road is to instrument your apps for analytics. This will help you make fast, data-driven decisions on what changes to implement to improve your apps. It will also help remove the back and forth dithering and guesswork regarding what the team should work on next. It can also let you know from a business perspective if the app is delivering the results required — and, if not, what part of your flow needs work. Whether you are an indie developer or a Fortune 100 enterprise, this is critical because it lets you focus your limited resources where they will have the greatest impact.
These are just some of the areas to focus on as you begin to mature your mobile practices to achieve both speed and quality.
What steps are you taking to ensure your apps are enterprise-grade?