From the lede: “There’s a place motivation goes to die for web developers. It’s when something we have to do is simultaneously very, very hard and very, very uninteresting. You know, the corner of Hard and Boring Streets in downtown Must-Ship-to-Clientsville.”
To which I must add: word.
Our code base isn’t old by software standards, but in Internet years, it’s practically middle-aged. We used to be a monorail, but now we rock SOA, which is great!
A few months back I found myself on a new team and with the luxury (yes) of very few proper projects. I’d occasionally worked on a clean-up task here and there (encouraged by one of my excellent coworkers: Tom Copeland) and I thought, “hey self, why not just work on clean-up? You know that junk drawer file you hate deep down in your bones? Now’s your chance!”
And so I took it!
What does it take to focus on clean-up work for 3 months? What I learned is:
- clean-up work is a non-destructive way to indulge in yak shaving; oh sure, you start all high-minded, ready to whip
this-terrible-stylesheet.cssinto shape and a week later you’ve produced 6 pull requests, deleted a thousand lines of code, and feel pretty awesome. But you still haven’t deleted the file. (Yet.)
- you need to schedule non-clean-up work for yourself. Classes, tutorials, rubber ducking for a coworker, something. Anything. The breaks will keep you from climbing the walls and/or spending a lot of money on new keyboards…
- you absolutely need the support of your team and your team lead/manager/boss. We are a pull request kind of organization and it was not uncommon for me to open 5 in a week. If your team doesn’t respond well to a steady flow of pull requests: you in danger, girl.
I’m a frontend dev and that means clean-up work happens in several arenas. Searching projects in my text editor,
ack-ing in a shell (and in my text editor), running test suites (over and over and over), running our entire site locally and kicking the tires (over and over and over). It’s a lot (see above: tedious).
So why do it?
It is so satisfying. Hell yeah I kept a brag sheet of my deletions (nearly 10,000 LOC!) and it was pretty fun watching the numbers change week-to-week.
It is also so important. Reducing overhead when coworkers need to edit, add, or delete a feature? Reducing my own team’s confusion when we’re bug-hunting or troubleshooting? That is incredibly valuable. All the time you don’t spend wondering what a block of code means or does is time you get to spend solving problems.
While I wouldn’t want to live on the corner of Hard and Boring Streets, it’s a useful place to visit and leave better than you found it.