Tech Talk: Platform Flexibility Over Features

April 19, 2016

Category: Development

“That’s an integration concern.”

It’s a phrase I utter often when new platform features are suggested. Although I try not to utter it on days I need to leave early. Some might question my motives.

When I think about Four51’s transformation to an API-first platform company, I’m often reminded of why we embarked on this journey in the first place. I think I can sum it up in 3 words: too many checkboxes. (You thought I was going to say flexibility over features. I’ll get to it.) Our SaaS app simply couldn’t do enough things to satisfy everyone’s needs. Custom themes on the buyer side weren’t enough. Long lists of configuration options on the admin side became daunting, and still didn’t provide all the custom behavior needed. Simply put,  B2B is complex. Much more complex than B2C, because there is much greater variability in requirements from customer to customer. We needed a better way, but without abandoning our commitment to the single-instance, multi-tenant, cloud-hosted architecture that’s served us (and our customers) so well since before The Cloud was even a thing.

So the decision was made to chop the head off the SaaS product and expose the entire data model and its behavior via a RESTful API. We now offer the “sweet spot” between SaaS and custom development. Now, we didn’t simply kick the old UI to the curb and say, “Here ya go world, go figure it out.” We actually ramped up our development team and invested heavily in UI components, integration components, SDKs in multiple languages, “seed” applications, extensive documentation and tutorials, and a suite of tools under our Dev Center umbrella to enable things like GitHub integration and one-click app deployments. Custom apps in record time, all built atop of a proven, time-tested platform.

But going down this path required a change in mindset, especially as it applies to the core platform. We’re no longer a car; we’re an engine. If you want top-of-the-line headlights, you can have them, but there are others who specialize in them and make them better than we ever could. What we do well is B2B eCommerce and order management. This has been our core competency for over 15 years. We’ve discovered countless nuances and solved them via constant evolution of our data model. Take a seemingly simple example: email. Sure, we can build and send off an email directly from the platform in a few lines of code (and we did that for years). But can we offer a template management system or maintain a whitelist status (there’s more to this stuff than you might imagine) to rival MailChimp? No. MailChimp does email better than we ever could, and they offer their services via their own RESTful API. Four51’s integration engineers work tirelessly to select the best experts in their respective domains and provide out-of-the-box integration components to our customers.

We’ve simply redefined how we prioritize enhancements to our platform.

Which brings us to Platform Flexibility Over Features.

It’s a mantra that guides our platform roadmap and keeps us focused on what we do best. As flexible as our data model is, we still encounter situations where it’s too rigid to solve certain problems elegantly. Removing constraints and broadening the possibilities of how our data model can be utilized receive top priority on our platform agenda.

Enough with mantras and buzzwords and other abstract rantings. What are some real-world examples where we’ve put this idea to work? Extended Properties, A.K.A. “xp”, is a perfect example. Most objects in the data model now include some core set of attributes, along with an extension attribute called xp. For example, a User object contains ID, FirstName, LastName, Email, and about a half dozen other attributes. But it doesn’t include Gender, because presumably that’s not a useful datapoint in the vast majority of B2B scenarios. If it’s relevant in yours, no problem – just add it:

user.xp.Gender = “female”

Of course, the platform has no inherent knowledge of what “Gender” means, so it provides no special behavior around it, but it’s happy to accept this conjured-up attribute, store it, index it, and make it searchable/sortable when you get a list of Users. Need specialized behavior around it? No problem. That’s a simple integra….you get the idea.

Our roadmap is loaded with ideas that fit the Flexibility Over Features mantra. Currently in the works is a robust new system of Webhooks, which will provide a powerful new way to integrate with external systems via HTTP. Essentially, these systems will be able to subscribe to events that occur within the platform (order submitted, product created, etc.) and respond to them in near real time. You can already “pull” data from the platform by calling the API; think of this as a “push” mechanism, where you get what you want from the platform when it occurs, avoiding the need to periodically poll the API.

OrderCloud is constantly evolving. But we’ve learned that we don’t need to be experts at everything. We believe the best B2B solutions on the planet will not be built from scratch nor offered out-of-the box via SaaS. Rather, they’ll be assembled out of distributed, best-in-breed components. We’re the engine. We don’t make tires or steering wheels or leather-upholstered bucket seats. But we can help you assemble all the best parts, and we think the result will be the shiniest, fastest car on the block.