А надо ли?
Лично я стараюсь бороться не с самим фактом явления, а с негативными последствиями — время, лишние абстракции, слишком общие решения, т.п.
Направлять, но не препятствовать.
Хороший программист тратит 80% времени на обдумывание и 20% на написание кода.
Плохой программист тратит 20% на написание кода и 80% на его обдумывание.
Тут главное не переусердствовать, сам считаю себя перфекционистом, бывали времена когда я полчаса думал как покрасивее назвать класс. Зато есть один болшой плюс в будущем, код становится очень структурированным если пытаешся вылизать не только архитектуру но и сам стиль.
Зависит от Вашей роли в команде имхо. Я тоже отношу себя к Особо-Педантичным-Перфекционистам, но как показывает практика — это с лихвой окупается раздолбайством некоторых членов команды и руководством, не выделяющим времени на «правильную» с точки зрения архитектуры реализацию фич. Помните, мы можем сделать этот гребаный мир чуточку лучше :)
Мой подход: без повода не трогаем ничего, с поводом — всё, что угодно. Поводом могут быть только проблемы вида «ошибка» или «невозможно реализовать новую фичу».
Алгоритм:
1) Обдумываю, составляю план как делать, начинаю делать.
2) Если всё срастается и работает следую исходному плану независимо от гениальности пришедших в процессе идей, в крайнем случае пишу TODO.
3) Если что-то не срастается/не работает — goto 1.
Стараюсь отключать перфекционизм там, где можно быстро сделать по-тупому, и с большой вероятностью изменения не потребуются. Как показывает практика, чаще всего они после этого и не требуются, а если все-таки возникает такая потребность, то от кривого но работающего решения отказываться не жалко, т.к. на этом почти не теряется время.
1) само пройдет, задачи не будут казаться такими сложными (понимайте это как «интересными»), и решаться будут за очень короткое время, бесконечные же улучшения возможны только с бесконечным развитием, а если проект коммерческий то бесконечное развитие как правило не достижимо (деньги кончаются у заказчика)
У меня перфекционизм в известной степени тоже присутствует. На работе, где мои задания ограничиваются временными рамками, я стараюсь делать просто хорошо, а если делаю что-то по собственной инициативе и не связана временем, «вылизываю» подолгу. Иногда это мешает, с другой же стороны, бывает тошно смотреть на продукты деятельности тех, кто не замечает недостатков и не стремится их исправлять.
Как боротся с перфекционизмом?