One of the most talented, thoughtful, and intelligent developers I’ve ever worked with once told me something I initially found astounding, given his talents: “I’m inherently a lazy person.” When I inquired further, I was able to learn something from him that has driven my architectural decisions for years to come.
His point was that, essentially, he wasn’t interested in designing systems that required very special considerations, and constant maintenance. While the concept is certainly obvious to most if not all developers and architects, the ability to put it into practice is less common. The systems and designs that tend to get built solve a particular problem, based on what is known today. Thought is given to “future-proofing” a particular feature, in some instances, but all too often, architectures are accommodated around a very specific deliverable. With tight timelines, and an ever more complicated and fast moving technical landscape, it’s certainly understandable.
Within the mobile space, my experience has been that this problem has been especially magnified. A large proportion of enterprise apps seem to be built to solve a particular problem, and to get into the marketplace so quickly, that any consideration to good architecture is generally ignored. A common problem that I see in many implementations is a higher level of “coupling” between UIs and backend services. Features get built with very strict UI guidelines that can look very good, but are not built to be easily changed or modified. Backend connectivity, if at all present, is handled very specifically by the app, with the app having very specific, intimate knowledge of backend data structures.
From Good to Great
What is missing in most cases is a proper platform. Proper separation of concerns in the app layer, between UI code and backend services, is only part of the problem. A thinly built application, which derives most if not all of it’s experience, both UI and service level, from a well thought out platform is the real key. At From Good we’ve invested extensively in our Mobile Application Platform, in order to future-proof and solidify our mobile apps. The apps are definitely smart enough to work through different feature scenarios and behaviors, all in a secure fashion, but the real brains of the operation resides in the platform. This allows us to better prepare for future needs, protect the apps from unnecessary complexity, and to offer unique experiences to our entire customer base, all within a single code base.
Architecture is key. Good enterprise mobile apps are built on good code bases. Great enterprise mobile apps are built on great platforms.