Andy Davies

Web Performance Consultant

Have You Ever Launched a Product You've Been Ashamed Of?

In a few weeks time the product I’ve spent the last eighteen months on will launch. I’ve built and launched products before and despite their quirks and issues I’ve been proud of them all, but this time it’s different, this time I have an almost overwhelming feeling of sadness.

I’d describe myself as a pragmatic perfectionist (I like things done right but the closer the deadlines get the more pragmatic I become), but this time I seem to have run out of pragmatism.

Part of me (I’m not sure how much) doesn’t care about this product any more and I find that really sad as I care about what I do but the effort it’s taken to get it this far and the frustrations involved in development have taken their toll. When I told my wife about how I felt she just put her arms around me as she understood the magnitude of what it meant (no chance of me ever complaining that my wife doesn’t understand me!).

Functionally the product appears to work OK, but there’s so much that’s clunky and inconsistent about the way it’s been built, behaves and looks, and in the time we’ve had for development many of them could have been addressed.

The problem as I see it is that the software development side of the product was outsourced and I don’t think the company I work for picked the right partner or have learnt from their previous experiences with this partner.

In general I believe product development is far too important to outsource, as “no-one cares about your product like you do”. I knew the development was being outsourced when I joined, but at the time I just finished a contract job and needed another so was in the position of “beggars can’t be choosers”

The product had already had a few false starts before I arrived but between us we finally got it really moving early last year some of the early prototypes were promising but the immaturity of our partner quickly started to show through.

Their web development techniques seemed to be stuck at around five years ago, all tables and no semantic markup or styles, where there were styles they tended to be in-line rather than an in a stylesheet so you could never be sure that a change in style would be reflected across the product. Their javascript was quite frankly appalling (badly structured and indecipherable) and I’m sure they wouldn’t have accepted the same quality of code in the web-services components of the product.

I’ve spent the last year teaching a development team about everything from web development techniques (semantic markup, how to use css, why they should use a library like jquery (or prototype etc.) instead of writing their own DOM manipulation code), through web infrastructure (how caching can make a huge difference to the performance of our product - we’re serving quite a lot of media rich content, the role load-balancing has in scaling and high availability) though to how we can’t make users decisions for them (if the user wants to delete something, let them just warn them of the consequences before they do).

Even now I’m not sure how much of what I’ve tried to teach them has stuck, sometimes I see glimmers that it has and sometimes I see the old ways are back, all I know is that this product has just been all take with no return and I need something back, so it’s time to find something else to move on to…

(I will try to write more about this product, what’s gone wrong and what I think I’ve learnt in the next couple of weeks, just need a bit more time to reflect first)