Last night I read Steve Yegge’s now infamous Google+ post, “Stevey’s Google Platforms Rant.” I think it deserves all the attention it’s getting — it’s an architect’s view of what makes a great system, enlivened with some superb turns of phrase: “Bezos is super smart; don’t get me wrong. He just makes ordinary control freaks look like stoned hippies.”
At a high level, Steve argues that great systems need (1) accessibility (an interface design that works for the user–after all, if the user won’t use the system, what’s the use of all the great programming behind it?) and (2) a service-oriented architecture (the messaging orientation allows the system to morph in a myriad of ways).
However, I think he’s missing the third leg of the stool: the correct data model. At the end of the day, data is the ultimate enterprise resource. Systems must be usable and modifiable, but all that middle (SOA) and front-end work (UI) must apply itself to the right data.
The weakness of bad data model was apparent in the early days of Google Apps. Google Apps took a consumer-oriented data model and plunked it down in front of enterprises–and surprise, surprise, it didn’t sell. For example, the 2007 version of Google Apps had no concept of roles — a group of users, whether it’s a department or a job function. Therefore, enterprises had to add users one by one, instead of en masse. Second, Google Apps had no “delegate switch,” telling the system that this person could stand in for that person — that the CIO’s secretary could read the CIO’s calendar and make appointments. Over time, Google has improved the data model, and the app has improved because of it.
In any case, take a look a Steve’s post — it’s worth a thoughtful read.