Programming is a bit of mystery to people. It breeds a lot of distrust in an organization. In general, when you don't understand what it takes to make something, anything seems plausible. You might think a house can be built in couple of weeks if you've never gone through the process. In truth they probably could finish construction in that time, but not as a sustainable business. If you watch a house being built and track the progress, you can physically see the foundation being poured, the framing of the structure and so on. It's easy to understand because you physically see it. Writing code for a computer application or a Web site isn't so apparent.
Code is invisible to everyone but the programmer. It's like the magic that takes place behind the curtain. Any team has to just trust a programmer about what is and what isn't doable. The best course of action, estimates, and progress updates are all subject to the programmer's opinion. There's plenty of Type A personalities that have trouble with this, but it goes deeper.
First issues arise when a client decides what they want and when they need it by. Sales people want to sell. Telling the client they have unreal expectations doesn't close sales. And holy shit, is that a recipe for disaster. I have seen account service cut estimates in half and move money around to accommodate their sale and their commission. At the end of the day it looks like the programmers are screwing up. They do it because it's easy to blame the programmers.
They don't teach office politics in school. They should, but that's a different story all together. A programmer has to be quietly focused doing mental gymnastics to produce clean working code. It's difficult and takes all your energy. There's no time to run around to see whose throwing you under the bus. The games account service plays have consequences.
At a previous agency I worked at, I saw a 7 figure project go down in flames. Who caused the problem? Was it the group of industry leading programmers who worked 70 plus hour weeks to accommodate the client's arbitrary schedule or was it the account service people who agreed to everything the client asked.
I don't want to say programmers never cause issues. If you have ever seen the TV show Seconds From Disaster, catastrophic problems arise from a mix of people not doing their jobs. But, I did see the programmers doing their work. Not sure what everyone else was doing.
So what did the agency think? They laid off (fired) every one of those programmers. All the account service however, still works there. After that demoralizing death march, no one wanted to be there anyway.
The programmer's path to hell is paved with the word yes. In order to police their own world they have to be vigilant about what is feasible. Being analytical, they usually put a lot of effort into an estimate. From what I have seen, it's usually more effort than most put forth because they're adept at thinking through multiple scenarios. Unfortunately, I have seen good estimates ignored or challenged. The more realistic they are, the more it is scrutinized from some reason.
It's tough going back to the client with a set of realistic expectations. It makes closing far more difficult. You run the risk of someone else agreeing to the work (who will fail). But the programmer's job isn't any less difficult. Actually, they are the one group of people who are capable of understanding all of it. They know the code and they know the business problem. They may not be good at managing clients, but they certainly can understand what's going on.
Trust your programmers. They are not only engineers and craftsmen, but businessmen as well. They will know from experience what happens to client relationships when someone makes promises no one can keep.