This post previously appeared on my blog, 'Absolutely No Machete Juggling'.
Of all the annoying things in this industry, there’s one occurence I see so often that it dwarfs all others, at least in frequency. I see this happen so often that I’ve been unable to post this despite having saved it to my Drafts nearly five years ago, because there’s never been a point in time where posting it wouldn’t make a co-worker think I was talking about them.
What I’m talking about is developers refusing to do things or complaining about doing things because they distract them from what they call “Real Work.” Everyone seems to use this same phrase, as if there was a developer summit at some point where we all agreed to the same terminology.
Here are some examples:
- “Can you come back later? I have Real Work to do.”
- “Ugh, can we finish this meeting? I’ve got some Real Work to do.”
- “I didn’t have time to update that ticket, I was doing Real Work.”
- “Why are we even talking about this, don’t we all have Real Work to do?”
The implication here is that the developer is resisting a particular thing in favor of doing Real Work, implying that the thing they are resisting is inherently not Real Work.
And what is Real Work? Real Work is writing code. I’ve never seen a developer ask to stop coding so he can do some Real Work in a meeting, Real Work only ever refers to sitting at a computer and typing code.
Over my career, I’ve seen the Real Work dichotomy used to avoid, resist, or complain about planning, designing, architecting, retrospecting, conversing, whiteboarding, testing, bug swarming, estimating, and even deploying.
What this phrase is really a euphemism for is “fun stuff”, but nobody would ever say “I don’t want to go to that meeting, I have fun stuff to do,” because it would make them sound like a whiny brat. So instead, people will diminish what they’re being asked to do, insulting the person requesting the non-“Real Work” and implying that what they do isn’t valuable so that the requestor feels embarassed for asking and relents. Thus, instead of looking like the whiny brat they are, engineers paint themselves as sophisticated wizards far superior to non-engineers. As an aside, I wonder how these exact people would feel if their boss saw them on Reddit and asked them if they had any “Real Work” to do.
Here’s the deal, fellow developers. You’re not a professional Coder. Your title isn’t Lead Code Writer. It’s probably something like “Software Engineer” or “Software Developer”. Your job is not to write code. Your job is to write software, and that’s not exactly the same thing. Really, your job is to solve business problems and it just so happens the best tool in your toolbelt is to build software. Sometimes, successfully developing software means you need to plan what work will be done in a long boring planning meeting. Sometimes, developing software means estimating work so that business stakeholders can have a good idea of when stuff will be done. Sometimes it means grabbing a whiteboard and figuring out long-term architectural direction. Sometimes it means having long, drawn-out discussions or even arguments with other developers who feel differently than you. And yes, sometimes, it means writing code.
Writing code is just one part of developing software. The fact that it’s the part you like the most doesn’t mean you don’t have to do all the other stuff - doing that stuff helps ensure the success of the project. If you’re in a planning meeting, the meeting isn’t keeping you from doing your job, the meeting is your job.
When you’re at work, everything you do is real work by definition, at least as long as the company is willing to pay you for it (so playing Angry Birds on the shitter for 20 minutes while your legs fall asleep probably doesn’t count).
I’m not arguing for unnecessary distractions. A planning meeting for poorly defined work, a discussion that leads to no decision, or a bug triage meeting that fails to identify the source of bugs are all waste, but they’re not waste because they’re keeping you away from your keyboard, they’re waste because they’re keeping you from making forward progress on developing software. We should always strive to minimize meetings and reduce distractions, but that shouldn’t be used as an excuse to avoid being a professional.
Every time I hear someone complain about having to do something they don’t want to and how they have “Real Work” to do, all I can hear is a crybaby whining that real-life professional software development doesn’t consist of them sitting in front of a monitor with headphones in for 8 straight hours per day. Get over it, you’re not entitled to fail to communicate with your team or your business simply because it’s not fun for you.
Imagine if you ordered a hamburger at Burger World and the register-worker told you that he wasn’t putting in your order because the part of his job he likes is flipping the patties, and he really doesn’t like entering orders. That’s you every time you talk about “Real Work.”
This is part of the reason software developers have a reputation for being unprofessional. It’s not because we like wearing t-shirts with dumb nerd shit on them or curse a lot, it’s because we have a tendency to act like self-entitled, obstinate twerps.