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