Same Ticket, Different Day
I really don’t want to go to work today.
I will be going to work though, as usual. I will sit in front of my machine with a slightly-too-small monitor. I will join the morning standup. I will say something along the lines of “I’m progressing with the TS917 changes, aligning code changes with our dependency update”. I’ll probably mention that I’m waiting for a meeting about some incoming API changes because we’re moving out of (or was it into?) a monolith.
None of that is true. Or rather, it’s not false in a legal sense. But it’s nowhere near reality either.
Because I’ve been “progressing” with TS917 for weeks. I did the work in a day or so, rewrote it, remembered I’d left out half of the requirements and then our code standards changed. I discovered a couple of bugs no one cared about because it didn’t crash. What I’m not doing is moving forward and making steady progress every day. I wonder if staring blankly at VSCode tabs counts as work these days?
It doesn’t really matter. I’ll say what passes as acceptable for my day’s work and we’ll all move on with our lives. I know, I know. That’s the meta-game though, isn’t it? Agile Theater.
Now Playing, Forever Underachieving
The standup isn’t a meeting for alignment or support. It’s a performance. Everyone takes turns reading their lines as written for an audience of managers who neither understand nor care. I keep my script tight, my contribution to this performance art lean. Mention a ticket number, refer to another team member’s blocker, suggest forward momentum even if there is none.
It doesn’t matter if your task is impossible. It doesn’t matter if the requirements changed yesterday and it doesn’t matter if the task is reasonable or too easy.
What matters is you said something acceptable. It sounds like progress, so everyone is happy.
The New Taboo
You’d think standup would be the time to raise problems. That’s what the books say. But in reality, saying “I’m blocked” too many times makes it look like you’re struggling and failing to keep up. Soon people will stop replying to your Slack messages. You’ll get nudged to “be more autonomous”.
I can now see that everyone is following the same rubric. Stop mentioning blockers. Stop talking about what is really going on, get some work done that actually improves the project won’t actually impress your feature team.
If you really need something else done by someone you might say “waiting on Emma”. Emma, who’s conveniently in another time zone and not on this call. Emma, who doesn’t even know she’s blocking you. She is Schrödinger’s blocker, both active and invisible.
The Illusion of Progress
The worst part is that if you do finish your work early, you get punished. Not in a direct way, sure no one is going to yell at you. Yet if you deliver ahead of schedule, you’re given more work. The rest of your sprint plan? Erased. “Oh great, can you also take on these bugs?” No recognition, no bonus, just more Jira.
If you work late on a Friday to finish a task, Monday will hit you with a cancelled feature anyway.
Conclusion
You can’t win, but you knew that anyways. In the end everyone learns not to care. They do the absolute minimum, and stop trying to fix what no one cares about. Refactoring becomes a thing of the past and code quality slowly and surely slides down the toilet. You don’t refactor code anymore. You slap in a fix and move on.
At some point, you forget what you used to love about this work. You forget what it felt like to solve a hard problem, to ship something that mattered, to be proud of your work.
Now, you’re just… clocking in. Delivering lines. Saying the right nothings to the right people.
TS917 continues. Maybe forever.
The Secret Developer once fixed a bug, but was told the broken version needed to persist “until we run the functionality by the business”.
About The Author
Professional Software Developer “The Secret Developer” can be found on Twitter @TheSDeveloper.
The Secret Developer is very tired today.