I used to suffer from this. Here is what I have learnt so far:
- Learn to lean on and trust others. You can't resolve everything on your own. When you find good coworkers, don't hesitate to delegate tasks to them, even if they don't do it 100% as perfectly as you would expect. Which leads to
- Learn to accept "good enough" as opposed to "perfect".
In our industry - as well as in any other industry - there is usually no time, money and resources to do a perfect job. And note that it is usually not required either, unless you are working on life critical systems. So take into account the actual requirements for your task. It is excellent to deliver more than what is expected whenever you can - but not by extending the scope wildly and/or going way over the budget. So it is a fine balance. Do the best you can under the current circumstances. Improve things a little though every time - over time the accumulated small changes will make big differences. We should learn to be patient (it is difficult for me too sometimes).
Of course, with all this, I don't mean that you should subserviently lower your inner standards to the lowest common denominator in your team. But you have to keep reevaluating your own viewpoint and theories about life against reality. And maybe you need to gently educate your teammates about doing a better job. However, if what is good enough for your team and managers is really really unacceptably low quality for you, and even though you can prove that it hurts their long term business as well, noone listens to you, maybe it's time to look for a better job.