Enterprise Mobility Is All About the Freedom and Richness of the Client
Consumers are speaking loud and clear. Enterprises are starting to wake up. Even Microsoft got the message and has started to respond, RIM didn't. The way everyday users consume information, interact with each other and accomplish tasks has changed in a big way. SmartPhones, tablets, Ultrabooks, TVs and even the cars we drive are causing a revolution in software and hardware we have not seen since the Internet became mainstream. Being mobile is one thing, new natural user inputs such as touch and voice going mainstream are just as much to blame. The tired old strategies of central state control employed by most enterprises are dead.
The vast majority of the work force is a general consumer and are adopting modern personal computing devices more and more each day to their daily work routines. So much in fact I will say the iPad is becoming the new MS Access for office employees because individuals are circumventing the IT rules to be more productive. This means Enterprise IT has to adapt new strategies to make this consumer driven workplace works or else they are going to get run over. There is more good news in that statement than bad, depending on your point of view. I look at it as a rich opportunity for use to achieve.
Enterprise Mobility is All About the Client
Earlier this summer I had to spend time in the hospital with my dad. As I watched the nurses work I could not help but see how much a mobile reboot would make their life easier. Smaller devices combined with a rich mobile first user experience would not only make them more productive, but increase the quality of life for the patient. In one corner of the room was a standard tower computer with a monitor for the nurse and technicians to log data during their visits. Sometimes another computer would be wheeled in, which I could not help but see a tablet in the tech's hand to replace the contraption. These carts were not only ugly, but they take up space that could better be used for friends, family and of course flowers. They give the room a more mechanical persona, not a comfortable feeling you want when you are not feeling well.
But just as important these computers were running client software that I would be embarrassed to ship, much less even prototype. Health care is one of those industries where small errors have extremely high impact, and I am not saying the staff serving my dad was making mistakes. But I would sort of watch them interact with the software. I could see how to reduce time to log data as well as make the process much easier and of course more eye appealing.
Migrating the software to a new mobile platform not only gives us a chance to create more usable client experiences, it also gives us the ability to make medical professionals more agile. Now they can easily carry a tool around that before would have just been a clipboard. Now it can provide rich, instant access to patient information, collaboration and much more. Giving the nurse, technician and physician the ability to provide the needed care easier to the patient.
I use my experience in the hospital only as an example, every single business is going to be affected by the mobile revolution. This revolution is rapidly over throwing the regimes that have dominated the corporate IT world is an opportunity to reboot and fix a lot that is broken in a huge marketplace. Custom enterprise software has always been one of the cornerstones for IT and developers alike to have a positive impact for our companies. Sadly we as the corporate geeks have generally had a bad reputation in both IT support and the less than desirable software we produce.
I hear sentiments all the time from my programming peers related to client software development. Mostly its about not being involved with the actual client experience. And yes for most developers its much easier to push bits around in the back-end because there is no artistic component involved. Often after we have burned out the brain cells on making sure the application logic works, is secure and can scale we have nothing left to make it actually usable. And as I often say there is no AssertDelightsUser method available for unit testing. The result is sad client experiences like I watched in the hospital and have seen over and over inside corporate walls all over North America.
Leverage What You Got, Make It Usable
Lately I can't help but think that many developers really want to just release a command-line tool as the final client. And as I survey mobile application stores the software might as well be a command line tool. If you seriously think user interface and user experience does not matter then root your favorite Android device and remove the UI and just run from the command prompt and let me know what you think. I seriously doubt anyone really wants to do that and the reason is even the geekiest of us want an easy to use interface.
Enterprises typically have rich back-end systems that are already built for clients of all types. Most systems utilize a Service Oriented Architecture (SOA) in some form or fashion. If not, again here is the time to tell the boss to pull the trigger. SOA is great because it provides that layer of abstraction between the client and the system guts. No one really wants to deal with the gooey stuff in the body that makes everything work. They are more concerned with the clothes they are wearing, if their hair is combed, etc.
In the past couple of years I have had the chance to interact with several clients about adapting business software to mobile. To paraphrase the common request I heard over and over the past year, "we have the backend but we are struggling to figure out how to build mobile clients". What they are really trying to say is we realize the way we have been doing things the past 2 decades is not really working, which is a classic web site model designed for mouse and keyboard inputs. I found this very comforting to know corporate IT is aware of the problem, but is struggling to find a viable solution.
Enterprises need to focus on delivering much better user experiences and completely rethinking how their line of business software is produced. No longer should enterprises focus on large all encompassing applications. But rather should start delivery small, task specific apps that are curated to just the right folks based on their business needs. This change is very similar to the change from waterfall to agile development techniques.
Instead of a large application that encompasses hundreds of tasks, break each of those tasks into small, focused applications. Make the data actionable, not classic buttons and other input metaphors created for yesterday's computers. Make the apps mobile, touch first. Design for easier data input and visualization. These concepts are still foreign in most enterprise development teams, but this has to change.
Look at your corporate business application infrastructure as just that and infrastructure exposed by an API that enables not only your developers, but you business stakeholders create useful client experiences that solve problems quickly and in an agile way. Small, tightly focused applications allow IT to deliver these experiences. Instead of months or years required for application turnover, now client apps can take as little as an hour to specify, create and deploy. That is what businesses need, not the old fashioned bureaucratic experience that plagues businesses and governments alike, strangling profitability and productivity. It also necessarily create low development project success rates, creating tension and disrespect between IT and business.
As the consumer market has taught us small, atomic application experiences work well in today's computing experience. The average worker is becoming more and more accustom to these small, laser focused applications. Their minds are becoming more accustomed to organizing their computing experiences by these tasks. We as software architects need to adjust to meet these expectations. Enterprises, medium, small businesses and governments all need to pivot. Pivot to a strategy that embraces small, targeted solutions to solve tedious problems, quickly with an attitude allowing rapid changes to be made or an app to be completely thrown out after a few weeks or months.
Financially the investments made in these client experiences is small. The business knowledge gained is worth more than the development costs. And of course it facilitates a better relationship between IT and the business. So change the way you think about client application development from the traditional large monolithic application to a small, more module and rapidly extendable architecture.