
Во-первых, если у вас задача занимает 3 месяца, то это значит что нужно сесть и разбить ее на подзадачи.
Я считаю, что идеально когда подзадача занимает от пары часов до пары дней, тогда удобно планировать и отслеживать прогресс. Кроме того, когда вникаешь в такие подзадачи, понимаешь, как устроен продукт, как взаимосвязаны разные фичи, что есть "в подводной части айсберга" (т.е. то что не является конкретной фичей, а время тратит - например архитектура приложения, время на мерджи разных веток и т.п.).
Во-вторых мы эстимейтим таски командой, ребята корректируют эстимейты друг друга. Если есть сомнения - зовем техлида, если таск совсем новый и нужен ресерч - создаем отдельный таск "ресерч и оценка таска Х"
В-третьих нужно записывать эстимейты и то сколько таск занял в реальности, чтобы потом использовать эти данные в будущем. У меня например есть программистка которая всегда укладывается в свои эстимейты, и программист эстимейты которого я всегда умножаю на 1,5 %).
Кроме того, нужно уметь оценивать риски и добавлять запас на форсмажоры. Это, собственно, и есть работа прожекта.