Тоже столкнулся с такой проблемой, как перфекционизм, бывает реализуешь какую-нибудь функцию за 1-2 дня, а потом её пытаешься довести до совершенства ещё неделю (и каждый день приходит новая идея для улучшения/оптимизации) из-за этого разработка всего приложения продвигалась очень медленно.
Сейчас использую строгую постановку задач, если задача большая, разбиваю на подзадачи. Причем к каждой задачи выставляю приоритет. Если в голову приходит новая идея, планирую её реализацию в следующей версии продукта.
Короче два принципа:
1. Постановка задач с выставлением приоритетов.
2. Версионность приложения.