Mobile users have high expectations, and there is no such thing as one size fits all. We look at how this affects mobile app development
Mobile users have high expectations, and there is no such thing as one size fits all. Many will use different device form factors – smartphones and tablets – and a mix of operating systems, sometimes interchangeably.
This has a profound effect on mobile app development. Mobile apps will not only need to be available on a given user’s preferred device, but also work consistently across different devices.
Apps also need to deliver value to users and be engaging, which means mobile app development should encompass innovative and unusual areas beyond traditional application development.
Smarter focus on the user
The user comes first. Much emphasis has historically been on aesthetics and look and feel, but this is now shifting to usability, effective interaction and the overall user experience.
To improve usability and engagement, some of this interaction is moving beyond the traditional small mobile screen into virtual and augmented reality (VR and AR).
Although the immersive nature of VR has long appealed, it was AR which had a big boost in 2016 with the popularity of Pokemon Go. Despite sounding similar, VR and AR have entirely different purposes and require completely different thinking from a developer perspective. The impact of AR is likely to be broader than VR as it can be added to so many applications and does not force users to become immersed, but simply assisted as their physical and digital worlds overlap and can therefore be applied to existing mobile devices.
Products in this fast-paced and embryonic area come and go, even large ones such as Nokia’s Here, and there are probably more open source projects than proprietary AR development toolkits, such as ARToolkit and development specialists such as Azoft that can help with the integration of AR. HP’s Aurasma, Blippar and Wikitude provide end-to-end capabilities with maturing software development kits (SDKs) for app developers to use.
Putting mobile into context
It is not only the front end of mobile applications that are changing. At one time, the focus for mobile context revolved around location and the opportunity for location-based services, which in some respects has morphed into appetite for AR. Now there is greater emphasis towards a broader contextual understanding that exploits the sensory reach of the mobile device environment in combination with the power and capacity of big data in the cloud. Combining this with remote capabilities to exploit artificial intelligence (AI), machine learning and what is sometimes termed ambient intelligence (AmI).
Already, Microsoft has integrated its Intellisense into Visual Studio, and Amazon Web Services (AWS) recently announced Amazon Lex integration. While Apple’s Siri, Microsoft’s Cortana and even Google Now have struggled to gain more than geeky adoption, Amazon’s Alexa has really taken off and is already being touted for business applications. This will have an impact in mobile application development as voice-initiated applications spread.
Emphasis on user experience will often benefit from an agile approach to software development, with prototyping and user involvement as early as possible. Rapid prototyping and citizen development where non-programmers can turn business ideas into mobile applications shifts the attention to quickly generating value. There are a number of “low code” or “no code” platforms targeted at non-technical app builders, which use a mix of rapid prototyping and cloud-based back-end services, such as Appery.io, MobileSmith, K2, Kony’s Visualiser, Mercato KnowledgeKube, Mendix and OutSystems. These approaches make it easier to match functionality with need, and free up time for others to address some of the more technical development challenges.
Engineering the mobile experience
Despite all of the gloss required to make mobile applications engaging, they must still be engineered to work on a range of devices – producing applications that run effectively across multiple platforms is the eternal developer challenge. Mobile makes life harder with the range of device types and operating systems, limited and variable-sized screen real estate, intermittent network connection and user expectations of a simpler experience.
Managing a series of different variants for different platforms is a challenge. While universal “write once, run anywhere” platforms such as Java have been around for some time, the reality is a little more complex. Not only do operating systems and platform application programming interfaces (APIs) vary, but native programming languages do too; Java on Android, Objective C on IoS (although Apple’s new language, Swift, will grow this year) and C++ on Windows Mobile. However, there are four primary mechanisms through which mobile cross-platform development can be easily achieved: mobile-styled web apps, hybrid apps, cross-compiled apps and back end as a service.
• Mobile-styled web app: With a far more settled HTML5 standard, JavaScript and Cascading Style Sheets, and tools such as Sencha, this is a quick way to blur across the differences in platforms, but ultimately not as functional as alternatives and with less control for the developer.
• Hybrid app: An expedient combination of native and web development approaches, originally popularised by PhoneGap, where a lightweight native app launches an embedded browser. The open source Apache Cordova is the common starting point for PhoneGap but also for other hybrid tools such as Telerik and Ionic.
• Cross-compiled app: Here, products such as Xamarin (owned by Microsoft), Appcelerator or 5App enable developers to write code in one language and then convert to native code for the target mobile devices. Native is best for ultimate performance – generally vital for gaming, less so for most enterprise apps – and it also gives complete access to the features and functionality of the underlying platform. Others, such as RubyMotion, use Ruby and then compile into native applications.
• Back end as a service: This is a relatively recent trend, to offload much more business logic into the cloud. Some, such as Kai, AnyPresence or Kumulos, will work well for independent developers. Others, like Kinvey, are targeted at the enterprise. Among the larger cloud players there is also AWS with its Mobile Hub and Lambda, Google has CloudFunctions, and IBM’s serverless initiative with OpenWhisk.
While focus on the mobile user is important, and may now be a primary rather than secondary focus, many enterprises will require applications to function well across desktop as well as mobile device platforms. While there are many low-cost, open source and specific mobile-first and mobile-only tools, there are also more fully functional enterprise development platforms to consider, from Kony, Pega ApplicationMobility Platform (formerly Antenna) and the SAP Mobile Platform. These offer complete environments for development, delivery and management of mobile applications.
Making time for testing
The huge number of devices and operating systems variants with associated emulators creates challenges for testing, especially as users are unforgiving of problems and will quickly ditch underperforming apps. Software testing is often a bit of an afterthought in any event, especially when there is pressure to get quickly to market, and to be done properly testing needs to be carried out on real devices, not just emulators.
The only realistic way to do this is to automate as much as possible. Service providers offer one route, such as SauceLabs’ TestObject, Perfecto Mobile and Xamarin with its Test Cloud, offering cloud-based access to large numbers of real mobile devices. For those looking for automation to record a test process and then run it across different devices and languages, there are open source tools, plus offerings such as Sigos, Ranorex and Experitest’s SeeTest.
As well as functional testing, it is just as important to test the user experience, and often this can only be done in conjunction with users once the app has been at least partially released “into the wild”. This might include recruiting users into a usability or beta test programme with tools like Userlytics, Appsee and Applause, or viewing their facial and vocal reactions while they are using the app with something like UserZoom or Lookback.
There is also security testing, and the software vulnerability scanners have been adapting for mobile code, and additional services such as Veracode’s Mars (mobile app reputation service).
Delivering a seamless experience
Mobile applications have come a long way in the 20 years since the appearance of the Nokia Snake game. There are not only functionality and performance gains, there are new commercial models that have transformed what applications have become – less of a point product and more an element of a service.
Apple’s “there’s an app for that” slogan highlights the ubiquity of mobile, while Android’s “be together, not the same” indicates that there is commonality, despite variations in devices. Users expect a seamless and universal experience, but mobile app developers know they will need a lot of help along the way to deliver that.
Rob Bamforth is a principal analyst at Quocirca.