Oh, I’m a back-end .NET developer!

Seems awfully specific.

I mean, it’s descriptive. It’s how I describe my job to other developers, or to my parents (well, then I have to explain the “back-end” and “.NET” parts, but you get the idea). But it’s narrow.

My job is helping the business make money. Yours probably is too.

What, by any means necessary?

Clearly not; comparative advantage holds. I’m a pretty good developer and a pretty bad marketer, so even if the company happens to desperately need marketers I’m still better off developing software.

Okay, so you’re a back-end .NET developer.

Well, sure. The “.NET” part is mostly an accident of history, but let’s roll with it. But that’s still awfully specific, unless my company’s so far gone into Conway’s Law that Terry Gilliam is writing a movie about us. (We’re not.)

What do you mean? You develop code, in .NET, for a back-end service.

Yeah, that’s the finger-quotes “fun” part of the job, and I enjoy it. The problem is knowing what code to write.

The tickets you work on have acceptance criteria, though, right?

Some of us even write acceptance tests for ‘em. But who writes the ACs?

…your project manager? Your team lead?

When they have time, yes. Which happens about every week and a never.

So you write the ACs.

Not on the fly, but yeah, I write a lot of ACs. Part of my job is making sure we have enough well-groomed tickets to keep everyone busy, and that means part of my job is understanding our domain well enough to write decent ACs.

That sounds like your PM’s job.

Sure. And my team lead’s job. And everyone else’s job.

The fun thing about writing software is that you never quite know how to do it until you’re stuck in; you’re always learning new things about the problem. How can you possibly distinguish new insights from random bad ideas if you don’t know your domain well enough to rattle off half a dozen (or more) acceptance criteria on a ticket you’ve talked about a few times with the business stakeholders?

Wait… talked about a what? With the who?

Oh yeah, that’s also my job.

Remember that “help the business make money” bit I mentioned? I’ve never met a software company that wasn’t drowning in unfinished features and unfixed bugs, but I can’t just pick a ticket out of the backlog and start working on it without understanding why it’s important that I put my effort into that one rather than this other one.

That sounds like your PM’s… oh, right.

That’s right, Sparky, my PM’s drowning in the very same backlog hell. She knows the business side better than I do – for now at least – but we’re both a lot happier if I can ask two or three specific questions about the bug I’m fixing than if I need a broad-strokes info dump to get any kind of context.

It sounds like you spend a lot of your time in meetings. :(

As little as I can manage, actually. I’d rather talk to the business folk at the coffee machine. Or better yet, stalk them on the company wiki and read anything relevant they write up.

What, like RFPs and stuff?

Yep. Always nice to get two months’ worth of advance warning about an incoming project deadline. (Yes, I’m gloating, and I earned it.) But the really annoying thing about meetings is when the organizers use it as a cheap substitute for getting consensus, and the rest of the crew don’t bother to prepare. So the organizer spends all their time reading off the notes they sent out beforehand, and the rest of the crowd just asks stupid questions… developers know (or ought to know) that’s a stupid pattern when it comes to resource contention, so why do we get so damn ignorant about it when the resource is our time?

God, yeah, meetings are such a pain in the ass. I never have time to read the notes before, and… uh… that’s my job, isn’t it. Or so you’d claim.

What, finding a few free minutes to prep when it fits your own schedule rather than blocking everyone until you catch up? Yeah, but that’s just this guy’s opinion.

I’d rather check Facebook, but okay, fair point. What about something like a daily stand-up, though? Do I have to prepare for every meeting?

What do you have to prepare for a daily stand-up?

Are we playing the Question Game or something?

Let’s pretend that I’m asking a Socratic question, and that you understand what a Socratic question is.

Don’t be an asshole.

You’re way too late.

I won the game, btw. Okay…. I need to be prepared to tell people what I’m working on, and whether or not I’m blocked. Right?

That should take you about, what, twenty seconds?

To be fair, yeah. But it’s a ten minute meeting.

Maybe you could take the remaining nine and a half minutes to find out what other people are working on.

But why should I give a shit about wh… oh. Also my job, right?

I’ve tended to appreciate it when someone comes up to me after a meeting and tells me how to avoid the horrible screaming hell they ran into when they did what I’m thinking of trying. It’s only polite to put yourself in a position to return the favour. And it’s generally helpful to know what other problems the business is working on.

Because we’re in it to make money for the business.

That’s how they can afford to give us more money when we ask for it, yes. And how they know they ought to.

What, you what? When we what?