In recent weeks, Facebook has been sending emails imploring me to complete a survey about how they might improve their development platform. I'd been deleting the messages, but after the third request or so, I decided to click through. For those lucky enough to have avoided it, the Facebook Platform is a set of tools and services that allows developers to build software that lives atop or connects to Facebook. I've already got a good measure of existential dread built around Facebook as a platform, but the ongoing badgering burst my bile bubble.
The first survey question asked "Why would you or would you not recommend developing on the Facebook Platform?" I breathed deep and unloaded:
The Facebook Platform is a shape-shifting, chimeric shadow of suffering and despair, a cruel joke perpetrated upon honest men and women at the brutish whim of bloodthirsty sociopaths sick with bilious greed and absent mercy or decency. Developing for the Facebook Platform is picking out the wallpaper for one's own death row holding cell, the cleaver for one's own blood sacrifice.
Like the catcall of "whore" or "crook," the Facebook Platform passes judgement before you even signed up for it. The Facebook Platform is the relief promised under the pressure of thumbscrews. If you were innocent, why did you start using the Facebook Platform in the first place?
Developing for the Facebook Platform is punishing oneself for the corporeal scars of abuse. Maybe it's me, maybe it's me, Facebook devs whisper quietly, alone, every Tuesday, before heaving the deep, lumbering sighs of resignation beyond sorrow.
Now, I know I have a reputation for poetic barbarism, but when I posted a screenshot of this response to Twitter and Facebook, the response was fairly overwhelming. Literary license notwithstanding, this turns out to be an accurate depiction of how many of us have felt while working with Facebook's tools.
Facebook got in touch with me and asked for more detail. "Why does the Facebook Platform suck?" a platform team rep asked me. "Why do you dislike it so much?" I thought I'd respond here, to everyone, and not just in private. (I should probably note that a quite amicable back-and-forth has ensued between me and Facebook; deep criticism is weirdly generous, in the sense that it provides sustained and earnest attention that most matters don't enjoy.)
The short truth is this: Facebook doesn't care if developers can use the platform easily or at all. In fact, it doesn't seem to concern itself with any of the factors that might be at play in developers' professional or personal circumstances. The Facebook Platform is a selfish, self-made altar to Facebook, at which developers are expected to kneel and cower, rather than a generous contribution to the success of developers that also happens to benefit Facebook by its aggregate effects.
This is one of those areas in which it's actually possible to learn something from Microsoft circa the 1990s. How did Microsoft develop a massively adopted ecosystem of developer products for its home and enterprise operating systems? By creating a suite of development tools, programs, and documentation that helped developers do their jobs, to accomplish their goals. Documentation that is complete and accurate. Examples with clarity and utility. Slow revs of subsystems and tools that take into account the fact that the rest of us cannot and should not have to think about a development platform as a full-time job, because we're trying to use that platform to produce results that exceed it.
Take this story, one of many posted by or sent to me by friends, colleagues, and strangers who saw my "feedback" to Facebook:
Just last month they documented errors on their ads api (the thing that makes them money) so we no longer have to handle things based on text like "unknown error" but instead we get something like "unknown error 135617" which in their documentation says is "something incorrect in ad targeting" but then you find out it's because they suddenly require a number 6 to be sent in as a string "6".
This is the sort of infuriating defect the platform exhibits constantly. And it does so every week in new ways. Bugs go on for long durations without remedy. The documentation is shamefully outdated, incomplete, and unclear. Facebook deprecates or retires features—or even entire frameworks—on short notice as a result of a collective failure to bother with basic software architecture for external development. Facebook knows it can always just rebuild things; why can't everyone else? Facebook promises something it doesn't deliver. Or worse, it doesn't even promise what it doesn't deliver. Then, like the abuser who blames his victim, the company sends tone-deaf surveys asking "how can we improve," as if its worst offenses weren't obvious. This is the behavior of sociopaths.
Facebook is hardly alone in this offense. On the one hand, every idiotic startup out there now boasts an ill-conceived REST API that mostly serves to give its tech-addled founders the false sense that their pointless product is really a platform. "Here's a thing," young white dude founder blogs before taking an afternoon appointment at the Tesla dealer, "YMMV."
On the other hand, large, older companies have fallen into the same rut of developer indifference as Facebook: Microsoft SharePoint is a common target of total scorn, and earlier this year the big payment gateway company Verifone pulled their entire REST payments API on two week's notice. Apple pushes new iOS releases that force users to upgrade hardware prematurely while breaking software written relatively recently. Still, Microsoft platform code I wrote over ten years ago is still running a part of one of my businesses, while I've had to replace entire subsystems of Facebook platform code multiple times in the past year just to keep basic functionality running.
Facebook is special in this regard, because its outward claims toward "connecting people" are so poetically at odds with its actual business of extracting value and attention from them at all costs. Facebook is like a kindergarten run by child molesters. The idea that the tools it would make to facilitate the creation of connected software are so brazenly, purposefully antisocial might count as irony if anyone still remembered what "irony" actually means.
Facebook's systems are cobbled together in a way that helps Facebook accomplish its goals. Those include rapid changes proffering near-real-time results, thus producing familiar but slightly altered ongoing attention on the part of its users, of which its developers are a subset. But there's another aspect of rapid, reckless change that few discuss: it helps create a sense of confusion and desperation that forces developers to devote more and more attention to the Facebook Platform. What better way to increase collective commitment to Facebook apps than to quietly extort incremental time out of its creators, time that might otherwise be committed to competing products or—gasp—to their own businesses or personal lives?
Perhaps not coincidentally, this is the same ante-game compulsion loop that drives so much online behavior today. Using Facebook as a primary example, The Atlantic's Alexis Madrigal recently compared it to the logic of casino slot machines. In this respect, the Facebook Platform is just a microcosm of the overall Facebook ecosystem: a place where attention is converted into company store scrip, redeemable only for future demands for greater attention.
Some of the folks passing around my submission are getting a laugh out of it. But even as I wrote hyperbolically for effect, I also actually meant what I said. The feeling of using the Facebook Platform is that of total, unmitigated despair. Despair because there's no way to know what it might do next, yet once one has committed to it, one must do its bidding. I suspect that every Facebook developer has a case of Stockholm Syndrome, some more severe than others. Does it seem silly to despair over a software platform? Maybe, but most prisoners are not chained to cots in cells, but to computers in cubicles. Despair is no less real and no less desperate just because it is ordinary.
In a "rant" at the 2011 Game Developers Conference about my now-infamous Facebook game Cow Clicker, I suggested the name "Shit Crayons" for systems whose limitations reach beyond the challenge of material resistance and into the realm of cruelty. The Facebook Platform is a shit crayon. The fact that some rise above the despair of the product to make it work, to make it sing even, this is not because of anything Facebook has done, but a testament to the unceasing, even unhinged resilience of the human spirit. One does not develop with the Facebook Platform, but in spite of it.
Software development has changed a lot in the last twenty years, to be sure. The rapidness of web distribution has made older development practices seem quaint and antiquated. But something that's not antiquated, or shouldn't be, is providing a service that does what it claims, that provides more value than it takes back, and that earnestly cares about the way it gets used, not just about the fact that its use can be sufficiently assured so as to obviate concern for its quality.
It's well documented that Facebook allows its developers unusual permission to push experimental updates live, and that the company has internal propaganda posters with mottos like "What would you do if you weren't afraid?" I wonder, what would be different if the posters read, "What would you do if you cared about the result?" Then again, that's not exactly fair, since it's clear that Facebook's leaders and employees care a great deal about the output of their work insofar as that output pleases and benefits them until their equity vests. So perhaps a different compass bearing: "What would you do if you cared about someone other than yourselves?"
That's what building a set of tools made for others ought to be all about. Self-effacement. Facilitating the goals and successes of others by means of an apparatus or implement, rather than making every touch and strike of that tool return some favor or back-pat to its creator. The problem is, corporations today (and tech companies in particular) are too selfish to care. Software platforms aren't made for making things anymore. They are made for pledging fealty to a technology king.