I started building Facebook apps about three years ago, when I first started doing web development consulting full-time. My first apps were simple affairs, but over time they grew more complex and I leveraged the platform features more and more.

Over the last three years, I’ve spent an increasing amount of time on the Facebook platform. This year I built applications for Neutrogena and IHOP, both moderately complex, and I also spent a decent chunk of time this year working on several social games on Facebook. Working on Facebook has always been an exercise in frustration, because they’re constantly changing and breaking the platform. The documentation was also always a little lacking, but it was setup as a wiki, and developers added to it over time and made it at least somewhat useful.

Then in April 2010, Facebook decided to completely revamp the platform and roll out a series of new APIs, complete with new methods for authentication and new documentation. They deprecated the wiki and apparently hired the worst technical documentation guy they could find to write the docs. They’re incomplete, inaccurate, and contain very little sample code, context, and otherwise useful info. And the new APIs don’t even work half the time; there are bugs in the tracker that have been there for months, interrupting core functionality. The only place to really find any kind of useful info is the forums, which means hours of searching to find even basic info. Often this info is posted by people at Facebook, but they never bother to put it in the official documentation. I’ve worked with APIs from 2-man startups that offered a better experience, so it’s especially sad to have to deal with this from a platform with 500 million people on it.

Now, if you’re building your own apps and you’re making money, I’m sure these annoyances might be worth putting up with. But when you’re building for clients, it’s just a source of stress. Clients don’t care that it was Facebook (not you) who broke the feature that was working yesterday, and they don’t care that what you said you could do two months ago can no longer be done because Facebook decided to change the platform (again). They blame you for all of it.

So I’m done. The money is good and there’s a lot of work, but the stress and frustration just isn’t worth it. Until Facebook decides to implement some controls to stabilize the development of the platform and write some documentation that’s actually semi-useful, I’ll work somewhere else.