Make Your Code Better: Delete It

Across my twitter stream recently came the following casual missive:

Facebook almost seem to make a point of making their app worse & worse with each “update”. – curlydena

Just a regular user of Facebook (I assume) making a very relevant observation.  I don’t follow curlydena (but i think i’d like to drink with her); it was retweeted by Damian, an iOS developer I met over beers and pool at WWDC 2009.  I’m sure it resonated deeply with him as it does with me.

It’s a truism in software that the more time and incremental development goes into a project the more fragile and ill-designed it becomes.  There comes a point that it’s worth it to dump the entire code base (or the majority of it, if you have well defined, implemented, and maintained abstractions).  Use the current project as a functional prototype and redesign/implement the product from scratch.

It’s hard to get middle and upper management to understand this.  The further away they are from being computer scientists the worse the problem is.

Apple is the only major software vendor that seems to appreciate this truism.  Time and time again they’ve reimplemented stuff from scratch and we are the beneficiaries of that.

It’s a lesson we can all benefit by remembering.  And perhaps Facebook should find a few good iOS developers (within or without) and reimplement their app from scratch.  (And ritually burn Three20 while they’re at it.)