How often do you get to rewrite and rethink?
From Baldur Bjarnason
One of the benefits of time is perspective. When you’re writing or coding, letting the work rest for a day or two usually lets you review it with a fresh perspective revealing its flaws as obvious. This goes beyond the usual recuperative effect of rest. Just a night’s sleep won’t do the job. You need to let time remove the proximity of what you were working on.
That lands true to me. Whenever I return to some code I wrote six or more months ago, the ways to improve it immediately jump out. Not just little improvements either, vast improvements. I often wonder what I was smoking the first time I wrote it; my new perspective can instantly identify serious flaws.
Bjarnason goes on:
Employers never let you do this, as a rule, but anybody who has either read my book Out of the Software Crisis or my newsletter essays would know that modern software development teams are organised to prioritise control and productivity theatre over quality or genuine effectiveness.
Companies explicitly prefer feature development theatre and vanity metrics over making any of the software usable or reliable.
It shouldn’t come as a surprise that letting a project rest and switch everybody to another for a while—one of the cheapest methods available for increasing the team’s productivity—never happens. Projects, like the Monty Python parrot, rest when they’re dead.
This assertion was interesting because my personal experience at my day job has not reflected this at all. I have a high amount of autonomy and decision-making over my day-to-day activities. If I decide that the benefits of “re-doing” a part of the codebase justifies the time spent on the task, my decision is supported. Over the seven years I’ve been with CodePen, I have entirely rewritten certain features of the product/sections of the website three times over.
This may be a uniquely cultural thing at CodePen. This company has never really been run with the goal of moving fast, scaling up, selling out and riding off into the sunset clutching bags of money - code quality be damned. It’s been kind of the opposite, really, a slow and steady approach. I’m encouraged to think and re-think through how and why I’ve approached a problem any particular way instead of being pressured to finish quickly and move on to the next thing.
This is nothing like my previous experience working in agency environments. Before CodePen, I mostly worked on campaign sites. You built them as quickly as possible, and they were often only live on the internet for three months to a year. But Bjarnason’s words made me wonder if this was also a rarity in a product developer role…
So I’m asking about your job. As a developer1, do you get the chance to revisit projects and rewrite your code? Or are you constantly pressured to move on to new projects?
Footnotes
-
🤪 ↩
Comments
Alex Riviere
August 30, 2023 at 2:57 PM
I think I tend to be in the minority when I work at companies with regard to this type of thing. Bjarnason's commentary rings very true. The number of times i've ignored management telling me to implement a new feature so that i can rework something to be better OR fought tooth and nail to make rewriting something a priority is very high.
An anecdote I have for this as well comes from when I was working at a 13,000 seat arena. We needed to upgrade the guts of the video system to go from it being an SD system to an HD system. All of the internal components needed to be replaced, all of the cameras, all of the wiring to get signals around the building. it was going to be expensive. At the end of that project, there wouldn't be some shiny new thing that people would be able to really see. it would ultimately look the same. So it kept getting put off, and put off, and put off.... until we brought in a new sports team, and we were contractually obligated to have an HD system. Suddenly we had the funds. we had to do a very fast RFP and install. I was hotwiring patches for certain events because the system wasn't fully finished. BUT, we did get it.
You don't get promoted for invisible fixes. You get promoted for big, new, and shiny.
Ben Read
August 30, 2023 at 8:27 PM
Yes, where I work now I’m the first JavaScript developer in approximately a year. Around 80% of my time is rebovating or rebuilding code. Admittedly it’s not my own code, but I’ve learned that I actually love refactoring code, establishing and following standards so that (I hope) other developers who come into the codebase can know what to expect, and find their way around, without too many mental gymnastics. Very refreshing from a lot of things I’ve done before. Thanks for your article!
Mykal Machon
September 1, 2023 at 6:10 AM
I love refactoring code, but unfortunately I don't get to do it often.
My old team lead used to say that the most permanent solution at our company is a temporary one; usually your first implementation is the only one youre given time for (barring a massive bug in the feature down the line).
Things have gotten better over the last year in that regard (I took over for the aforementioned team lead, fought for scheduled code reviews, sneak in little refactors in my spare time, and helped setup better monitoring to pick out problem code) but I still dont get to think about things long-term as much as I would like. Maybe one day!
Leave a Comment
💯 Thanks for submitting your comment! It will appear here after it has been approved.