Serendipity! How We Fixed Dotvoter’s First Major Performance Issue
Flash back to January. Thick snow falls onto the street below our fifth floor office and the skeleton crew of Dotvoter trudges towards their release date for Product Hunt. The day comes; the sprint is over. A few work items linger in the to-do list. One is “Rip out guest accounts.” At the time, we thought it was technical debt and removing the vestigial code would improve performance. The product manager sighed and said, “Alright, we don’t have time. We’ll deal with guest accounts later. Release it!”
Three weeks ago, Chris Butler (@chrizbo), product strategist, brought some data to my attention: there’s a big drop off when people join a board and need to sign in. We hypothesized a few problems, including page load time. Page load time across the app seemed to be increasingly slow and the “sign in to join this board” page took way too many seconds to load. So we prioritized fixing this performance issue for the next sprint.
Some time in the next few days, at around 6:00 PM, a few minutes before I planned to leave for the day, I asked Michael Morrissey, an engineer who had worked on Dotvoter in past sprints but was busy with client work, for feedback on some Dotvoter mockups. Our chat segued into the performance topic. Michael rubbed his chin a bit and walked back to his desk to check Kadira.
Maybe 10 seconds later — eureka! Apparently Dotvoter was serving up the entire list of guest accounts on every page load. Egads! Thankfully these guest accounts don’t store any user information — not a name, email or anything else. And thankfully it’s a Meteor app and doesn’t load pages often. Michael was able to quickly diagnose the issue — a few lines of JavaScript and Will Noll, resident bug herder, fixed it up and deployed the fix over the next few days.
So why the preamble on guest accounts? Well, the vestigial guest accounts exacerbated the performance issue. At the time Michael noticed the issue, the database stored over 1,000,000 guest users. If we had ripped out guest accounts back in January, we probably wouldn’t have noticed the performance issue until months from now. As a very early stage product with big plans for the next few months, that would have resulted in a lot more pain.
So here’s to technical debt. Just kidding! Sometimes broader business goals are more important, though, and in rare instances technical debt might actually save you pain and money. Dotvoter is now faster than ever and we can solve for the next pain point.
Here’s to serendipity!
:cheers: