I don't know what is about IT and software development specifically, but we seem to gather every zellot and paranoid imagionable. I've been railed at for the silliest reasons like not using perfect Camel case, not having all my databases in perfect 3rd normal form, not using XML which is THE PERFECT solution to everthing, the list goes on and on...
I've worked in corporate America and have taken part is MANY large and small projects workign on codebases with 40k files and hundreds of thousands of users and the only thing that I see really holding any team or company up is change and configuration management. Not an imperfect database design, an attribute centric XML schema, or not following the Abstract Factory patter perfectly in your software construction.
In my not-at-all humble opinion, it's rarely the design that causes the biggest problems on a project and NO solution is perfect for every problem. Here are some of the rules I follow:
- Design to solve the problem, not to what you can yourself can accomplish
- Pick what works first, then try to align to any sane standards your company may have
- Turn off the OCD when it comes to design patters, platform choice, and coding standards
- Don't take suggested changes as attacts on your competency even when they are
- Be willing to accept less than perfection from your peers. I know your better than everyone and no-one can live up to your standards so stop making them try...