One thing I have witnessed over the years is that business people need geeks to make/support the things they sell. This is helpful as they pay pretty good. I have also witnessed that many geeks think they are smarter than the business people because they are more logical. I once believed this nonsense. I now know that each person has their role to play in the ugly game of making money. The geek's role is actually pretty well defined, but for some reason most geeks seem to overstep their bounds.
The geek's role is to provide options to the business person(s) and to clearly articulate the advantages and disadvantages of each. The geek's role is not to make that decision or even influence it. A good business person can actually understand the advantages and disadvantages and make a good business decision without your input. They don't even owe you an explanation. They are responsible for making the money that makes it way to your bank account. The geek knows a lot, but is not all knowing (yes even you).
Agile Software Development is the first process framework for software that I have seen that tried to make this distinction clear. I find that when Agile is practiced well the customer is forced to make decisions (something they aren't use to in traditional disfunctional processes) and the developer gets to provide options and make all purely technical decisions (I find there are really very few of these). If you are a geek or in the role of a geek remember to provide options and help the decider understand the advantages and disadvantages of each. There are ALWAYS options. You should provide them even if you don't like them. It's kind of like eating a vegetable you didn't like as a kid. Just smile and do it!
If you employ a geek, be patient they mean well.