Bad management is more powerful than good programmers

(written by lawrence krubner, however indented passages are often quotes). You can contact lawrence at:

If Facebook is full of such smart people, why is so little care shown for a clean API?

I could pick from hundreds of examples from the last few years, but here’s why Facebook wasted a couple hours of my valuable time today:

The Javascript SDK lets you subscribe to events ‘auth.login’ and ‘auth.logout’. They are documented like so:

auth.login – fired when the user logs in
auth.logout – fired when the user logs out
Pretty simple, right? Of course it isn’t. In fact, auth.logout fires when you log out and when you log in. Depending on how complicated your authentication system is, it may take you a couple hours of debugging to figure this out.

You might consider logging this as a bug in Facebook’s issue tracker. Lo and behold, someone already tried this:

According to Facebook, this broken behavior is By Design. And watch Facebook’s typical issue response flow:

Close as Won’t Fix without comment.
Ignore developer comments asking for clarification.
Developer posts a duplicate bug asking for clarification.
Close as By Design with a cryptic explanation.
Ignore developer comments asking for clarification.
It’s worth looking at the “explanation”: If you look at the actual source instead of the minified source, the param “c” is really called “both”, so that’s totally correct. This is by design. This makes absolutely no sense to anyone outside of the Facebook bubble: Facebook doesn’t publish non-minified source for their javascript SDK. They used to, but this project appears to be all but abandoned. The production source has diverged significantly from the github source, which has been annotated “We have no plans to update this repository until December 2011.” Well it’s xmas, where’s my f*cking gift?

I wish this was an isolated incident, but nearly every experience I’ve had with the Facebook platform is about this satisfying. Bugs are closed or simply ignored. Of the issues which get a response, nearly always the first round is “need a repro case” even though the bug is *clearly* spelled out in the description. Do I need to drive down to Palo Alto and type it in on your keyboard?