I discovered a new emoji this week: the volcano.
To date, the crocodile has been my go-to emoji for expressing rage. For example:
This lady with weird pants almost hit me with her bike this morning on Broadway.
My coworker called a meeting and didn’t even bother to show up.
Someone else took the last swedish fish from the snack jar.
But this week, my emoji needs reached a whole new level. I was trying to get final specs on a new feature, into which I had already poured a number of hours. After a lot of unhelpful answers over slack from the people who were supposed to be planning the feature, I got a final message:
“Hey don’t worry about this feature too much. Once you make it we can have people try it out and then we can always just roll it back.”
Irritating exchanges aside, this is one of the things that has been hard to get used to in software — the idea that everything I do can and will be scrapped, sometimes by me, sometimes the next day, often without a trace of my original labors.
In past jobs for government contractors, nonprofits, and universities, everything I did led somewhere. My edits were incorporated, my proposals submitted. Redoing something from scratch was a rarity– if it was bad enough to need redoing, the boss would probably give it to someone else anyway.
Fast-forward to today: rewriting code galls me. It says to me that I’m just a code monkey who is that much closer to death, that if people respected my time this wouldn’t happen — even though I’m just as often to blame for mistakes. Every minute I spend redoing something feels like further confirmation of my own worthlessness. “I may as well not even be here,” I think to myself bitterly as I start cherry-picking commits.
And yet. My boss offered some encouraging feedback in my annual review last month. After telling me how happy they are to have me as part of the team for 2016, he offered some constructive feedback. He encouraged me to be patient and flexible around redoing things. (He knows how bent out of shape I get about this stuff, having received his fair share of.) He reminded me that reworking is part of the software development process, part of life, and it’s not really a sign of personal shortcoming. In fact, refusing to rework a feature or to improve it would be the shortcoming.
I still hate redoing things — that hasn’t changed — but I’m starting to see this struggle as an opportunity to practice patience with my sometimes frustrating reality. No software, not even my own AHEM flawless code, lasts forever. Heck, in a few years, we’ll scrap this entire code base and rewrite from scratch using the fad JS framework of 2020. Moreover, even a task as mundane as refactoring can offer the opportunity to for reflection and even — dare I say — innovation.