문제

그렇다면 왜?얼마나 많이?

나는 지나치게 낙관적일 수 있기 때문에 내 생각을 조금 과장하는 경향이 있습니다.

도움이 되었습니까?

해결책

호프 스태 터의 법칙: 모든 컴퓨팅 프로젝트는 Hofstadter의 법칙을 고려할 때에도 생각하는 것보다 두 배가 걸립니다.

다른 팁

과거의 경험에 따라 내재 된 낙관론을 시도하고 보상하기 위해 추정치를 부풀리면 팽창하지 않습니다. 정확한 견적을 제공하려고합니다. 그러나 항상 팽창하여 항상 보풀 시간을 갖게되면 그렇게 좋지는 않습니다.

아, 예, 나는 항상 초기 추정에 두 가지를 곱하는 법을 배웠습니다. 그것이 이유입니다 Fogbugz의 증거 기반 일정 도구는 정말 유용합니다.

프로그래머에게 거친 입자 기능의 시간을 추정하도록 요청하는 모든 조직은 근본적으로 깨졌습니다.

unbreak의 단계 :

  1. 기술 프로그램 관리자를 고용하십시오. 개발자는 필요한 경우 이러한 사람들로 두 배가 될 수 있습니다.
  2. 기능 요청, 변경 요청 또는 버그가 들어올 때 즉시 데이터베이스에 넣습니다. (내 조직은 TRAC를 사용하여 완전히 빨지 않습니다.)
  3. PMS가 해당 요청을 각각 일주일 이하로 걸리는 단계로 나눕니다.
  4. 주간 회의에서 PMS는 그 주에 원하는 티켓을 결정합니다 (마케팅의 의견 등). 그들은 그 티켓을 개발자에게 할당합니다.
  5. 개발자는 할당 된 티켓을 최대한 마무리합니다. 그리고/또는 그들은 PMS와 함께 일주일 이상이라고 생각하는 작업에 대해 논쟁합니다. 티켓은 필요에 따라 조정, 분할, 재 할당 등입니다.
  6. 코드는 매주 작성 및 체크인됩니다. QA는 항상 할 일이 있습니다. 우선 순위가 가장 높은 최우선 변경이 먼저 이루어집니다. 마케팅은 파이프에서 무엇이 나오는지 정확히 알고 있습니다. 그리고 궁극적으로 :
  7. 회사는 소프트웨어 프로젝트의 20% 성공률의 오른쪽에 속합니다.

로켓 과학이 아닙니다. 핵심은 3 단계입니다. 마케팅이 복잡해 보이는 것을 원한다면 PMS (개발자 입력과 함께) 첫 번째 단계가 일주일 미만이 걸리는 것이 무엇인지 알아냅니다. PMS가 기술적이지 않으면 모두 손실됩니다.

이 접근법에 대한 단점 :

  1. 마케팅이 [x]를 얻는 데 얼마나 걸립니까?"라고 물으면 추정치가 없습니다. 그러나 우리 모두는 그들이 이전에 얻은 추정치가 순수한 소설이라는 것을 알고 있습니다. 적어도 지금 그들은 매주 [x]가 작업되고 있다는 증거를 볼 수 있습니다.
  2. 우리는 개발자로서 매주 우리가 일하는 것에 대한 옵션이 적습니다. 이것은 불가피하게 사실입니다. 그러나 두 가지 요점 : 첫째, 좋은 팀은 어떤 티켓이 할당 될 것인지에 대한 결정에 개발자를 포함합니다. 둘째, IMO, 이것은 실제로 내 인생을 더 좋게 만듭니다.

내가 준 2 개월 추정치가 절망적으로 부적절하다는 것을 1 개월 동안 실현하는 것만 큼 낙담하지는 않지만 이미 공식 마케팅 문헌에 있기 때문에 변경할 수는 없습니다. 나는 추정치를 변경하거나 나쁜 검토를 위험에 빠뜨리거나 보너스를 누락하여 고등학교를 화나게하거나 많은 무급 초과 근무를합니다. 나는 많은 초과 근무가 나쁜 개발자의 표식이 아니라 "열정적 인"하나의 표식이 아니라는 것을 깨달았습니다. 그것은 독성 문화의 산물입니다.

그렇습니다.이 물건의 많은 부분이 (다양하게) XP, "Agile", Scrum 등으로 덮여 있지만 실제로는 그렇게 복잡하지 않습니다. 책이나 컨설턴트가 필요하지 않습니다. 당신은 단지 회사의 의지가 필요합니다.

Scotty 규칙 :

  • 최선의 추측을하십시오
  • 가장 가까운 전체 번호로 반올림합니다
  • 두 배 그 4 중 (Adam에게 감사합니다!)
  • 다음 높은 측정 단위로 증가합니다

예시:

  • 3.5 시간이 걸릴 것이라고 생각합니다
  • 그것을 4 시간으로 반올림합니다
  • 16 시간으로 4 배
  • 16 일까지 전환하십시오

TA-DAA! 당신은 8 일 이내에 끝날 때 기적 노동자입니다.

3-6 주 안에 답변 할 수 있습니다.

일반적으로 그렇습니다. 그러나 두 가지 전략이 있습니다.

  1. 항상 단일 숫자가 아닌 범위 (예 : 1D-2D)로 추정치를 제공하십시오. 숫자의 차이점은 프로젝트 관리자에게 자신감에 대해 무언가를 알려주고 더 나은 계획을 세울 수 있습니다.
  2. 같은 것을 사용하십시오 Fogbugz의 증거 기반 예약, 역사적 추정치를 실제로 취한 시간과 비교하기위한 개인 스프레드 시트. 그것은 항상 배가되는 것보다 더 나은 아이디어를 줄 것입니다. 두 배가 충분하지 않기 때문에 적어도!

그것은 "팽창"이라고 불리지 않습니다. "원격으로 현실적으로 만드는 것"이라고합니다.

당신이 적절하다고 생각하는 추정치를 취하십시오. 그런 다음 두 배가됩니다.

당신 (엔지니어)은 실제로 이상적인 시간 (스크럼 용어)을 추정하는 것을 잊지 마십시오.

실제로 관리하는 동안 실제 시간에 작동합니다.

차이점은 이상적인 시간은 상호 작용이없는 시간입니다 (각 인터럽트 후 30 분 워밍업). 이상적인 시간은 회의 시간, 점심 시간 또는 정상적인 Chit 채팅 등을 포함하지 않습니다.

이 모든 것을 고려하고 이상적인 시간은 실제 시간을 향한 경향이 있습니다.

예 : 예상 40 시간 (이상적인) 관리는 1 주간 실시간이라고 가정합니다.

40 시간을 실시간으로 변환하는 경우 :

  • 하루에 한 번의 회의를 가정합니다 (1 시간)
  • 하루에 한 번의 휴식 시간 (1 시간)
  • Chit Chat 화장실에 대한 20% 오버 헤드 플러스 커피 등

8 시간은 이제 5 시간 근무 시간입니다 (8- 회의 - 점심 - 워밍업).
시간 80% 효율성 = 4 시간 이상의 이상적인 시간.

이 40 시간 이상은 80 시간이 걸리면 실시간이 필요합니다.

교회 : Scott 씨, 항상 수리 추정치를 4 배로 곱 했습니까?

스코티 : 확실히, 선생님. 기적 노동자로서의 명성을 어떻게 유지할 수 있습니까?

경험의 좋은 규칙은 시간이 얼마나 걸리는지 추정하고 다음 문제를 다루는 데 많은 시간을 1/2를 추가하는 것입니다.

  1. 요구 사항이 변경됩니다
  2. 빠른 수정을 위해 다른 프로젝트에 끌려 갈 것입니다.
  3. 다음 책상에있는 새로운 사람은 무언가에 대한 도움이 필요합니다
  4. 일을하는 더 좋은 방법을 찾았 기 때문에 프로젝트의 일부를 리팩터링하는 데 필요한 시간

u003Csneaky>
프로젝트의 추정치를 팽창시키는 대신 각 작업을 개별적으로 팽창시킵니다. 상사가 당신의 추정에 이런 식으로 도전하는 것은 더 어렵습니다.
u003C/sneaky>

그러나 진지하게, EBS를 사용함으로써 나는 사람들이 일반적으로 큰 작업보다 작은 작업을 추정하는 것이 훨씬 나아 졌다는 것을 알았습니다. 프로젝트를 4 개월에 추정하면 7 개월 전일 수 있습니다. 아니면 그렇지 않을 수도 있습니다. 반면에 작업 추정치가 35 분인 경우 일반적으로 옳습니다.

Fogbugz의 EBS 시스템은 귀하의 추정 이력 그래프를 보여줍니다. 내 경험 (다른 사람들의 그래프를보고 있음)은 실제로 짧은 작업을 추정하는 데 훨씬 좋습니다. 따라서 내 제안은 프로젝트를 총으로 부두 곱셈에서 전환하고 추정에 훨씬 더 나은 작은 작업으로 선불로 나누기 시작하는 것입니다.

그 다음에 모든 것을 3.14에 곱하십시오.

많은 것은 당신이 얻고 싶은지에 달려 있지만, 추가 '버퍼'시간은 위험 평가를 기준으로해야합니다. 25% ~ 50% 낮은 위험 : 10% ~ 25% (모두 이전 프로젝트 경험에 의존).

위험 영역은 다음과 같습니다.

  • 요구 사항 커버리지의 추정 (#1 위험 영역은 설계 및 요구 사항 수준에서 구성 요소가 없습니다)
  • 사용되는 기술에 대한 지식
  • 자원에 대한 지식/자신감
  • 귀하의 영향에 영향을 미치는 다른 프로젝트, 자원 변경 등과 같은 외부 요인

따라서 구성 요소 A를 다루는 주어진 작업 (또는 작업 그룹)의 경우 초기 Est.는 5 일이며 요구 사항 범위에 따라 높은 위험으로 간주됩니다. 50%에서 100% 사이를 추가 할 수 있습니다.

6 주.

업계 표준 : 모든 요청에는 6 주가 소요됩니다. 일부는 더 길고 일부는 짧고, 모든 것이 결국 평균적으로 나옵니다.

또한 오래 기다리면 더 이상 문제가되지 않습니다. 프로젝트/기능을 삭감하기 위해 해고를 몇 번이나 겪었는지 말할 수 없습니다.

나는 과거의 경험을 바탕으로 더 현실적인 기대를 설정하려고 노력하는만큼 내가 그들을 부풀린다고 말하지 않을 것입니다.

두 가지 방법으로 프로젝트 지속 시간을 계산할 수 있습니다. 하나는 관련된 모든 작업을 해결하고 각각의 시간이 얼마나 오래 걸리는지, 지연, 회의, 문제 등을 파악하는 것입니다. '두 배다'처럼. 프로젝트를 제공 한 경험이 있으면 사양을 간략하게 살펴보면 매우 빨리 알 수 있으며, 항상 첫 번째 방법으로 도착한 수치가 두 배가됩니다.

총 시간을 팽창시키는 것보다 디버깅 및 테스트와 같은 것들에 대한 특정 버퍼 시간을 추가하는 것이 더 나은 아이디어입니다. 또한, 작업의 일부를 실제로 계획하기 위해 시간을 앞두고, 추정 자체를 훨씬 쉽게 만들 수 있습니다 (그리고 아마도 코딩도 가능합니다).

무엇이든, 모든 추정치를 기록하고 실제 완료 시간과 비교하여 과소 평가하는 경향이 있고 어떤 조건에서 어떤 조건에서 있는지를 이해하십시오. 이렇게하면 더 정확하게 "팽창"할 수 있습니다.

나는 그것들을 부풀린다고 말하지는 않지만 프로젝트에 참여할 수있는 모든 가능한 작업에 대한 템플릿을 사용하는 것을 좋아합니다.

목록의 모든 작업이 모든 프로젝트에 적용 할 수있는 것은 아니지만 목록이 있다는 것은 시간을 허용하는 것을 잊어 버린 작업이 균열을 겪지 않도록하는 것을 의미합니다.

새로운 작업이 필요하다는 것을 알게되면 목록에 추가하십시오.

이렇게하면 현실적인 견적이 있습니다.

나는 달성 할 수있는 것에 낙관적 인 경향이 있으므로 낮은면에서 추정하는 경향이 있습니다. 그러나 나는 내 자신에 대해 알고 있으므로 15-20%를 추가하는 경향이 있습니다.

또한 내 실제 대 내 추정치를 추적합니다. 그리고 관련된 시간에 다른 중단이 포함되지 않도록하십시오. 흐름으로 돌아가는 방법.

HTH

건배

원래 추정 전에 프로젝트를 실제로 완료하지 않는 한 프로젝트에서 "팽창"에 대한 추가 추정 시간을 부르지 않을 것입니다. 원래 예상 시간 전에 항상 프로젝트를 완료하는 습관을 내면 프로젝트 리더가 현명하게 받아들이고 더 일찍 기대할 것입니다.

당신의 추정치는 무엇을 기반으로합니까?

그들이 필요한 코드의 양과 코드를 작성하는 데 걸리는 시간에 대한 모호한 직관만을 기반으로한다면, 당신은 당신이 생각하지 않은 서브 타스크, 통신 및 동기화를 설명하기 위해 많은 것을 더 잘 채우는 것이 좋습니다. 오버 헤드 및 예기치 않은 문제. 물론, 그런 종류의 추정치는 어쨌든 거의 쓸모가 없습니다.

OTOH, 귀하의 추정치가 주어진 기술 및 개발자 수로 해당 범위를 수행하는 데 지난 시간이 얼마나 걸렸는지에 대한 구체적인 지식을 기반으로 한 경우 위의 인플레이션 요인이 이미 포함되어야하므로 인플레이션이 필요하지 않아야합니다. 과거 경험. 물론 현재 프로젝트에 미칠 수없는 새로운 요인이있을 것입니다. 그러한 위험은 일정량의 추가 패딩을 정당화합니다.

이것이 애자일 팀이 작업을 추정하는 이유의 일부입니다. 스토리 포인트 (임의의 상대적 측정 단위), 프로젝트가 진행됨에 따라 팀의 속도 (하루에 완료된 스토리 포인트)를 추적합니다. 이 데이터를 사용하면 이론적으로 완료 날짜를 정확하게 계산할 수 있습니다.

최악의 시나리오를 복용하고 두 배가되면 여전히 충분하지 않습니다.

언더 프롬, 오버 엘리버.

오 예, 오랫동안 어려운 경험의 일반적인 규칙은 프로젝트에 시간에 대한 최선의 추정치를주고 두 배로 늘리는 것입니다. 실제로 가져가다!

우리는 바보 관리자가 항상 정당화없이 그들을 줄이기 때문에 우리는해야합니다. 물론, 그가 우리가 이것을한다는 것을 깨닫 자마자, 우리는 무기 경주에 갇혀 있습니다 ...

나는 대화의 문구를 변경하기 위해 2 년 추정치를 제출 한 최초의 사람이 될 것으로 기대합니다.

한숨을 쉬다.

많이 말했듯이, 그것은 경험과 위험 사이의 섬세한 균형입니다.

  1. 항상 관리 가능한 작품으로 프로젝트를 분해하여 시작하십시오. 사실, 조각으로 같은 날에 시작하고 마무리하는 것을 쉽게 상상할 수 있습니다.

  2. 무언가를하는 방법을 모르면 (처음이었을 때와 같은) 위험은 증가합니다.

  3. 당신의 위험이 올라가면, 당신이 최선의 추측으로 시작한 다음 두 배로 예상치 못한 것을 다루기 위해 두 배가되지만, 전체 프로젝트 자체가 아니라 프로젝트의 작은 부분에서 그것을하고 있다는 것을 기억하십시오.

  4. 입력의 품질이나 원하는 모든 것을 할 수 있지만 결코 테스트하지 않은 라이브러리와 같이 제어하지 않는 요인이있을 때 위험이 증가합니다.

  5. 물론, 모델을 데이터베이스에 연결하는 등 특정 작업에 대한 경험을 얻을 때 위험이 줄어 듭니다.

  6. 당신의 소계를 얻기 위해 모든 것을 요약하십시오 ...

  7. 그런 다음 전체 프로젝트에서 기다릴 모든 답변/문서/Okays에 대해 항상 약 20-30% (회사에 따라 변경됩니다), 우리가 항상 잊어 버리는 회의, 동안 아이디어의 변화가 있습니다. 프로젝트 등 ... 우리가 인간/정치 요인이라고 부르는 것입니다.

  8. 그리고 다시 테스트에서 나오는 테스트 및 수정 사항을 설명하는 30-40%를 다시 추가하십시오.

물론이 모든 것을 보면 마법의 "Double It"공식으로 단순화 할 수 있지만 차이점은 타이트한 마감일에 무엇을 짜낼 수 있는지, 무엇을 할 수 있는지 알 수 있다는 것입니다. 위험한 과제는 무엇이며 중요한 이정표 등 일정을 구축하는 방법을 약속하십시오.

각 순수한 "코딩"작업에 소비 된 시간을 기록하고 위험성과 관련하여 추정치와 비교하면 그렇게 멀지 않을 것이라고 확신합니다. 문제는 앞으로의 모든 작은 조각을 생각하기가 쉽지 않으며 장애물없이 할 수있는 일에 대해 현실적 (낙관적)이라는 것입니다.

나는 그것을 할 수있을 때를 말한다. 나는 "예, 할 수있다"는 것이 아니라 새로운 추정으로 변경 요청에 후속 조치를 취하고 있는지 확인합니다. 언급하지 않고 더 많은 시간이 걸릴 것입니다. 변경을 요청하는 사람은 더 오래 걸릴 것이라고 가정하지 않습니다.

나는 다음과 같은 이유로 항상 추정치를 두 배로 늘립니다.

1) 머피의 법칙에 대한 완충제.당신이 설명할 수 없는 곳에서는 항상 무언가 잘못될 것입니다.

2) 과소평가.프로그래머는 항상 일이 쉽다고 생각합니다."아, 응, 며칠이면 돼."

3) 교섭 공간.고위 경영진은 항상 일정이 단축될 수 있다고 생각합니다."그냥 개발자들이 더 열심히 일하게하십시오!" 이를 통해 원하는 것을 줄 수 있습니다.물론 이것을 (한 번 이상) 남용하면 당신이 항상 과대평가하고 있다고 가정하도록 훈련시킬 것입니다.

메모:각 작업마다 버퍼를 두는 것이 아니라 프로젝트 일정이 끝날 때마다 버퍼를 두는 것이 항상 가장 좋습니다.그리고 개발자에게 버퍼가 존재한다고 절대 말하지 마십시오. 그렇지 않으면 파킨슨의 법칙(완료 가능한 시간을 채우기 위해 작업이 확장됩니다)이 대신 적용됩니다.때때로 나는 상위 경영진에게 버퍼가 존재한다고 말하지만 분명히 이유 #3을 정당화하지는 않습니다.물론 이것은 상사가 당신이 진실하다고 얼마나 신뢰하는지에 달려 있습니다.

나의 일반적인 추정은 guess * 2.5 + 1 week.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top