Для максимально точной оценки нужен опыт реальной разработки, причём именно в конкретной области. Но есть и общие правила, которые помогут избежать ошибок в планировании и проблем при сдаче работы заказчику. Я бы описал эти правила так.
Во-первых, нужно понять задачу. Это вроде бы очевидно и не относится напрямую к оценке сроков, но на самом деле это ключевой момент. Даже в серьёзных крупных проектах одним из основных факторов неудачи и затягивания сроков является проблема в определении требований. У начинающих разработчиков, к сожалению, это серьёзная проблема — не читают ТЗ или читают и понимают очень избирательно (из десяти пунктов запомнили и выполнили пять, а про оставшиеся вспомнили уже при сдаче результата). Понятно, что неправильно понятую задачу невозможно правильно реализовать в срок.