Over the past four years, I have been fascinated at the speed at which the world has adopted mobile technologies. The advent of the App Store distribution model for software and media opened up new sources of revenue and dramatically accelerated what was already a fast adoption rate of smartphones. Today, estimates peg the global number of mobile users at 4.5 billion, roughly two-thirds of the world population.
The advent of mobile, coupled with the rapid evolution of cloud-based offerings and proliferation of API’s everywhere, has drastically changed the technology landscape — the world today looks very different from when it did just five years ago.
In parallel, users have substantially raised the bar on what they expect from their applications as they experiment first-hand the superb customer experience created by the Darwinian competition of over two million apps in the app store — all vying for their attention — coupled with the leading-edge design capabilities of companies like Apple, Google and Amazon.
It is not surprising then that this unprecedented mass adoption of technology has left most of the enterprise software companies and IT departments struggling. They are trying to reconcile a world that demands beautifully designed, scalable, consumer-grade applications that leverage all the capabilities of smartphones and other smart devices around the user with a reality of diminishing IT budgets, inadequate skills, outmoded business processes and a very complex, difficult to support, ever-changing environment.
Five years ago, if you led an internal IT team at a large corporation, you could count on a relatively stable hardware environment — probably a single client OS (Windows 7 perhaps?), a fixed set of hardware configurations from a few approved vendors, a secure internal network, and a controlled datacenter environment where your enterprise applications lived.
Today, development teams are increasingly expected to develop applications that work outside the firewall and leverage new capabilities (such as geolocation, beacons, sensors, and more). In addition, applications should support a variety of smartphones (iOS, Android and web at least) and interact with smart devices all while maintaining security and scalability at a fraction of the cost and time.
Over the next three or four years, things are bound to get worse — not better. The advent of the Internet of Things (also called the “Industrial Internet” or “Smart Devices” to incorporate concepts such as wearables) is going to put additional pressure on development teams everywhere to integrate them.
Users everywhere will continue to raise the bar on applications, as they will increasingly expect them to be sensitive to the context they are in — both physically (“why doesn’t this app know that I’m in the car?”) and logically (“why is this app showing me data that is irrelevant to the task I’m doing?”).
I use a term to describe this new type of application: ‘Contextually Aware Distributed Mobile Applications’, or CADMA. These are applications that run on large numbers of mobile phones with centralized cloud services leveraging internal or environmental sensors and smart devices. They are flexible and smart with the ability to offer the user the “right information with the right functionality through the right user interface at the right time and the right place”.
The problem is that creating these CADMAs is hard. The best way to understand the difficulties intrinsic to them is to review a few use cases. Here are two examples:
1. An application for a movie theater that runs on a customer’s phone, accesses a central reservation system, is aware of the customer’s location and time of day, of its proximity to different places within the venue, and of nearby friends who are also at the venue
The “contextually aware” version of this application would:
2. An application for equipment service technicians which incorporates a central dispatch system, takes input from sensors on devices deployed in the field, communicates with an app on the service rep’s phone, and has both technical manuals as well as historic data related to the equipment installed
The “contextually aware” version of this application would:
Pretend for a moment that you are the developer responsible for creating these applications. It is clear that you will need to implement the user interface both in the web and mobile devices, as well as the business logic behind it. However, a part that can end up consuming a large portion of the development budget, not to mention a significant number of all-nighters, is the plumbing associated with the infrastructure behind it.
In the applications we have developed, we have seen that most contextually aware applications need to:
Implementing these tasks can be very time-consuming not only because of the complexity involved, but because some areas (such as beacons, data synchronization or background network communications) are tricky and require a lot of testing to ensure they work properly. They also require skills that are often not present in the development team like setting up a public, secure, scalable server infrastructure, or dealing with advanced iOS capabilities.
At the same time, this functionality is generic and not where an application developer should be spending time on because it is not what will ultimately provide differentiation or business value to their company.
To address these requirements and leverage our experience building enterprise-grade mobile applications, our team developed a platform for CADMA that is robust, simple to integrate and easy-to-use.
The platform consists of an SDK that is integrated into the mobile applications, a REST API that can be used by devices, sensors and other web services, and a developer portal where server-based logic, data and parameters are accessed.
This hybrid model, when compared with traditional “mobile only” applications, provides much more flexibility and dynamism because it allows content and functionality to change instantly with just a few clicks.
Our goal is to enable application developers to quickly create robust, powerful contextual applications, without needing to spend weeks or months implementing these generic functional areas. In some cases, it can even compensate for existing skill gaps in the team: an iOS developer, for example, can develop and deploy a contextual application by simply interacting with the native SDK and managing it through the developer portal without needing to stand up his own server or learning any additional skills.
For companies and business managers, our goal is to allow them to spend the majority of their development budget on true innovation and areas that drive differentiation and user value – not on redoing the “contextual plumbing” of their applications. At the same time, our platform allows them to reduce risk and deliver applications faster because they are able to leverage a platform that is tested, robust, and operational today.
There are many possibilities with our platform. Here is a tiny sample of things I think are interesting and come “out of the box”:
It is my hope that developers everywhere find the platform useful and use it to create engaging applications that make our lives better. Try it for free at www.contexthub.com and send us your comments!
Keep up with new insights from industry leaders on digital transformation, mobile app development, enterprise architecture, and tech innovation topics.