어떻게 대답 할 것인가?


9

우리는 모두 모호한 코드와 기괴한 예기치 않은 기능을 통해 수정하고 해결하기 어려운 문제를 가지고 있습니다. 패턴, 오류, 실수를 찾으려고 천천히 논리적으로 노력하십시오. 이 프로세스는 시간이 걸리고 종종 고객이 쉽게 이해하지 못하는 문제가 있습니다.

"언제 언제 수행됩니까?"라는 질문을 받았을 때, 특히 클라이언트가 소프트웨어 개발의 고유 한 복잡성을 이해하지 못하는 경우에 어떻게 대답합니까?


3
블리자드 또는 밸브 접근 방식 : 완료되면.
DeadMG

5
"그것은 그것이 언제 행해지는지를 묻는 사람들에 의해 얼마나 자주 산만 해 졌는가에 달려있다."
Ingo

"완료되면 훌륭한 요리와 훌륭한 코딩을 서두를 수 없습니다."
길버트 르 블랑

답변:


24

당신은 정직하게 질문에 대답합니다.

당신은 그들에게 어려운 문제라고 말하고, 해결책은 분명하지 않으며, 해결하는데 얼마나 오래 걸릴지 확신하지 못합니다. 모든 [시간 프레임]마다 진행 상황을 업데이트하도록 약속하면 진행중인 작업을 알 수 있으며 실제로 업데이트를 보낼 수도 있습니다.


1
+1을 추가하면 본인이 알고있는 최선의 추정치를 기반으로 추가하고 [완료 기간] 내에 완료를 예상하고 실제 완료 시간이 [ 원인]. 정직은 항상 최선이며 고객은 족제비 단어, 반 진실 또는 명백한 거짓말에 의지하지 않고 고객을 대할 경우 고객과 함께 일할 가능성이 높습니다.
S.Robins 2019

7
@ S.Robins : 최상의 추정치의 위험은 경고없이 위쪽으로보고되는 경향이 있다는 것입니다.
Michael Borgwardt

1
나는 당신이 알고있는 문제 영역의 일부에 대한 견적을 줄 것입니다. " x를 조사하면 더 알고 나중에 업데이트 할 수 있습니다."
제임스 스넬

10

개발자는 복잡한 문제를 작은 문제로 분해하여 개별적으로 해결함으로써 복잡한 문제에 접근합니다.

이상적인 세계 에서 문제를 해결하는 것은 복잡한 문제 A 가 될 것이며 주어진 시간에 문제를 짧은 문제 목록으로 분해 할 수있을 것입니다 .A 1 ~ A n , 각 평가 시간은 간단합니다. 초기 복잡한 문제를 해결하는 데 필요한 시간은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

D는 분해 과정 자체 인.

실제 세계 에서 유일한 문제는 작은 문제를 해결하는 데 소요되는 시간보다 t ( D )가 실제로 더 크다는 것입니다. 다시 말해, 문제의이 수준의 분해에 도달하려면 실제로 문제 자체를 해결해야합니다.

당신은 여전히 ​​할 수 있습니다 :

  • 주어진 작업 (문제 해결)을 작은 청크로 분리하십시오. 각 청크는 여전히 복잡한 문제입니다.

  • 각 청크의 예상 시간과 해당 위험을 평가하십시오.

    예를 들어, 작업 1에는 약. 5 시간이지만 차단할 위험이 높으므로 고객에게 12 시간을 기대하십시오.

  • 종속성과 시간에 미치는 영향을 평가하십시오.

    예를 들어, 작업 19에는 2 시간이 필요하며 위험이 너무 낮아 2 시간이라고 말할 수 있습니다. 아닙니다. 3. 아닙니다. 그러나 작업 19는 작업 24에 의존합니다. 작업 24는 다른 접근 방식을 사용하여 작업 19의 코드를 완전히 다시 작성해야하는 방식으로 작업 19에 영향을 줄 수 있습니다.

  • 모든 세부 사항을 고객에게 제공하십시오. 합계를주지 마십시오.

마지막 요점이 중요합니다. 합산하면 192 시간이라고 가정하면 고객은 매우 정확한 측정 기준이라고 생각하며 소비 시간은 189 ~ 195 시간입니다.

대신 세부 정보를 제공하면

  • 걱정하는 고객은 192 시간이 아니라는 것을 이해할 것입니다. 평가 중에 결정된 위험을 고려하여 모든 것이 잘못되면 192 시간입니다. 모든 것이 더 나빠지면 238 시간입니다. 모든 것이 정상이라면 85 시간입니다.

  • 걱정하지 않는 고객에 대해서는 모든 경우에 귀하의 답변을 읽지 않습니다. 그가 원하는 것은 나중에 당신을 비난 할 수있는 숫자입니다. 그가 읽지 않을 매우 상세한 답변을함으로써, 당신은 그가 당신에게 다시 걸리는 시간을 요구할 수 없다는 것을 알고 있습니다 : 당신은 이미 그 대답을했습니다. 그는 또한 합계를 계산하기 위해 답변을 읽지 않았기 때문에 나중에 당신을 비난 할 수 없습니다.


"실제로 문제는 작은 문제를 해결하는 데 소요되는 시간보다 t (D)가 실제로 더 크다는 것입니다." 사용자 스토리의 실제 구현
Giorgio

192 시간도 아니고 238 시간이나 85 시간도 아닙니다. 이 값은 모두 특정 확률을 수반하는 값입니다.
JensG

4

Hofstadter의 법칙 을 포함하는 것을 잊지 마십시오 : Hofstadter의 법칙 을 고려하더라도 항상 예상보다 오래 걸립니다.


그렇기 때문에 대부분의 복잡한 접근 방식이 일반적으로 시간 낭비 인 주된 이유입니다. 미지수를 어떻게 추정합니까? 글쎄요. 요즘에는 추정에 불확실성 분석을 적용하는 것이 매우 드물다는 것을 알면 훨씬 더 놀랍습니다.
JensG

1

일반적으로 CPM / PERT의 수정 된 수식을 사용합니다. 다음과 같습니다.

Mn + Mx + C(T) / 2 + C, where
Mn is the minimum number of hours you think it will take,
Mx is the maximum number of hours you think it will take,
T is the typical number of hours it takes,
and C is a confidence factor from 1 - 3 based on how much you've done similar things.

(멋진 수학 형식을 모두 수행하는 방법을 잘 모르겠습니다. 누군가이 형식을 편집하려면 자유롭게 느끼십시오.)

So, if you think:
Mn = 60  hours
Mx = 180 hours
T  = 100 hours
C  = 2
Then: 60 + 180 + 2(100) / 4 = 110 hours.

프로젝트 진행 방식에 따라 크게 달라질 수 있다고 강조하고 싶습니다. 며칠마다 프로젝트를 재평가하면 매주 업데이트를 제공 할 수도 있습니다. 그것은 과민 한 고객을 만족시키기 위해 먼 길을 간다. :)


0

비 기술적 인 사용자에게 모호한 타임 라인을 설명하는 것은 어렵습니다. 이는 프로젝트의 창의적인 단계와 성가신 버그를 추적 할 때 모두 해당됩니다. 두 경우 모두 전통적인 "작업을 더 작은 조각으로 분해"도 작동하지 않습니다.

원래 작업은 후자의 경우에 중점을 두므로 그에 대해 살펴 보겠습니다. 타임 라인을 제공 할 수없는 경우 사용자에게 무엇을 시도하고 언제 다시 연락해야하는지 알려주십시오. 자체 부과 타임 라인의 중간 지점에 도달하면 짧고 정직한 이메일 업데이트를 제공하십시오. 마감 시간 최소 1 시간 전에 정식 답변을 제공하십시오. 이제 당신은 신뢰성이 있습니다. 문제가 해결되지 않으면 최소한 빛이 비추는 것입니다. 시간 낭비처럼 보이지만 그렇지 않습니다.


0

알려지지 않은로드 블록과 예상치 못한 놀라움을 설명 할 수 없으므로 자신감있게 추정하는 것이 어려울 수 있습니다. 아이디어 :

  • 범위를보십시오 - "나는 확실히 그것을 적어도 N 일 (예 : 3)을 차지하지만 4N 많은으로 가라."
  • 견적을 추정하고 방어하는 데있어 상급 엔지니어의 지원을 요청하십시오.
  • 더 짧은 반복 (Agile / Scrum 스타일)으로 작업하여 비즈니스 가치를 추가 (신뢰 및 신뢰 확보)하는 최소한의 코드를 생성 한 다음 반복하십시오.
  • 고전적인 예 (예 : http://www.amazon.com/gp/aw/d/0143118757)와 같은 책에서 협상 기술을 배우십시오.

0

새로운 개발, 특히 애자일 개발 :

"추가 할 항목이 없을 때가 아니라 제거 할 항목이 없을 때 완벽합니다." -앙투안 드 생 텍쥐 페르

시스템에 대한 친숙한 도메인 지식을 가진 개발자가 거의 없거나 전혀없는 끔찍하게 지나치게 복잡한 시스템에서 오류를 재현하기 위해 거의 불가능한 오류를 수정하려는 노력과 시간을 추정하는 경우 유일한 해결책은 "고정 될 때"입니다.


0

일반적으로 나는 그들에게 진실을 말할 것입니다. 나는 그들에게 내가 지금 모른다는 것을 말하고, 일주일에 더 나은 통찰력을 가질 수 있습니다. 그런 다음 종이에 딱 맞는 구덩이를 손에 넣습니다. 그들이 당신을 하드 볼링하기 시작한다면, 그냥 "가능하다 ..."로 모든 문장을 시작하세요 또는 그런 것.


0

개인 소프트웨어 프로세스 (PSP)는 견적 개선에 중점을 둡니다. 이것은 훈련 된 작업 기록에 의해 달성됩니다. 이것은 본질적으로 일반적인 작업에 대한 실제 데이터를 가지기 때문에 추정의 "경험"부분을 다소 "가속화"시킵니다. 물론이 직업에는 여전히 많은 문제에 대한 독특한 해결책이 필요하지만 내 경험에 따르면 PSP를 사용한 후에는 견적이 더 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.