Some people shouldn’t be allowed to run software projects. I’m all for close alignment with users and I’m all for recognising that program managers and project managers are special and useful people who aren’t either users or developers. However there are some people that just shouldn’t be allowed to be involved in making things. The problem that they don’t realise that to make something requires a human being to think clearly and concisely about every single detail of the thing, no matter how small, or it won’t exist.
Actually, they don’t even realise that there is anything “inside” a machine; whether that machine is a car or a website.
I used to date such a person. And let me point out she was extremely intelligent person. A 3.9 GPA at U.C. Berkeley so really very clever. However, two incidents made me realise that not everyone thinks like me. She had a mountain bike that she hated; always complaining about how heavy it was and how hard it was to ride. One day she lent it to someone else and when they gave it back she said “I don’t know what he did to it but it is SO much easier to pedal!”. I looked at her with my mouth open for a second and said “b.b.b.but.. he just changed gear!”. The blankness on her face convinced me to go easy on her. The she followed up with “..and the brakes are still terrible”. “Yes, the back brake blocks need replacing” I said. Again the blankness. “You do know that one brake handle does the front and one does the back, don’t you?” Now the look went to scornful; I was the dumbest she had ever met. “No, they do both at the same time.” I didn’t bother to explain about the obvious fact that only one cable went to each brake, I just advised her to try it. I don’t know if she even knew how to do that.
Remember, that person was NOT stupid. She just didn’t realise—had never even considered that – brakes didn’t just work the way she thought they did, they worked according to The Way Things Were. And The Way Things Were didn’t happen by accident or serendipity, they happened because someone looked very carefully at the problem and decided what to do.
The problem is that when such a person is setting the requirements for your project you are doomed. They can’t understand why the developers can’t make things as fast as they can brain fart them out. And when all the requirements can change in a day, the code can’t change in the same way. The only hope is to educate them or slay them. In the former, a serious attempt at domain-design might help, if you can get them to engage with it