Одна из самых сложных вещей в работе - это понимать когда нужно остановиться. Когда решаешь какую-то проблему, то хочется решить её сразу везде. Когда пишешь какую-то новую фичу, то хочется сделать её сразу хорошо. Когда взялся за какой-то рефакторинг, то спустя какое-то время ловишь себя на мысли, что потрогал уже половину проекта. Одно зацепилось за другое, то за третье и так далее. Хочется поправить же.
И всё это в общем-то положительные качества. Хорошо когда ты чем-то недоволен и хочешь улучшить. Это то, что двигает тебя и проекты вперёд, то что развивает тебя как специалиста. Это твоя мотивация.
Но во время становления среднестатистический человек программист в вакууме обладает достаточно бескомпромиссной позицией по многим вопросам. В частности, ему очевидно, что срезать углы и делать что-то плохо - это неправильно, ведь можно сделать хорошо. Сделать что-то частично, когда можно сделать полностью - это не тру. Попробуй переубеди такого.
И ему не так важно даже то, что реализовать правильное решение чаще всего требует несоизмеримо больших вложений. Что это добавит сильного дискомфорта в работу команды. Что его задача не самая важная в принципе. Что мир не рухнет от того, что мы сейчас сделаем что-то несовершенное. Освободившееся время, кстати говоря, можно потратить на нечто более приоритетное.
Чтобы это целиком понять нужно пережить годы опыта и несколько раз пронаблюдать свои косяки на длинной дистанции. Я скорее всего ещё дожил до этого момента, но уже хотя бы задумываюсь не стоит ли мне остановиться прямо сейчас, или где ближайшая остановка. Понимаю что иначе потрачу кучу времени, вылечу из потока на свои лидовские дела и вообще ничего не успею.
Придерживаться первоначального плана, не делать слишком резких движений если ситуация того не вынуждает, коммитить/мёржить почаще. Банальные в общем-то вещи, но каждый раз себе об этом напоминаю.