Rewriting Failcount.com

Screenshot of Failcount.com

Screenshot of Failcount.com


It seems like more than just a month since I wrote about Failcount. I very quickly realised that it had some serious flaws and suspended new sign-ups. Since then, I’ve rewritten it from scratch – creating an entirely new git repo and copying across hardly anything from the original version.

In some ways, this new version is much much better. Allowing individual user accounts as well as groups is an obvious win, and massively increases the utility of the site – as does allowing for public fail. The site design and layout is hugely improved and I’ve gained a much better understanding of creating a decent CSS layout.

In other ways, though, the new version itself has fail. In order to get it deployed for this weekend I’ve not rewritten the API or RSS feeds, we’ve lost ‘epic’ fails, and the test coverage is appalling. The core functionality is there, but it needs a bit more to be truly special.

The lack of test coverage is particular worrying, and my own fault for being lazy and impatient and jumping in to hack on code without writing tests first, but I found it difficult to write tests first when I wasn’t really sure what functionality I wanted.

I think that’s the biggest lesson I’ve taken away from rewriting Failcount – without a clear specification it’s incredibly difficult to develop software properly. How can you write a test if you’re not sure what features the software has until you write it? The driving factor behind exactly how Failcount would work has largely been ‘what do I think I can do?’, and that’s encouraged me to write code first to see what I can do, and write the tests later. Later, of course, never comes.

I’m going to correct the situation with the tests this afternoon and tomorrow, and add in the API, RSS feeds, and other features based on user suggestions (so please use it and suggest things!). In the next couple of weeks, though, I’m going to start on my next project, and this time I’m going to think about what I want it to do first, and write out specs using Cucumber and hope that doing it that way will ‘keep me honest’.

Having said that, this version of Failcount is a much better application than the previous one, and I do feel that I’m improving my skills as a rails developer each time I do this. I have in my head a queue of applications I’m going to build, starting with projects like this and my next app, and hopefully building on what I learn there to eventually develop an application that is actually worth money.

My ultimate goal is to be able to do this for a living, and I think that over the last month I have moved closer to that goal.

As I produce new applications I’ll write about them here, but right now, please go to Failcount, register an account, make some groups, invite some friends, and don’t be shy about using the feedback widget!

Post a Comment

Your email is never published nor shared. Required fields are marked *