Model-Driven Apps vs Form-Based Apps
5 Key Points to Consider
Someone asked me recently about the merits of model-driven apps vs. form-based apps. It riled me up so much I thought I’d share my perspectives on the topic. Here are the five points I strongly believe demonstrate the differences, and it all surrounds the data…
Over the many and diverse years of my career, there was a recurring theme to every project I worked on; the long-term success depended on a thorough upfront understanding of the nature of data and designing the right object models to represent that nature. I cannot emphasize enough the need for being deliberate about an object model, be it entities and relationships, calculations and summarizations, or locations and data movements between systems.
- Data is spread throughout the enterprise. The days of the mammoth homogenous fountain of data that fulfills everyone’s needs – and any attempts to achieve that – are gone. It is inevitable that more new data sources will be introduced as businesses evolve and innovate. It can also be really expensive and painful to replace any well-established system of record. I still remember the reaction when I asked a group of SMEs which system should be the home of Installed Assets. The intensity of SAP vs. Salesforce.com debate would have put to shame any arguments over whether to get Starbucks or Peets for your morning coffee.
- Data quickly becomes mission-critical. What starts out as an innocent Google sheet of contacts shared by a couple of reps can quickly morph into an engine that “runs” vast groups of people or even departments. You find people and processes organizing themselves around these data sources very efficiently. To know how deep these siloed databases are, just try removing access to some users or even hide a couple of columns, you’ll see screaming stakeholders coming out of hiding.
- There are owners, subscribers, and the devil. It is not always black & white when it comes to who has ultimate ownership of the data and who needs access to it. I have encountered multiple situations where ownership is transient and subscription needs are granular, leading to horizontally & vertically divided subsets of data being extracted and transported across the enterprise to satisfy those needs. Knowing data’s journey and changing ownership has significant consequences on how data models are designed.
- Data transcends user engagement. Decades ago, I built a purchase management system. It’s super hot UI ran on a 24×80 green monitor and a blinking cursor trying to get the user’s attention to a field. Then came the mouth-watering experience of Microsoft Windows and the age of VisualBasic and PowerBuilder. Fast forward, today we have super-rich browsers and amazing mobile & wearable interactions with voice commands. All of this makes me realize: It doesn’t matter how sexy or sophisticated user interactions become, well-organized high-quality data remains stubbornly critical to the effectiveness of any engagement. As the old programming wisdom goes, there are only so many ways you can initialize i to zero.
- Well-saved data saves you well. While it might be obvious when data is represented in a well-designed model, it makes transactional, summary, and trend reporting extremely easy, allowing rapid decision making. Sometimes it saves jobs, lives, butts, or a strange combination of those.
The bottom line is before we think of apps with aesthetically appealing UI and intuitive user experiences, we must make sustainable, scalable object models as the foundation.
Get your object/data model right before assembling any other aspect of the app stack. Ask pertinent questions to understand the data; who owns it, who needs access to it, what kind, in what format, how do they use it, to what end and for how long, what happens at rest, what happens when data flows between systems, and so one.
Engagement patterns can change, devices come and go, org structures reorient, business goals are redefined but data lives through it all. When you take time to design the right object model, building, extending, and maintaining applications on top of it becomes a breeze!