At Big Cartel this week we released improved product pagination. It’s one of those features that is difficult to explain to most people, but turns out to be really handy when you find yourself needing it. I finished this feature back in November, but the theme refactor was going to make it easier to deploy, so we pushed the release back. Of course, aging code can be a liability—a lot has changed in the application since I wrote the pagination code. After several rebases against our integration branch, we started QA from scratch, and I had to relearn how my code worked. Tuesday evening, shortly after the deployment, we started getting bug reports and decided to roll back and leave the bug hunt for the morning. After more bugs were found and fixed, we deployed again Wednesday evening. Thursday morning, we encountered yet more bugs in production which I was able to quickly fix (now that I had all the code back in my head). Really, what it comes down to is I didn’t spend enough time on automated testing with this release, and we ended up with avoidable bugs in production, delaying my work on two other features.
The problems with this release got me thinking about our QA and deployment processes. We have a lot of projects going at once, but we only have one staging server, creating a bottleneck when a couple of features finish. We like to stagger releases so we can give each of them their turn in the spotlight, but sometimes this means shuffling releases on and off staging. It’s probably time for us to put together a continuous integration server, but first we need to invest some time in improving test coverage in a few of the older, darker areas of the code. On bigger feature releases, it would also be nice to be able to gradually release a feature to a limited number of stores, much like we did with the refactored theme model. If I had structured this pagination release in that way, we would have been able to limit the impact of the bugs in production without having to roll back entirely. Lesson learned.
It’s been a relatively quiet week at button-down bird. Ben and I are putting together a design brief for our new site. It’s been a surprisingly long time since I’ve designed a site from scratch, and I’m feeling a bit rusty. It feels good to flex my IA muscles a bit on an old-fashioned content-oriented site, though.