I've been thinking about software architecture lately, mostly as a result of continuing to suffer at the hands of Facebook's horrific platform and API.
For those who haven't tried to use it, Facebook's platform is notoriously atrocious. It's badly documented and doesn't always do what the documentation says. It breaks regularly. It rolls out changes without notice. The entire architecture of the platform changes regularly in dramatic ways. Support for older implementations is often promised but then rarely delivered. Arbitrary changes are justified by claims of "deprecation," a word that means something specific in software development, namely that one operation has been superseded by another (for Facebook it means "abandoned").
It's possible to gripe about Facebook's wonky infrastructure and their lack of commitment to a coherent, stable, operational platform. But a more interesting question presents itself: why is Facebook so uninterested in software architecture? It seems startling for a company supposedly worth $50 billion.
Some of you may remember the glory days of Microsoft Windows software development. Major and minor rollouts of Windows, MFC, and even VisualBasic infrastructures were always a very big deal, even after the Internet made patches and updates relatively easy. There are a lot of nasty things one can say about Microsoft, but their development tools always worked the way they advertised.
In principle, the values of software architecture haven't changed. Mission-critical applications still demand low-risk, high tolerance infrastructures designed to work all the time or nearly so. Perhaps what has changed is the applications. Nothing's mission-critical on Facebook. Developers may lose money, sure, if Facebook's infrastructure behaves erratically. But it was pretend money anyway. Nobody will die. Nothing really depends on Facebook. It's all optional, all expendable. The same is true for Twitter, which may partly explain why that company doesn't much mind that its service goes down frequently.
I suspect that this attitude is more and more pervasive, as more and more services that provide developer infrastructures and APIs don't have strongly meaningful reasons to exist, save to provide expendable distraction.
