Left on the Web

Flexible systems are not always good

As a developer, you usually try to give as much flexibility as possible to your user. Where the specs don't give exact guidelines, you interpret the specs and offer flexibility, usually. Today came the proof that developers should think a bit better before offering flexibility, especially with mission-critical applications.

Yes, I am talking here about the big problem over at DreamHost today , where just about every customer of theirs got billed incorrectly. The reason? Their billing application, which has been designed to be as fail-safe as possible, had been implemented in such a way that it was possible to re-bill customers as if today were a day in the future manually.

Usually their billing and re-billing happens automatically, but over the past weeks some issues arose with recently-upgraded servers, due to 64-bit incompatibility. After fixing this, one of the DreamHost engineers decided to manually re-bill the past three weeks, except he forgot to change the 2008 to 2007 when he switched to december. Result: Nearly all of the DreamHost customers got invoiced as if today was december 31st 2008, and those that had automatic charging turned on even got charged for this! Several accounts also automatically got suspended because they hadn't paid for too long!

Now, there is no situation possible that I can think of in which you would want to manually re-bill clients from a future date. None at all. But I guess this wasn't spec-ed in too much detail and the developer who made this thought "let's make it flexible". Obviously, it's also the fault of the engineer doing the manual runs, but the original developer is as much at fault here in my humble opinion. Aside from using your head for the code you're writing, also use your head to think about the functionality you're giving to your users.

Luckily, as a post on their weblog shows, it seems they learned their lesson. Now, all of us developers should take up a lesson from this as well. Don't just think about your code, also consider the power you are giving to your users! 


Add comment

Comments

gravatar Thierry Schellenbach: Good point.
I just read the book by 37 signals, guess you would like it :)
© 2004 - 2008 Stefan Koopmanschap + Powered by Symfony, photos powered by Flickr, links powered by Ma.gnolia, Shanghai smilies by Iconbuffet. Feeds: rss / atom. Left on the Web v4.2.2