The backstory: we sell a software product that can be customized by licensed developers. One particular customization is very popular with electronics manufacturers. It is so popular that a decision was made to incorporate this customization into the basic product.
This is where I come in. I was given the responsibility of modifying the code to bring it in line with our normal specs, and to include it in our normal code base.
Meetings were held with a half-dozen people, emails and documents were sent back and forth, and an accepted strategy, design, and timeframe was agreed upon to integrate the customization AS WRITTEN into the core product, making very minor changes where deficiencies existed.
Now for the flipside: at the same time I (and about a dozen other people) am working on the next version of our software using current Microsoft design tools (Visual Studio 6), another team is busy rewriting our product using Microsoft's new .NET technology. While they are rewriting it, they are fixing several bugs, and implementing our current and new features as they see fit.
No one from this new technology team was part of the customization team or of the feature team that signed off on the integration. Being slightly pissed (and rightfully so) about not being informed of new features, they have requested design review meetings.
As I just found out, the new tech team has been taking this opportunity to rip our designs to shreds, pointing out all of our bad user interfaces, questionable database designs, and basically asking a lot of questions that I as a developer just can't answer.
If it was actually "my" design, built from scratch, I wouldn't feel quite so bad. However, IT'S NOT MY GODDAMN PLANET, MONKEYBOY!
I didn't layout the screens, I didn't come up with the database schema, and I didn't write the basic business rules. Customization did, and the fact that they sold a shitload of these indicates that while it may not have been perfect, it was good enough for our customers.
Furthermore, I didn't make the implementaiton decisions by myself. Representatives from other teams, including Support, Marketing, and On-Site Implementation all reviewed and accepted the design. These are the people that have to sell and support this, and everything in the design documents was what they wanted.
The assholes who just reamed me didn't even finish reading the design document, and with one exception, have never even seen the customization in use. All they were thinking of is all of the deficiencies in the design, and why didn't I do it THIS way instead of THAT way, and why didn't I think of this particular situation which will take up 70% of my development time but will only affect less than 1% of the users, if that.
Finally, after all is said and done, and I offer to reconvene a feature team so they can conveny their ideas to the people who have already accepted my designs, they say, "Oh, no, that's not necessary. You go ahead with your design. We'll just fix all of these things that WE think is wrong with it when we put it in the new technology. By the way, did we mention that your team is going to be short a few people, since everyone knows WE are the real future of the company?"
I has to keep reminding myself that it's nothing personal, that it's just the result of miscommunication and mismanagement, and that I can't quit my job since there's nothing better out there for me. I sure as hell don't have to like it.