I was listening to last week's Windows Weekly, Back From Build, and they hosts were talking about what Microsoft needs to do to encourage more adoption of its client platforms. The discussion has been going on for years it seems. I believe Mary Jo Foley answered the problem correctly, well sort of correctly, when she said they need to get enterprise apps on the client platforms.
The reason I say she sort of got it correct is her answer implied native applications. Instead Microsoft needs to embrace the web as the enterprise platform. No doubt Apple and Android have dominated the general consumer platforms with time wasting games and lots of useless native applications (most of which should be web applications). Microsoft's strength is the enterprise and has been for several decades and to be honest that is where the big money resides. Today they are becoming one of 2 dominate players in the cloud, which is where the enterprise is migrating. They also have an advanced browser platform that is more secure and more enterprise friendly than Apple or Google's. In short Microsoft has the client platform and back-end technology to drive the modern, mobile first enterprise.
What is missing is outside the Microsoft scope, developers that understand how to build good, modern, mobile first, responsive web applications. I know I just offended many of you, but it is true. Enterprise developers have never been front end developers and there is nothing wrong with that, per se. However the broad adoption of mobile class devices by everyone is driving customers, even internally to expect more from the user experience.
My professional life takes me in and out of multiple enterprises each year. My speaking schedule enables me to talk to even more developers. I also have over 20 years of web development under my belt and hundreds of production applications deployed. So I have a reasonable sample size and experience to draw my conclusions.
So what are the guidelines for a modern web application, even in the enterprise? Really no different than consumer facing applications:
- Touch Friendly - Mobile First, with Responsive Design Applied - Fast and Responsive
But customers also expect a degree of artistic value, my clients offer call it eye appealing. While we call it art, there is science to it. We know how the brain perceives different shapes, colors, lines and spacing. We know how the brain works as it relates to performance and need to remove cognitive load and other satisfaction impedance factors. User want applications that just work and make sense without needing to take a class to be successful.
Decoupled From the Back-End
The modern client experience should be lacking concern over all the back-end processes. Instead the enterprise should only be concerned with the API and only that interface. Historically enterprise grade applications are too tightly coupled to the server and at least a layer or two into the back-end. Decoupling frees the client from the back-end development process, allowing it to evolve independently of the back-end.
Sure we have been preaching this concept for what seems like my entire professional life, but I still see tight coupling everywhere. It is not contained to just the code, but also the programmers. Enterprises need specialist or developers and architects that truly understand a critical application aspect. This allows the application to have the best at every level, not just a half assed attempt to solve a problem. Sadly the typical enterprise application has a UI that was just thrown together at the last minute by the service architect or a command line jockey and it is just bad.
Line of Business applications may not be consumer facing, but they are customer facing. Those customers are your co-workers, they only care about the UI. Sure they want the business logic to work and they expect that, but when they have a slow, unfriendly user experience they are frustrated and think IT sucks. I learned this lesson a long time ago when I started Extreme Web Works.
I realized within the first few months my clients wanted great user experiences and they never once seem to care about how the back-end was architected or developed. 90+% of my effort always revolved around front-end concerns and to be honest still does. Most of the beck-end plumbing can be generated, but the front-end has a high degree of art, something that no unit test can verify, only the human brain and a smile says it is done right.
The Web Empowers the Enterprise
Consumers and employees have decided what devices they want to use and more and more it is not the desktop tower or corporate laptop. They are also deciding where they want to work, which is from home, avoiding 2 hours a day in traffic. They like working on a device they enjoy and feel comfortable and productive. The IT department is loosing the grip to make these decisions.
“Any attempt to draw a line around a particular device class has as much permanence as a literal line in the sand. Pause for a moment and the line blurs. Look away and it will be gone. Let’s take the absolute best case scenario. You’re building a web app for internal users for whom you get to specify what computer is purchased and used. You can specify the browser, the monitor size, keyboard, etc.
How long do you think that hardware will be able to be found? Three years from now when a computer dies and has to be replaced, what are the chances that the new monitor will be a touchscreen?
By making a decision to design solely for a “desktop UI”, you are creating technical debt and limiting the longevity of the app you’re building. You’re designing to a collective hallucination. You don’t have to have a crystal ball to see where things are headed. And once you start accepting the reality that the lines inside form factors are as blurry as the lines between them, then responsiveness becomes a necessity.”Jason Grigsby
This is creating more opportunity for the enterprise developer to specialize in user experience because the problem set is new and complex. Its exciting to be a developer, both front of the house and back. For the back-end developer there are new problems to solve in scalability, security and distribution. So there are plenty of exciting problems for all of use to solve and Microsoft is making the back-end developer and architect easy and fun.
The web embraces every platform and device, its core advantage. Browsers have advanced so much over the past few years, they are fast and offer a rich set of native APIs. Unfortunately I find the majority of developers either are unaware of modern browser capabilities or are restrained by an outdated IT policy.
I am happy to say as of next January Internet Explorer 10 and below will no longer be supported by Microsoft. This means enterprises need to build new web applications for modern standards while assigning their legacy, Internet Explorer 8 standard applications to Enterprise Mode. Those legacy user experiences will need to be updated in the near future, so give me a call when you do.
Microsoft is doing many things right at the moment. They are embracing all client platforms, while striving to be the back-end platform that drives them all. Azure is a powerful piece to the enterprise puzzle and the key to Microsoft's future profitability. However they need to put Microsoft Edge front and center as their featured client platform. Internet Explorer 10 jumped way ahead of the other browsers as a client application platform by making touch first class. This is where Microsoft can differentiate itself from Apple and Google, by pushing a first class end user experience in the browser. To do it they need to drive a new class of modern web application developers.
As I have stated before a performance first strategy is one with a competitive advantage. But performance is only one part of the modern web architecture, touch and a mobile first approach complete the triangle. Web Developers need to embrace the customer and build solutions to please them, independent of the back-end.
Microsoft can go a long way to make this happen. Doing so can usher in a new era of client application development, knocking the legs out from under its two big consumer platform competitors. Native applications have been trendy, but the web is still holding its own, but it needs to be updated and developers need to embrace new development techniques and concepts. I think I will call it the Cloud to Browser Architecture.