새로운 기술을 연구할 때 시간을 예측하는 방법은 무엇입니까?[닫은]

StackOverflow https://stackoverflow.com/questions/343652

  •  19-08-2019
  •  | 
  •  

문제

저는 지난 몇 달 동안 Flex 작업을 해왔는데 실제로 Flex를 수행해야 하는 것은 이번이 처음이었기 때문에 결국 프로젝트 작업을 과소평가하여 지연이 발생했습니다.그렇다면 새로운 기술을 개발할 때 프로젝트 시기를 어떻게 예측합니까?

도움이 되었습니까?

해결책

또한이 스레드를 보는 것이 좋습니다. 기능 지점으로 작업하는 사람이 있습니까?

기능 지점은 무언가를하는 데 걸리는 시간을 추정하기위한 "산업 표준"(그 의미가 무엇이든)입니다. 대부분의 경우 그들은 프로그램이하는 일을 매핑하려고 시도한 다음 다음과 같은 AlgoryThm에 넣습니다.

long GetManHoursForProject()
{
    long   Count_of_Function_Points = GetFunctionPointCountFromAnalyticalPhaseOfSDLC();
    double Average_Complexity       = 1;  // .8 for easy, 1 for normal, 1.2 for hard
    long   Programming_Language     = 130; // for C++ (higher level languages have higher values)


    double Man_Months = Count_of_Function_Points * Programming_Language * Average_Complexity;


    long   Man_Hours = Man_Months * 20 * 8; // 20 days per month, 8 hours per day

    return Man_Hours;
}

위에서 링크 한 스레드는 스토리 보드 포인트에 대해 이야기합니다. 스토리 보드 포인트는 그 자체로 간헐적 인 대화입니다. 나는이 두 가지 주제를 조사하여 어떤 주제가 당신에게 어떤 일을하는지 찾을 것입니다.

기능 포인트와 스토리 보드 포인트의 좋은 점은 언어 승수가 있다는 것입니다. 모든 언어에도 동일한 사고 방식이 사용됩니다.

새로운 언어를 배우고 있다면 특정 시스템의 복잡성이 높아질 것입니다.

다른 팁

당신은 할 수 없습니다.

당신은 그것을 연구로 고려해야하며, 연구는 추정 할 수 없습니다.

나는 특정 날짜에 무엇이든 전달할 것을 약속하기 전에 새로운 기술을 실험하고 배우는 데 일련의 시간을 줄 것입니다.

첫 번째 기간이 지나면 대략적인 추정치를 만들고 상사가 실제로 얼마나 거친 지인지 확인하십시오.

사용 Hofstadter의 법칙 :

Hofstadter의 법칙을 고려할 때에도 항상 예상보다 오래 걸립니다.

중간 크기의 개발 팀을 .NET으로 전환하기 위해 프로젝트에서 일할 때 전체 전환이 추정 될 수있는 유일한 방법은 초기 연구 단계를 허용하는 것이 었습니다. 이를 통해 일부 개발자는 기술에 익숙해지고 기능의 작은 부분을 완전히 구현할 수있었습니다. 작동하는 시스템의 일부가 생산 표준으로 완료된 것이 매우 중요하다는 것을 알았습니다.

또한 논의 된 것은이 기술에 익숙한 컨설턴트를 고용하는 것이 었습니다. 이것은 비용 때문에 결정되었지만 .NET 프로젝트를 경험 한 사람이 올바른 방향으로 우리를 지적하는 것이 도움이되었을 것이라고 생각합니다.

추가해야 할 유일한 것은이 특성의 프로젝트를 수행 할 때 다른 개발자를 속도에 올리는 데 걸리는 시간을 추정하는 것이 중요하다는 것입니다. 분명히 이것은 연구 단계가 취한 시간보다 적을 것입니다. 프로토 타입에서 일한 개발자들은 현재 새로운 기술을 선택하는 사람들을 돕기 위해 준비되어 있어야합니다.

요약 :

  • 실제 추정치를 제공하기 전에 새로운 tchnology를 선택할 시간을 주어야합니다.
  • 전체 프로젝트 경험, 프로덕션 표준에 대한 추정을 기반으로해야합니다.
  • 모범 사례를 신속하게 배우기 위해 경험이있는 계약자를 고용하는 것을 두려워하지 마십시오.
  • 모든 사람 이이 기술을 통해이 기술을 배워야한다는 것을 잊지 마십시오.

나는 보통 배우는 시간과 별도로 구현하는 데 소요되는 시간을 추정합니다. 즉, 프로젝트를 당황 스러움에 따라 내가하고있는 일을 아는 것처럼 프로젝트를 추정하지만 새로운 기술을 배우는 데 걸리는 시간을 추정하려고 노력합니다.

얼마 전까지만 해도 Flex에서 프로젝트를 진행해야 했는데 이전에는 Flex(또는 Flash)를 사용해 본 적이 없었습니다.또한 이 Flex 애플리케이션에서는 특정 타사 위젯 라이브러리를 사용해야 했습니다.저는 Java와 같은 합리적인 언어를 사용하는 데 시간이 얼마나 걸릴지 추정한 다음 새로운 언어를 배우는 데 소요되는 시간을 대략 두 배로 늘렸습니다.문제는 Flex가 합리적이지 않고, 문서화되어 있지 않으며, 표준 라이브러리에 많은 버그가 있다는 것입니다. 분명히 우리의 타사 라이브러리도 표준 라이브러리의 모든 디자인 기능을 마음에 새겼습니다. 고장난.우리는 기능이 절반에 불과하고 할당된 시간을 초과한 저조한 ​​성능의 제품을 생산하게 되었습니다.고맙게도 경영진은 우리가 한동안 작업을 계속할 수 있도록 해 주었고(요구 사항이 계속 바뀌었기 때문에 우리에게 그만큼 빚을 졌습니다) 우리는 이를 정말 좋은 상태로 만들었습니다.여전히 우리가 원하는 모든 작업을 수행하지는 않지만 최악의 성능 문제를 완화하는 것을 포함하여 대부분의 라이브러리 버그를 해결했습니다(즉, UIComponent를 인스턴스화하는 데 시간이 오래 걸리므로 시작 시 모든 작업을 수행하는 대신, 우리는 필요에 따라 그것을 합니다.이는 타사 라이브러리와 관련이 없습니다).

간단히 말해서:

  • 항상 새로운 시스템을 학습하기 위한 가동 시간을 많이 예상하십시오.언어를 배우는 것 외에도 특이성을 배워야 합니다.아마도 정확하게 추정하는 것은 불가능할 것입니다.
  • 가능하다면 Flex를 피하세요.Flash가 라이브러리의 많은 부분을 공유하기 때문에 Flash가 더 나을 것이라고는 상상할 수 없습니다.

내 경험의 규칙은 당신이 생각하는 시간을 두 배로 늘리는 것입니다. 나는 당신이 항상 해결하는 데 시간이 걸리는 몇 가지 예기치 않은 문제에 빠질 것임을 알았습니다.

특정 규모의 프로젝트에 대해서는 프로젝트의 일부 대표 부분의 상당히 간단하지만 여전히 완전하고 사소한 프로토 타입을 만들 수 있습니다. 그런 다음 기술을 가지고 놀 수있는 시간을 가질 것이며, 물건을 만들기 위해 걸리는 시간과 관련하여 귀중한 통찰력을 얻을 수 있습니다.

과거에 새로운 기술을 사용했을 때 (즉, 새로운 기술이 프로젝트 제공의 중심이되었을 때) 다음과 같이 추정하는 좋은 결과를 얻었습니다.

New Project Time = Project Time * 1.5

...하지만 말도 안됩니다. 이것은 경험과 YMMV의 규칙입니다.

누군가를 고용하거나 추정하지 않는 것 외에도 할 수있는 한 가지는 다음을 추정하는 것입니다. 상대적 복잡성 작업 중 실제 구현 시간을 복잡성 수준과 비교하십시오. 시간이 지남에 따라 비율은 안정적인 값으로 수렴됩니다.

이제 나는 당신과 같은 문제를 만납니다. 이 의견을 여기에서 읽은 후, 나는 새로운 기술에 대해 명확하게하고 싶은 수준에 속한다고 생각합니다. 먼저, 새로운 기술을 위해 짧은 시간에 RAW (스케치 그림)에 대한 연구만으로도 이미 고장이 작동하므로 이제 순서로 더 깊이 우선 순위를 정하고 연구하십시오.

이것이 유용하기를 바랍니다.

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