Enterprise Mobile Development: Embrace APIs Or Dig Your Grave
You take the blue pill, the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill, you stay in Wonderland, and I show you how deep the rabbit hole goes. — Morpheus, The Matrix
Mobile development, like Morpheus in The Matrix, offers two options: Take the blue pill and assume that mobile is just another screen size to front ends that we’ve already created. Take the red (with me) and understand that mobile changes not just the front end, but your entire technology stack! Ready to look down the rabbit hole?
A new supply/demand paradigm is driving enterprise architects and application development professionals to a technology inflection point. The demand is for mobile apps — consumers have an insatiable appetite for more apps, developed and updated at breakneck speeds that deliver mind-blowing experiences. And the mobile app consumers aren’t just external — they’re also employees and business partners. As app-dev pros, where do we turn to supply this growing demand? Application programming interfaces, better known as APIs.
Before we get into details of this challenge in the real world, I’ll promote my four-tier architecture that looks at this API layer within the entire technology stack used to support your mobile efforts. You’ll find it in my report Mobile Needs A Four-Tier Engagement Platform.
Let’s look at a common enterprise example: mobilizing corporate sales systems. Ask a mobile developer (aka a front-end developer) to write a mobile app against the set of back-office systems that a salesperson uses and don’t provide any additional infrastructure. The development life cycle will look similar to this:
- Stop and learn all the nuances of the sales systems. This includes data protocols and supported interaction patterns. After a week of learning these, devs start to dream about the great mobile experience they’ll create (they’re front-end people, after all!) and will run into a bigger wall…
- Stop — the data formats provided by these legacy systems weren’t built for mobile. Today’s client devices operate on transient networks with limited bandwidth and support users with incredibly small attention spans. They’ll spend two weeks creating a mediation layer to do this translation, requiring more in-depth knowledge of the system they’re “mobilizing.” They’ve now spent two weeks working day and night and have not written a line of mobile code — nor do they have anything to show the business. I wouldn’t go near them during this time if you value your health.
- Finally! Write some mobile code! Using the mediation layer to translate the data into a mobile-friendly format, devs can spend three weeks writing the core mobile app to show off some fruits of their labor. This app is very minimal, without any bells and whistles, and your mobile developer has a bruised head from banging it against the wall of back-end systems.
That’s just one app. Imagine their (lack of) excitement when presented with the same opportunity to mobilize your field force.
Let’s rewind to the beginning of the story. Before asking front-end developers to mobilize a system, instead have your back-end team create a consumable API layer across all of your key systems. It doesn’t need to be comprehensive, nor does it need to be perfect. Simply expose common use cases with REST, using JSON or lightweight XML to transport the data. The back-end team is happy and got to learn a little Node.js along the way! One week into that exercise, give your mobile developers the same initial challenge. A baseline of APIs enables them to spend 100% of their time creating an amazing experience. Happy developers make happy apps. And fewer bruises.
If your mobile developers are unhappy and leaving for new exciting opportunities, take a look at their environment. Embrace an API strategy and you will start to see many more happy faces.
If you’ve started down this hole, or think I’m crazy, please let me know: @ASocialFace on Twitter. Always looking for opportunities to geek out on this or other mobile development topics!