일반적인 기술은 다소 상식적이며 알아야 할 중요한 기술은 많은 기술 전문 지식이 필요하지 않다는 것입니다.
계획의 출발점은 해결해야 할 정확한 문제를 식별하고 명확하고 명확한 요구 사항을 갖는 것입니다. 당신이 그것을 가지고 있지 않으면, 추정치가 정확하지 않을 것입니다. 코드 작성을 시작하기 전에이 기능 문서에 어떤 종류의 기능 사양이 문서화되어 있으면 코딩이 시작되기 전에 요청해야하는 모든 질문이 수행되었음을 의미합니다. 이것은 놀랍도록 효과적인 타임 세이버입니다. 돌아가서 요구 사항을 명확하게하면 프로그래머가 응답을 기다리면 진행 상황을 차단할 수 있으므로 흐름이 깨집니다.
요구 사항을 식별 한 후에는이를 해결하는 데 관련된 작업 태스크를 식별해야합니다. 이것은 고전적인 분열 및 정복 운동입니다. 추가로 나눌 수있는 모든 작업은 더 세분화해야합니다.
더 큰 팀에서는 추정 포커를 사용하여 관련된 모든 사람의 경험을 기반으로 견적을 얻을 수 있습니다. 소규모 팀에서는 잘 작동하지 않지만 개발자 모두로부터 독립적 인 견적을 얻고 자신의 의견을 포함하는 것이 여전히 유용합니다. 특정 전문 지식이 부족하면 여기에 도움이 될 수 있으므로 작업의 관점에서 볼 때 개발 팀은 문제를 더 잘 파악할 수 있습니다.
팀 규모가 작을수록 각 작업에 대해 최상의 / 예상 / 최악의 사례 추정값을 얻는 데 도움이 될 수있는 다양한 범위의 값을 얻을 수 있지만 많은 오버런 추정값을 얻으면 개발자가 최악의 상황으로 기울일 수 있습니다. 더 정확하게 추정하는 법을 배웁니다.
소규모 상점에서는 개발자가 종종 시스템 관리자, 지원 팀 및 심지어 테스터로 두 배로 증가합니다 (수행 할 수있는 모든 작업에도 불구하고 테스트는 모든 비용을 피해야하는 테스트 임). 개발자가 실제로 새로운 기능을 수행하는 데 얼마나 많은 시간을 소비하는지 파악하고 추정치에 반영하십시오. 작업이 2 일로 추정되었지만 개발자가 60 %의 새로운 개발 작업 만 수행 할 수있는 경우 작업을 마치려면 4 일이 필요합니다. 긴급하지 않은 관리자 또는 지원 작업을 임시로 처리하지 않고 다소 일괄 처리 할 수 있도록 처리해야하는 다른 작업의 파이프 라인을 제어하여이 작업에 도움을 줄 수도 있습니다. 많은 프로그래머 (확실히 저를 포함해서)는 훌륭한 시간 관리자가 아닙니다. 그런 점에서 손을 빌려 줄 수있는 모든 것이 도움이 될 것입니다. 싱글 태스킹은 멀티 태스킹보다 프로그래머에게 항상 더 쉽습니다. 낮에 시간을 차단하는 것도 도움이 될 수 있습니다.
기록 유지 , 당신이 계획 세션을 가질 때마다 추정치와 실제 데이터를 기록 -. 그런 다음이 a)를 계획하는 동안 추정치를 얼마나 부풀 릴지에 대한 지침으로 사용하고 b) 추정 기술을 개선하는 데 도움을 줄 수 있습니다. 각 반복이 끝날 때마다 (또는 그에 상응하는 작업을 수행 할 때마다) 전체 팀은 수행 한 작업을 검토하고 향후 예상에 통합 될 수 있도록 예상보다 오래 걸린 이유를 파악해야합니다. 이것은 뻔한 일이되어야합니다. 당신은 여기에 올바른 태도를 가지고있는 것처럼 보이지만이 답변은 잠시 쯤있을 수 있으므로 관찰하겠습니다. 누군가가 "여기서 실수를했다"고 말하면 "무엇을 더 잘할 수 있 었는가"로 바꿀 수 있지만 사람들에게 너무 느리거나 잘못되었다고 말하는 것은 문제를 악화시킬뿐입니다.
나는 이런 유형의 문제에 대한 은총 알이 없다고 알고 있지만 가장 큰 요소는 의사 소통입니다. 이는 소규모 팀에서는 실제로 쉬우 며 피드백을 사용하여 집단 기술을 향상시킵니다.