Hey there, Simpler Machines readers. I'm Nat Bennett, I make software, and in theory this is a newsletter about making software, but you'll notice that I write a lot about talking to people. Making software– making anything that matters– involves a lot of talking to people.
There's a game that clients play sometimes. ("Client" here includes managers– anyone who can ask you to do something in exchange for money.) The game goes like this:
Client: Bring me a rock.
You: What kind of rock? Shape? Color?
Client: Oh, any kind of rock will do. Just bring me a rock.
You: Okay. How about this rock?
Client: No. Not that rock. Bring me another rock.
You: What's wrong with this rock? Is it too big? The wrong color?
Client: No it's... agh, what's hard about this? It's not the right rock. Bring me the right rock.
If you don't realize you're playing this game it can last for a long time.
The thing about "bring me a rock" is that a person who's playing it will never, ever accept a rock that you bring them. You can't win by bringing more rocks. You have to identify the game that you're playing, and then gracefully exit.
It can be a little bit hard to distinguish "bring me a rock" and "let's find out about rocks together." The second game can be a lot of fun, and useful to play. Sometimes the client really doesn't know what they need, and giving them options helps them figure it out. So "ill-defined requirements" are a sign that you might be playing the bad version of the game, but it's not a guarantee.
The big giveaway that you're playing "bring me a rock" is that the client won't answer questions about what you should change. You keep bringing rocks, and you have no more information about what makes a "good rock" than when you started.
It's also a tell when the requirements for the rock change. A rock gets rejected for a property than an earlier rock also had, but the client didn't tell you about the problem the first time they encountered it.
Once you've identified that you're playing "bring me a rock," what should you do? It depends a little bit on context.
If you can, you can just stop bringing rocks. This looks something like,
No thank you, I need to focus on [other client work/this pressing customer issue/my writing/moving to Tibet] right now. I wish you luck in your search.
At this point the client will sometimes make a bunch of noises about how badly they need the rock and how much they'll pay for the right one. Do not be fooled. Do not bring them another rock.
Sometimes the person asking for a rock is someone you can't really avoid, who doesn't actually have any power over you, but who for social reasons you don't want to say no to – a senior manager in another business unit, say. In this case you might say, "Oh yes, a different rock, absolutely," and then emit noises about how busy you are every time they check in until they get bored and wander off in search of more rocks.
Sometimes the person who's asking for rocks is someone you can't say "no" to at all. Maybe they're a client of your agency, or your manager has specifically tasked you with providing an acceptable rock.
In this case, your best friend is documentation. Note every time they ask for a rock, and what rock you delivered. Then after a few rounds you go back to your boss/their boss/your sponsor etc. and you say, "So I've brought Fitzgerald these rocks and he keeps rejecting them, and I'm starting to run out of rocks. What rock would you suggest here?"
And, occasionally, all you do is say, "Okay, let's tweak this contract so that I'm paid by the rock," and merrily bring them all the rocks their weird, rock-loving little heart desires.