Как я вас понимаю, боролся с той же проблемой пока более опытный разработчик не посоветовал:
1) Засекать время за которое пишешь код и использовать эти знания для установки сроков для последующих похожих задач. Для замера не важно это заказ или собственная задумка. Главное работать в привычном темпе и не торопится сделать быстрее потому что идет таймер, задача не сделать быстрее и не показать красивые результаты, а замерить время работы.
2) Анализировать проект до установки точных сроков, хорошо представить объем работы и исходя из предыдущего пункта устанавливать сроки (лучше с запасом, как минимум первое время).
3) Если не успеваете обязательно связаться с заказчиком и уведомить его об этом (в большинстве своем заказчики достаточно понимающие. К тому же лучше подождать еще пару дней чем искать нового исполнителя). Возможно предложить скидку, если ситуация этого требует.
4) (из своего опыта) Ограничить отвлекающие факторы.
я джун уже больше полугода, и за это время зафейлил большую часть сроков по таскам. При этом стараюсь писать план, что буду делать, беру время с запасом, но часто и того не хватает. Могу зависнуть на какой-нибудь фигне. Всё это сильно удручает.