Over at reddit, I recently announced that we’d try to make use of a new subreddit to show off to our users some of the smaller, little enhancements that we work on day-to-day. The place is r/changelog, and so far, we’ve only posted a handful of things there.
Now, my first bit of real work for the site was rather small – just a handful of lines – and there were certain commenters who seemed to be under the impression that I spent a week and a half doing it. In truth, I probably spent a full day working on the fix, and at first glance, that seems like a lot of time!
I’ve only been doing software development “in the field” (non-school) for about 3 years, but in that time I’ve come to realize something: Simple fixes are never simple. Ok, “never” might be exaggeration. Still, here’s why the above “simple” fix took so long:
- The code was new. Prior to starting at reddit, I’d never really touched their code. (“But they’re open source!” – yes, I know, but I had other priorities). So a large percentage of the time I spent “fixing” the bug was actually spent simply learning the code structure.
- The code is complex. Not in a bad way; a site like reddit just requires some complexity to be at the scale that it’s at. There are caching layers, backing stores, pre-rendered pages, and so forth. I don’t have a deep background in website development, but I would venture a guess that most sites don’t have the same level of complexity. Those layers mean that it’s not possible to jump into the code, tweak a line, and push it. Over the course of fixing the bug, I “solved” the problem at least 3 times only to find out that the code I changed didn’t actually have the expected effect.
- After finally fixing the bug, I stepped back, examined what I’d done and what I’d learned, and realized that I’d made a poor fix. I then spent the same amount of time over again fixing it the right way.
- Testing. Small changes can have big side effects; I had just set-up a local reddit clone for the first time; there was a lot of time spent making sure that while fixing the bug I didn’t introduce another – particularly given the unintended side effects I observed above.
- On top of all of the above, there was the “process” of it all; the initial reddit clone set-up, the subsequent set-ups when I broke things, the process of using the push tool to deploy code to a live website (something I’d never done before -it was scary and also exhilarating to see an instant effect on the site!)
I don’t write this to make excuses; I probably could have done things more quickly. I know I was a little slower than I could have been, if only because my brain has been wired to have a certain level of caution after two years of working on an operating system installer. Website development is, obviously, a completely different process, with its own advantages and pitfalls (which I’m sure I’ll have more to say on later!). I’m sure that in a few short weeks I’ll be back to a speed that let’s me feel more useful.