Often, when I’m contracting for someone, I find myself asking them lots of things.
Sometimes I do it formally by writing a spec, and saying “this is what you want, right?”. Other times it’s just a conversation.
Then, equally often, I find myself apologising for asking so many “stupid questions”.
Then I tell myself off for being insecure and apologising. We all like to feel wise, and it can be hard to admit ignorance, especially if you’re in some sense selling yourself as a person who is supposed to know what they’re doing.
It’s rare, though, for it to be a bad idea to ask a question.
I particularly like asking questions to which I think I already know the answer. It’s instructive how often it turns out that I don’t.
So much of what we do as programmers is reliant on good communication, yet we’re so often not very good at it. A few well placed questions at the beginning of a task can save a world of pain.
Once in a blue moon, you’ll come across a client who reacts to this the wrong way.
They wonder why you’re so fixated on some details that they think are trivial, or why you’re asking them about stuff that they didn’t ask you to do*.
Or they just interpret it as vagueness or ignorance.
If that happens, you probably don’t want that client. Honestly, it won’t go well.
[ *hint: they were so vague that you thought they might be asking you to do it, or you can see that you’d need to do it, in order to do whatever it is that you think they probably do want you to do ]