We began building Facebook applications a few weeks prior to the launch of the new platform. One of our clients was a launch partner. Part of the experience has been learning to react to the strengths and weaknesses of Facebook’s development process. I’ve commented to friends and posted my thoughts in the developer forums but today I found
Facebook’s platform has been much more fluid (to put it nicely) than most public API’s (Application Programming Interface). It has changed frequently, at times in seemingly arbitrary ways. One time the name of a parameter was changed to a synonym. I appreciate accuracy when naming, but once your API is released you probably shouldn’t change names merely because of preference. I don’t want to list all of the issues that I’ve encountered. I simply want to whole-heartedly affirm Shannon Whitley’s experience.
However, as sympathetic as I am to Shannon’s concerns, I’m not sure that these problems are merely a flaw with Facebook and their processes. I’m suspicious they may be the sign of a broader rift in the world of software development. This rift exists between those systems that can and therefore will tolerate downtime and bugs and those that can’t and won’t. However, the software process wars that are raging don’t seem to acknowledge this rift and as a result all focus on meeting the requirements of the most stringent systems. Agile software processes seem to accommodate projects with less stringent requirements, but they too still attempt to address the requirements of non failure tolerant systems. I don’t want to advocate Facebook’s apparently nonchalant approach to its release cycle, but I think the context in which Facebook is developing may be doing as much to drive its process as anything else.
Here are some observations that seem to give Facebook more freedom to continue developing as they are:
From a third-party developer perspective all of this is really no fun. You find yourself monitoring blogs and forums watching for changes. And, your clean development process gets all screwed up. But maybe it is just the reality of the fast moving, competitive throw-away web that we’re building on top of. Thankfully Facebook isn’t responsible for developing database management systems or operating systems. But, I have a feeling, if they were they would probably go about it in a completely different way.