usedtobe, I feel you, but how exactly do I communicate the “why” of it when, in addition to usually being complex enough that explaining it would take more time than the end result is worth, parts of it often have to do with the specifics of processes I can’t publically reveal?*
See, part of the reason I can’t bring myself to be as much of a jerk about this as I probably ought to, if only for clarity’s sake, is that I can sympathize. As a programmer myself, I would chew my own leg off before taking a job where I was told what to do and how to do it with no good reason why. I really, truly do sympathize.
The key difference, though, is the word job, as opposed to contract.
“Job” implies that I should have a level of trust and understanding sufficient to provide my employer with 100% effort, suggest improvements where I can, and do my job with the utmost efficiency I can muster. This long-term relationship requires that I have the information (and reasoning) that I need to do that.
“Contract”, on the other hand, means that I read what the buyer wants me to do and decide whether I feel like doing it. If he wants me to put on a purple shirt and dance the hula whilst I type Excel formulae, and he’s quite clear up front that that’s the way he wants it done, then I’m free to go about my merry way if I don’t want to do that. If offered the Purple Hula contract, I might very well turn it down…but what I would NOT do is agree to the contract, take it upon myself to decide that “eh, it’s the same formula whatever color shirt I’m wearing”, and proceed to try to bill my customer for something wholly other than what he paid for, whether I think the difference is significant or not.
I would agree wholeheartedly with the “micromanager” label if I sprang this crap on the coder after they accepted a contract. If I posted a project description saying “I want a copy of this document with all the D’s removed”, then after the results were submitted said “no no no, this copies the whole thing all at once, I need it done character-by-character,” then yeah, I’d be a micromanaging asshole. I don’t do that, though. I need something very specific, I ask for it as clearly and up-front as I possibly can, and if someone agrees to deliver it to me, then I expect that that’s what they’ll do.
If you, as a coder, reviewed my “D removal project”, decided that you didn’t deign to be told how to program, and told me you were passing on the project for that reason, I would totally respect that. What I would NOT respect would be for you to read my requirements, agree to them with nary a protest, and get pissed off at ME when I refuse to pay you for failing to produce what you agreed to.
Is that really so unreasonable?
*I suppose I could require an NDA for each project, but see again “more time than it’s worth”, and the information is never actually relevant to the actual project anyway, apart from satisfying someone’s curiosity.