Since I first started doing dev work in a team environment, the concept-to-implementation process shaped the balance of power, and stacked the deck against the developer. The value of good programming talent is marginalized far too often, with developers thought of as mere "resources" to be gathered and stacked like cord wood, only to be burned out by long hours and painful compromises…
On one site I helped design and develop, I could only watch in horror as an art director came in from the outside and froze the developers out of the design process entirely. It was a formula for bad design: the "final" design deliverable not only contained critical technical and interaction flaws, it actually reintroduced some of the very same user experience problems we had worked hard to eliminate.
I learned many lessons from that environment. The most valuable was that no one stakeholder should ever have a veto — not a creative, not a coder, not an IA, not QA, not marketing, not an executive. Nobody. No project can be successful without communication and respect on all sides.
I also learned that no team member is one-dimensional: each individual has strengths and weaknesses, and very rarely are they so well-defined as to fit in boxes marked "developer," "designer," or "manager." Being able to match people strength for strength and compensate for shortcomings across the team is a major strategic advantage.
— Tearing down the factory (emphasis mine)