팀에 새로운 개발자를 추가하는 방법 있습니다. 이 프로젝트가 시작될 때

나는 2 명의 개발자로 구성된 소규모 회사를 운영합니다. 우리는 고객 중 하나를 위해 매우 큰 응용 프로그램을 구축하고 있습니다. 이 프로젝트에 대한 개발은 1.5 년 동안 진행되었습니다.

이제이 고객은 중요한 후원을 확보했으며이 프로젝트와 관련된 이벤트를 조직하고 있습니다. 이제 2 개월 만에 마감일을 정해 놓쳤습니다.

우리는 팀에 새로운 개발자를 추가하려고 생각하고 있으며, 그의 통합을 돕기 위해 무엇을 할 수 있는지 궁금합니다.

이것은 상황이다 :

  • 우리는 Brooks의 법칙 임계 값에 접근하고 있습니다. 새로운 개발자를 추가하는 것이 비생산적 일 것입니다.
  • 응용 프로그램은 비교적 잘 디자인되어 있지만 일부 시점 (특히 오래된 코드)에서는 구현이 혼란 스럽습니다.
  • 최신 코드에 대해서만 단위 테스트가 있습니다. 이 프로젝트가 시작될 때 정기적으로 테스트를 수행하지 않았습니다.
  • 문서와 의견이 불완전합니다.
  • 응용 프로그램은 크고 복잡합니다.
  • 고객은 자신의 프로젝트에 대한 거의 모든 세부 사항을 매우 명확하고 “프로그래머 친화적”방식으로 작성했습니다.

지금 사람을 추가하는 것이 좋은 생각입니까? 그렇다면 새로운 개발자가 팀에 통합 할 수 있도록 무엇을 할 수 있습니까?

편집하다:

후원사는 내년 봄에 인터넷 기반 스포츠 이벤트를 조직하고 있습니다. 연중 특정 요일에 시작해야합니다. 우리는 그것을 바꿀 수 없습니다.

우리 개발자 (나는 둘 중 하나) 가해 야 할 일은 다음과 같습니다.

  • 기존 응용 프로그램 완료 (작업의 약 25 %).

  • 이 이벤트를 조직하는 데 필수적인 새 모듈 만들기 (작업의 약 75 %). 이 새로운 모듈은 메인 프로그램의 API를 이해하지 않고서는 개발할 수 없습니다.

정확한 시간을 예측할 수는 없지만 위험한 상황에 처해 있습니다.



답변

가장 좋은 방법은 새로운 개발자를 불에 태우는 것이 아니라 개발자가 문제를 일으키지 않아야 할 기능 및 / 또는 버그 수정을 개척하는 것입니다. 사람이 전체 아키텍처, 요구 사항 및 코드 기반을 한 번에 알 필요가없는 작업이 필요한 영역을 찾으십시오. 시스템을 더 빨리 배우기 위해 문서 작업을 할 수도 있습니다.


답변

팀에 새로운 개발자를 추가하는 대신 회사의 업무량의 일시적 증가를 처리하기 위해 2-3 개월 동안 숙련 된 컨설턴트를 추가하는 것이 좋습니다. 아이디어는 거의 제로에 가까운 시작 시간을 처리 할 수있는 사람을 얻는 것이지만 동시에 팀에 가장 적합한 사람은 아닐 수도 있습니다.

워크로드 증가가 일시적이지 않다고 생각하더라도 지금은 팀을 유기적으로 키우기에 가장 좋은시기가 아닐 수 있습니다. 프로젝트 마감 시한이 없어도 팀에 세 번째 개발자를 추가하는 것은 스트레스가됩니다. 마감일이 촉박하면 전환이 더 악화됩니다.

단점은 임시 도움을 대신하여 외부인이 작성한 코드를 얻는다는 것입니다. 이 위험을 완화하려면 두 사람이 모두 코드 검토를 수행해야합니다. 그의 모든 단위 테스트도 검토하고 이해해야합니다.


답변

지금 사람을 추가하는 것이 좋은 생각입니까?

아니요. 가능하면 클라이언트가 범위를 줄이는 데 동의하도록하십시오.

늦게 사람을 추가하면 상당한 위험을 초래할 수 있으며 마감 시간을 알 수 없습니다 (내가 이해 한 한).


답변

하지마

아직.

전통적인 전망

귀하의 질문에, 당신은 신화 Man-Month 의 Brooks의 법칙을 참조하십시오 .

늦은 소프트웨어 프로젝트에 인력을 추가하면 나중에 만들 수 있습니다.

Brook의 법칙을 무시하는 것은 대가를 수반합니다. 멀티 태스킹하지 마십시오. MVP (Minimum Viable Product) 제공에 중점을 둡니다. 그런 다음 새로운 팀원을 모집, 리 소싱, 교육 및 관리하는 데 에너지를 집중하십시오.

두 달이 너무 짧습니다. 번 다운 목록으로 모집을 계획하면 시간이 얼마나 걸릴 수 있는지 알 수 있습니다.

Larry Page와 Sergei Brin은 2 년 동안 Google의 초기 팀을 선택했습니다. 직원 번호 3에 대한 선택도 신중해야합니다.

민첩하고 새로운 밀레니엄 뷰

신화적인 Man-Month가 쓰여진 시대 (1960 년대 중반)보다 경쟁이 더욱 활발해졌습니다. 한 회사에서 오랜 경력이 사라졌습니다. 이제 우리는 프로젝트와 회사간에 자주 마이그레이션합니다. 빠른 팀 빌딩은 성공을 만듭니다. 느린 증가는 심각한 제한 요소입니다. 훌륭한 예는 오픈 소스 프로젝트, 신생 기업 및 컴퓨터 과학 과정에서의 팀 프로젝트 사용 증가에서 비롯됩니다.

잠재적으로 애자일 팀은 일정에 제약 조건을 적용합니다. 사용 가능한 리소스에 최적화되어 있기 때문에 늦지 않았습니다. 신입 사원 통합은 또 하나의 제약이며, 단기 목표와 장기 목표 간의 절충으로 간주됩니다. 애자일 팀은 지속적으로 코드를 통합하고 있습니다.

신입 직원을위한 민첩한 팀 기술 및 사회 통합은 다음을 사용할 수 있습니다.

  • 일일 스크럼
  • 페어 프로그래밍
  • 리팩토링
  • 누락 된 단위 테스트 추가
  • 마른 문서를 강화
  • 코드 리뷰

희생양

민첩한 소프트웨어 개발의 조직 패턴”에서 James Coplien은 그룹 역학 및 새로운 팀원 추가 비용에 대해 설명합니다. 그의 패턴 “Sacrificial Lamb”은 모든 멘토링과 훈련을 한 사람에게 할당하여 팀의 나머지 부분을 방해하지 않도록 보호합니다.

구현을 고려할 수있는 전략입니다.

또 다른 전략은 매일 특정 시간 동안 신입 사원의 질문을 다루는 신입 사원 멘토를 지정하는 것입니다. 한 사람 만 살릴 수 있다면 아마도 아침이나 오후에 중단없이 일하고 오후 나 아침에 각각 질문에 대답합니다. 내가 속한 그룹은 지난 여름에 10 명의 인턴을 가지고 있었기 때문에 많은 사람들이 많이 중단되었습니다.

현재 멘토링은 한 사람이 주로 아침 스크럼 동안과 직후 (오전 8시 30 분부터 오전 9시 15 분까지, 그리고 오전 9시 15 분, 오후 12시에서 3시 30 분 (7시-3시 30 분) 오후).


답변

브룩의 법칙에 대해 언급 한 것을 기쁘게 생각합니다. 잘 했어요 다른 개발자를 추가 할 때의 주요 문제는 개발자가 속도를 높이는 오버 헤드와 프로젝트의 현재 위치에 대한 상태 동기화의 오버 헤드입니다. 따라서 세 번째 개발자를 얻으려면 다음을 시도하십시오.

  • 새로운 직원에게 최고 속도의 비용이 적게 드는 지역에 최대한 빨리 갈 수 있도록하십시오. 이것은 당신이 누구를 고용하고 어떤 기술을 가지고 있는지에 달려 있습니다.
  • 이 영역이 응용 프로그램의 다른 영역과 느슨하게 연결되어 동기화 오버 헤드가 줄어 듭니다. DB 작업을 강요하고 테이블을 재구성하기 위해 그를 보내면 너무 많은 것일 수 있습니다.
  • 사기를 유지하기 위해 할 수있는 일을하십시오. 다른 사람들이 지적했듯이, 새로운 팀원을 추가하는 것은 스트레스가 될 수 있으므로 탄산 음료에 대한 투자가 도움이 될 수 있습니다.

답변

Brook의 법칙을 엄격히 준수하면 팀을 키우지 못할 것입니다.

요령은 현재 팀의 속도가 너무 느려지지 않고 새로운 사람을 키우는 것입니다. 결국 새로운 사람은 속도에 도달하고, 당신은 혹을 극복 할 수 있습니다.

당신의 경우에는? 새 사람에게 누락 된 모든 단위 테스트를 작성하도록 권장합니다.

  1. 이것들은 회귀 오류에 대한 보호 수단으로서 절실히 필요합니다.
  2. 새로운 사람이 시스템의 내장을 배웁니다. 화재로 인한 시련이지만 약간의 출력이 생산 코드에 들어 가지 않으므로 위험이 거의 없습니다.
  3. 다른 팀원이 얼마나 많은 시간을 할애 할 수 있는지에 대해 제한을 두십시오. 예를 들어, 질문을 대기시키고 마감 시간이 지날 때까지 하루에 30 분만 다른 팀원들과 교류 할 수 있습니다.

또한, 직접 대면하자 : 당신은 새로운 사람을 데리고 왔는지 여부에 관계없이 범위와 고객의 기대치를 관리해야 할 것이다. 그 대가는 다음주기에 온다.

에드 유든은 브룩의 법칙에 대해 큰 언급을했습니다. 그는 물론 사람들을 추가하면 속도가 느려질 것이지만 프로젝트가 위험에 처한 경우에는 경영진이 새로운 사람들을 유치 할 수있는 유일한 시간입니다. 따라서 : 최신 릴리스에 대한 영향을 최소화하고 가능한 빨리 성능이 떨어지는 성능을 제거하십시오. 이런 식으로 시간이 지남에 따라 강력한 팀을 구성 할 수 있습니다.


답변

다른 프로젝트를 수행하고 있다면 현재 2 명의 개발자가 도움이 될 수있는 큰 마감일에 집중할 수있는 시간을 확보 할 수 있습니다.