It's rare these days that a Web 2.0 startup lands a round of financing, and the funding is completely overshadowed with bad news. Twitter isn't just shooting itself in the foot - it's mowing itself down with a chain gun.
Problem #1 is uptime, or lack thereof. Anyone who's been on Twitter over the last month or so has experienced a *severe* up-again, down-again roller coaster ride at Twitter. Every day, it seems like there's an outage, and some of them have lasted for hours. I've seen by far more blog traffic about "Twitter's down again" than I've seen talking up the service itself, and that's not good. Let's not forget that Twitter is still solidly in "early adopter" territory, and they're not going to attract too many mainstream users if the site's down.
Twitter has taken some heat for lack of transparency during this episode, and even that has been entertaining. They're blogging about what's going on (to some degree), but as a commenter pointed out, they're Twitter for Pete's sake -- Twitter about it!! It's slightly disturbing that this didn't come as second nature to these guys, since this is what they do. I've also noticed that the manner in which they "splat" is singularly ungraceful. When Twitter crashes, I see (on my mobile browser) the PHP equivalent to a blue-screen, not a buttoned-down page explaining that there's a problem and someone's working on it. Here's another take on their error reporting.
Now, I understand that one of the purposes of this round of funding they just landed is to shore up their infrastructure and get some of this stuff ironed out, but I wonder if it'll happen in time. Fixes for problems like these, in my experience, are a long time in coming, and an infusion of cash today is still months away from paying dividends once you use the money to hire help, buy servers, configure the servers, install the servers, fix the software, test the software -- you get the picture.
But as bad as this all sounds, uptime may not be Twitter's biggest problem.
From everything I've seen so far, Ariel's account of events is undisputed and accurate. Twitter's response is pathetic. After sandbagging for months, they're now hiding behind the "we're an infrastructure company, not a content regulator" argument. Totally lame, and totally inadequate.
I'm not aware of anyone who's learned about this and hasn't been outraged, and I'm not aware of anyone who's defending Twitter's response to-date. Sometimes, stories like this have a grey area where you could argue either side of the story, but that's not true in this case. Twitter is simply alienating users as fast as this news travels, and it's traveling fast.
The only good part about this story (for Twitter) is that it's taking attention away from their downtime. As far as silver linings go, that's pretty lousy.
Aside from just condemning Twitter, though, why would we, as software professionals, care about Twitter's agony? That's easy - we want to learn from their mistakes.
The Ariel Waldman mistake is big and obvious, and the lesson is pretty simple, too: Don't be a jackass. If there's a problem, acknowledge the problem and meet it head-on. Don't lube up and try to slither past the problem, because it's going to keep haunting you until you kill it dead. The stall tactics, the wordsmithing, the "we're just a humble little infrastructure company" line are all just ways to bide time in the hopes that the story will just go away on its own. How's that working out, Twitter?
The second lesson seems just as simple, but I don't believe it really is. "Don't build a crummy infrastructure," you say. Sure, but how? The data model Twitter provides isn't as easy to model as you might initially believe. Here's an excellent discussion of what their architecture might look like. So it's very possible that they're facing some architectural challenges far beyond those most of us see in our careers.
Add to that the startup culture of "features first, then users, then scaling and monitization," and you can end up with a code base that works really well at low volumes, but just breaks apart when you start putting a real load on it. A friend of mine used to tell me all the time that "the thing that makes you successful today will kill you tomorrow." In this case, that means that our architectures have to be able to absorb change on a wholesale scale.
I really hope Twitter figures this out and pulls through. They've got a lot going for them, and they're close to making the leap to the next level, but they need to get with the program in a big way, like *right now* if they're going to pull out of this nosedive.