2008-09-20 4 views
12

방금 ​​보스가 현장에 출연했습니다. 몇 가지 새로운 기능을 추가하기 위해 봉투 예상 시간을 계산하는 데 15 분이 걸립니다. 귀하의 상사 (다행스럽게도)는 그 시간에 정확한 견적을 제공 할 수 없으므로 정확한 양의 순서를 기대합니다.코딩 작업에 대해 매우 신속하고 (더러운) 추정은 어떻게합니까?

질문은 정확한 시간대에 예상치를 표시하는 방법에 대한 것입니다. 이것이 의미하는 것을


참고는 신속하고 더러운 추정, 나는 개인적으로 이런 일을 유형을 거부 this

+1

프로그래밍에 관한 것이 아니기 때문에이 질문을 주제로 끝내기로했습니다. –

답변

0

같은 질문에서 예상 할 수없는 뭔가가 될 수 있습니다. 그러나 나 자신을 위해 일하므로 상사에게 대답하지 않습니다. 그냥 고객이지만, 그 자리에서 할 수있는 것을 이해하기가 더 쉽습니다.

0

때때로 나는 McKenzie Brother가 메트릭으로 변환하는 규칙을 기억합니다. "두배로하고 30을 더하십시오."

일반적으로 내가 원래 사용하는 단위에 따라, 내가 항상 과소 평가를하고 테스트를 위해 30을 추가하기 때문에 원래 두 배의 작업을 수행 할 것이라고 생각합니다.

5

과거에했던 것과 비슷한 일을하고 그들이 얼마나 오래 당신을 데려 갔는지 생각해보십시오.

이전과 전혀 다른 작업을 수행하지 않은 경우 하위 작업으로 작업을 중단 한 다음 각 하위 작업을 추가로 수행하여 프로토 타입을 작성하는 데 1 ~ 2 일이 소요되는 것처럼 보이는 하위 작업이 없어지지 않도록하십시오. 가장 순진 할 수있는 방법; 3 일 이상의 예상 시간을 가진 작업을 나눌 수 없다면, 이는 일반적으로 그 작업을 수행하는 데 실제로 무엇이 관련되어 있는지를 알지 못한다는 것을 의미합니다. 빠른 연구를 해보십시오. 모든 것이 충분히 나뉘어지면, 그것을 합산하고, 결과를 두 배로하고 그것을 당신의 견적으로주십시오.

위의 작업을 수행 할 수있는 충분한 방법을 모르고 사장님이 목을 숨 쉬고 있으므로 조사를 할 생각이 들지 않고 대신 사장님에게 견적을 주려고합니다. 그에게 적절한 견적을주기에 충분할 정도로 문제를 이해하는 데 필요한 연구를 수행하는 데 얼마나 걸릴지

7

가장 좋은 방법은 모든 주요 하위 구성 요소를 신속하게 분석하는 것입니다.

  1. 업데이트 데이터 모델 스크립트 (2 표 3 개 항목)
  2. 변경 입력 화면 (3 개 새로운 입력)
  3. 확인 입력 (3 개 새로운 입력)
  4. 데이터 업데이트. 당신이 최소한 2 시간을 내려 놓고 하나 생각할 수없는 경우
  5. 결과 표시 등 ...
  6. 빌드 단위 테스트

는, 이들 각각에 거친 추측을 할당하고도 간단한 때문에 항목은 아마도 적어도 한 시간은 걸릴 것이지만 2x는 불확실성을 허용 할 것입니다.

최소한 당신은해야 할 모든 항목을 생각해봤을 것입니다. 그래서 요청한대로 올바른 순서로 나타납니다.

+1

물론입니다. 이것이 바로 Joel 방식입니다.이 접근 방식에 대한 블로그 게시물을 보았습니다. –

+2

이것은 상사가 당신의 견적에 도전 할 때 상사의 얼굴에 물결을 일으킬 수있는 이점이 있습니다. 그러면 상대적인 숫자에 대해 생산적인 토론을 할 수 있습니다. –

17

입안에 손가락을 대고, 물결을 빨고, 과거의 경험을 토대로 숫자를 구성하십시오. 그런 다음 두 번 누릅니다.

정말 그 경험이 중요합니다. 당신은 그 일이 당신이하는 일을 상상할 수 있습니다. 당신이 그 일을 얼마나 오래 수행 할 지 알 것입니다. 예상치 못한 항목을 두 배로하십시오. 이것은 또한 중학교 프로그래머에게 그러한 견적을 요구하지 않는 이유이기도합니다.

3

내가 예상 할 수없는 상황을 상상할 수는 없습니다. 다양한 상황에 따라 프로젝트의 시간 틀이 크게 다를 수있는 여러 시나리오를 상상할 수있는 경우가 더 자주 있습니다 합리적으로 자랄 수 있습니다. 그리고 나는 거짓말하고 싶지 않습니다. 당신이 사장님과 할 수있는 가장 최악은 물건을 만드는 것입니다.

그래서 나는 각각의 가능성을 설명합니다. 물론 이것은 이해력있는 상사와 만 작동하지만 사장이 무지하거나 어리 석으므로 완전한 설명을 듣기를 거절하면 다른 문제가 발생합니다.

예를 들어, 실제로 이것을 정확하게 수행해야만했던 최근 사례에 대해 다음과 같이했습니다.

x264는 구현하기가 매우 쉬운 이유로 인터레이스 코딩의 매우 원시적 인 형식을 구현합니다. 우리는이 코딩의 모든 형태를 구현하려고했지만, 단순화 된 버전에 대해 얼마나 많은 가정이 실패했는지는 알 수 없습니다.

변경해야 할 수도있는 다양한 단계를 생각하고 추정치를 범위로 만들었습니다. 음, 기본적으로 이미 거의 작동 할 수도 있지만 의심 스럽습니다. 그리고 최악의 상황에서 바꿀 필요가있는 것들이 많이 있습니다. 그래서 사장님에게 말씀 드렸습니다. 사양이 매우 복잡하고 그 복잡한 점을 모르고 있었음에도 불구하고 프로그램에서 관련 코드가 거의 없다는 점을 감안할 때, 그 복잡성은 실제로 구현되었습니다. 결국 옳았습니다. 필요한 변경 작업은 매우 복잡해졌으며 H.264의 인터레이스 코딩의 복잡성에 대한 전문성이있는 계약자에게 프로젝트를 아웃소싱했습니다.

1

필자가 수중에있는 피사체를 적절히 조사 할 수있는 충분한 시간이없는 견적을 제공하게되면, 나는 과대 평가하는 경향이 있습니다. 수정 프로그램은 거의 항상 생각보다 어렵습니다. 뭔가가 하루가 걸릴 것이라고 생각한다면 나는 이틀을 말한다. 내가 뭔가를 말하면 하루가 걸릴거야. 이 설명으로 설명하려는 것은 철자 오류와 같은 가장 일상적인 작업을 제외하고는 작은 코드 변경도 하루 종일로 폭발 할 수 있다는 것입니다. 내가 생각하는 것보다 하루가 더 걸릴지 모르지만 나는 예상을 두 배로 늘린다. 나는 이것을하기가 어려울 수 있음을 안다. 경영진은 작은 수를 원합니다. 다른 개발자 앞에서 똑똑하고 유능한 것처럼 보이기를 원합니다. Scotty Factory도 참조하십시오.

코드를 테스트 할 QA 팀 구성원이 있어도 코드를 테스트하는 것이 자신의 직업임을 기억해야합니다. 견적에 그것을 고려하십시오. 그것은 내가 많은 개발자들이 그들의 예측 과정에서 벗어나는 것을 보아왔다.

2

매우 신속한 추정이 필요한 경우 1 ~ 2 일 또는 그 이하의 모든 작업에 대해 작업 분류 구조를 수행 할 수 있으며 최소 및 최대 예상 값을 제공하여 모든 작업을 추정 한 후

최소값과 최대 값의 합계는 전체 작업의 간격을 지정합니다. 이것은 상사에게 위험에 관한 정보를 제공하는데 항상 유용합니다.

일정한 간격을 갖게됩니다. 12-15 일 또는 5-30 일 - 언급 한 간격 대신 16 일보다 훨씬 유용합니다.

스티브 맥 코넬 (Steve McConnel) Software Estimation: Demystifying the Black Art의 좋은 책이 유용 할 수 있습니다.

+1

나는 그것을 한 번 시도했다. 내 상사, 내 모든 최소 날짜를 추가하고, 그것은 필요한 배달 날짜였습니다. – EvilTeach

+0

그런 경우 상사에게만 간격의 상한선을 말하고, 자신이 얼마나 좋은지 알 수있는 간격을 명심하는 것이 좋습니다. – sergtk

0

나는 보통 작업을 몇 가지로 나누지 만, 반 시간 이하의 시간 블록에서는 이러한 종류의 작업을 예측하지 않습니다. 고장 후 기능에 최소 5 ~ 6 개가있는 한 대부분의 경우 오류가 균형을 이루는 것으로 나타납니다 (일부 작업은 1 시간 미만으로 걸림).

물론 시간 간격이 가장 짧습니다. 어떤 수준의 편안함을 위해 필요한 조각의 수는 문제 도메인에 따라 달라질 필요가 있습니다. 적어도 5 ~ 6 일 반 정도의 청크가 요즘에 관해서 물어 본 것보다 옳은 것 같지만 몇 가지마다 검토해야합니다. 개월. 내가 다른 사람을 대신하여 추정하도록 요구하고있어

, 나는

(아마 좋은 근사이다 "더블 추가 x"위에서 언급 한 바와 같이) 좀 더 저항하고 관대 한 패딩 시스템과 유사한 관행에 따라
0

Factor # 1은 알려지지 않은 것이고 당신 말이 맞아요, 당신은 그걸 모두 알 수 없습니다. 그러나, 당신은 보통 아무도 그 당시에 당신을 위해 대답 할 수있는 몇 가지 주요 질문을 알게 될 것입니다.

Factor # 2는 현재 사용하고있는 도구와 리소스의 어려움 및 가용성입니다.


결과 = 약 두 배 당신의 추정

1
  • 부분으로 작업 나누고 이하 하루에 1/2 이상 단위로 시간을 각 부분을

  • 일을 할당합니다. 이것은 마이크로 스케줄링을 방지합니다.

  • 프로젝트 추정의 큰 문제점은 과소 평가입니다. 작업을 잘 알고 거의 코드를 볼 수 있으면 작업을 1 씩 가중합니다. 불확실성이 있거나 작업에 알 수없는 기술이 필요한 경우 불확실성 수준에 따라 더 높은 계수를 곱합니다.

  • 각 부품의 정확성에 대해 너무 걱정하지 마십시오. 오류는 정말로 중요한 유일한 것은 총 지속 시간

낙관적 시간 스케일을 복용하고 PI하여 곱의 좋은 오래된 대기가 항상있다처럼 상쇄하는 경향이있다. 그것이해야하는 것보다 더 자주 일합니다!

3

필요한 내역 이외에도 : Pragmatic Programmers에서 배운 조언은 주 단위로 15 일 동안 예상치를 표현하고 8 개월 단위로 추정하는 것입니다. 그 단위는 추정의 정확성을 반영합니다. 30 주 동안 조심하십시오.

견적을 이미 수행 한 유사한 작업에 기반 할 수도 있습니다.

0

이 크기의 올바른 순서로 추정 , 당신이 필요합니다

  • 원하는 기능에 대한 새로운 기술이나 프레임 워크의 소개가;
  • 은 .. 순수 개발 시간과 개발자 (그리고 고객 및 테스터의 가용성에 견적을 분리하는,
  • 은 이전 추정치에 대한 피드백을 얻기 위해,
  • 기능의 크기를 사용자의 안전 추정 범위 (안 2 회
  • 안정적인 개발 팀.
  • 없는 프로젝트 시작 오버 헤드.
  • 작업에만 추정치)의 2 배 더 많은 사람들이 대형으로 당신은 자신을.
2

숫자를 생각하고 두 배로 한 다음 다시 두 번 (예 :

상사가 프로젝트를 "완료하는 데 걸리는 시간"을 말하면 사용자가 작업을 완료하고 실시간으로 배포 한 시간을 의미합니다. 프로그래머는 (자연적으로) 프로그래밍을 완료하는 데 필요한 시간 (문제에 대한 해결책을 실제로 입력하는 시간)에 대해서만 생각할 것이므로 일반적으로 예상 한 것입니다.

엄지 손가락의 규칙은 다음과 같습니다

'첫 번째 숫자는'당신이 아니라 방금 설명한 작업의 범위에 따라 작업을 완료하는 당신을 데려 갈 것이라고 생각 일 수있다. (그러나 물론, 당신은 모든 것을 말하지 않았다).

첫 번째 여러 상사에게 주어진 첫 번째 데모/프로토 타입 후 코딩하는 데 필요한 추가 시간이며, 그는 말한다 "좋은, 좋은.하지만 당신은 추가 할 수 있습니다 ..."

두 번째 복수의 시간이다 레코딩을 올바른 제작 표준으로 다시 코딩해야했습니다.

세 번째 테스트는 문서 & 배포와 실제로 물건을 꺼내 살기 위해 수행해야하는 다른 모든 관리 작업에 대한 시간입니다.

그리고 네 번째 배수는 위의 경우에 대비 한 비상 사태입니다.

안전한 견적을 제공해야합니다. 물론, 당신은보다 철저한 계획과 견적 운동을 주장해야합니다.

0

답변은 항상 "6-8 주"라고 생각합니다.

0

"6 ~ 8 주"는 실제로 잘 작동하며 다른 하나는 데이터 모델을 기반으로합니다.

응용 프로그램에 필요한 데이터베이스 테이블 (또는 이와 유사한)의 개수를 상상해보십시오. 각 테이블에 모델, CRUD, UI 등을 코딩하는 데 필요한 일 수를 곱해서 30-50 %의 그 위에 시간.

관련 문제