프로젝트에 필요한 프로그래머 수를 결정하는 방법


18

특정 프로젝트에서 얼마나 많은 프로그래머가 성공해야하는지 어떻게 알 수 있습니까?

내가 일하는 회사는 고객 회사의 주문을 이행합니다. 우리는 위치 기반 재고 관리, 주문 처리, 청구서 생성, 송장 발행, 운임 감사 및보고 (아마도 50 개의 보고서)를 처리하는 사내 창고 관리 시스템을 작성했습니다. 또한 바코드 스캔 기능과 수십 개의 다른 작은 기능과 함께 클라이언트 포털이 있습니다. 또한 전체 직원 시간 시계가 포함됩니다. Quickbooks, UPS 및 FedEx와 통합됩니다. 기능이 약간 다른 최소 50 명의 클라이언트에 대한 작업을 처리합니다. 예를 들어 고객이 보내는 파일에서 주문을 가져 오지만 각 고객은 다른 파일 형식 (csv, excel, 플랫 파일 및 웹 서비스)을 보내므로 12 가지가 넘는 주문 변환 방법 설정이 있습니다. 수출은 같은 이야기입니다.

프로젝트는 매일 1 억 5 천 라인 이상의 코드로 복잡하고 복잡해지고 있습니다. 약 250,000 줄의 VB.NET 코드, 6,200 줄의 루비 코드 및 5,000 줄의 PHP입니다. 또한 약 200 개의 테이블이있는 MySQL 데이터베이스가 있습니다.

끊임없이 변화하는 요구 사항과 수십 명의 고객의 요구가 다르기 때문에 코드 자체는 품질이 매우 열악한 코드에서 비교적 좋은 코드에 이르기까지 크게 다릅니다.

현재이 프로젝트에는 단일 프로그래머 만 있습니다. 또한 현재 75 명 정도의 회사에 대한 모든 제품 지원을 수행하고 있습니다. 여기에는 새 클라이언트 문제 해결 및 설정 및 필요한 새 기능이 포함됩니다. 또한 모든 것을 100 % Ruby on Rails 기반으로 다시 작성하려고합니다. 그리고 내년 내에 전체 시스템을 마케팅하여 다른 회사에서 사용하고 싶습니다.

현재 우리는 프로그래머로서 자신 만 가지고 있지만 충분하다고는 생각하지 않습니다. 이 규모의 프로젝트에 몇 명의 프로그래머가 있어야하는지 또는 우리가 그 질문에 대한 답을 결정하는 방법에 대한 권장 사항이 있습니까? 특히 경영진이 내년까지 제품을 상업적 품질로 원한다는 사실을 감안할 때?


11
나는 전구 농담을 기다리고 있었다 :(
Oded

롤 ... 구글 제목과 아마 일부를 찾을 수 있습니다. 내가 인터넷 검색을 할 때 실제로 실수로 많은 롤을 발견했습니다.
kstevens715

8
요구 사항이 계속 변경되면 여분의 손이이 제품을 배송 및 출고시킬 수 없습니다. 먼저 요구 사항을 정리해야합니다.
Oded

내 경우에는 분명히 사실입니다. 내가 묻는 질문은 아마도 대답하기가 쉽지 않을 것입니다. 그러나 다른 사람들이 어떤 종류의 프로젝트를 진행하고 있는지, 그리고 얼마나 많은 사람들이 그 프로젝트에 풀 타임으로 참여하는지 비교할 수 있다면 도움이 될 것입니다.
kstevens715

이 질문은 매우 유사 것 같습니다 이 질문에 . 아마도 당신은 거기에 유용한 답변 중 일부를 찾을 것입니다.
S.Robins

답변:


3

나는 적어도 5 명을 말할 것입니다. 하나는 테스트, 하나는 사양, 지원 및 문서, 3dev를위한 것입니다. 귀하의 경우 테스트해야 할 것이 많으므로 50 % 전용 테스터는 부당한 것이 아닙니다. 요구 사항을 기록하고 고객이 테스트 등을위한 인프라 구조를 설정하도록 지원하는 사람이 있어야합니다. 내가 생각하는 세 명의 개발자는 이와 같은 프로젝트에 상당히 부족합니다. 많은 타사 시스템에 통합 된 대규모 백엔드이며 매우 많은 맞춤형 보고서가 포함되어 있습니다. 갖고 싶습니다.

  1. 우수한 백엔드 개발자 (지속성 / 비즈니스 계층)
  2. 액션 클래스와 JavaScript CSS 디자인을 만드는 훌륭한 중급 / 프론트 엔드 개발자.
  3. 훌륭한 Alround 개발자 연기 설계자이지만 다른 두 전문가의 도움을 받아 모든 레이어에서 코드를 작성합니다. 이 개발자는 JUnit 프레임 워크 Maven Jenkins Git 분기 설정 등을 수행 할 수도 있습니다.

당신이 떠나면 병이 나 휴가 등이 발생합니다. 프로젝트 당 한 사람이 결코 똑똑하지 않습니다. 동료없이 전문적으로 진화하지 않기 때문에 혼자있는 것도 좋지 않습니다. 나는 종종 자주 5 명의 개발자로 구성된 팀에서 새로운 아키텍처를 설정하는 등의 일을 자주하지만, 동료와의 대화를 통해이를 함께 설정하고 일주일 동안 대화를 나누는 것만 큼 진화하지는 않습니다. 프레임 워크 선택. 페어 프로그래밍은 극도로 제공되며 한 명의 개발자와 함께 할 수 없으며 불확실하다고 생각되면 누가 코드를 검토합니까? 막히면 누가 당신을 도울 것입니까? 더 큰 범위에 속하고 필요한 경우 전문가 자원을 요청할 수있는 경우 한 사람의 프로젝트 만 수행합니다.


1
나는 지난 여름에 이틀간의 휴가를 갔고 누군가 내 집에 들어가서 내 노트북을 가져와야했다. 상호 작용할 다른 개발자가 많지 않기 때문에 항상 진공 작업에 대해 이야기합니다. 그리고 작은 마을에 거주하는 사용자 그룹이나 참여 대상도 없습니다. 우리는 최근에 테스트 코드를 작성하기 시작했습니다. 실제로 Rails로 전환하기 시작했을 때입니다. 나는 테스트없이 개발하는 것을 상상할 수 없다. 50 % 전담 테스터를 보유하고 있다는 생각이 마음에 듭니다.
kstevens715

1
최소한 한 명의 개발자는 데이터베이스 분리 주의자 여야합니다.
HLGEM

8

종종 어려운 자원 봉사 세계에 오신 것을 환영합니다 !

이 문제는 프로젝트 규모와 팀 규모 중 하나가 아닙니다. 이는 일반적으로 관리와 관련된 다른 문제를 숨기는 매우 일반적인 오해입니다. 문제는 모든 범위 에 관한 것 입니다. 현재 리소스로 달성 할 수있는 것이 무엇인지 결정해야합니다. 그런 다음 워크로드 처리 용량이 할당 된 시간 내에 작업을 처리하기에 충분한 지 결정해야합니다. 따라서 프로젝트 요구 사항을 파악하고 범위를 지정해야합니다.

  • 기존 코드베이스를 정리하는 데 시간을 보내고 싶습니까?
  • 이것이 프로젝트의 성공을 보장하기위한 기본 요구 사항입니까?
  • 시스템에 추가 할 새로운 기능이 있습니까? 프로젝트에서 처리해야 할 가장 중요한 측면은 무엇이며, 위시리스트에있는 사소한 항목은 무엇입니까?
  • 요구 사항을 폐기하거나 최소한 다음 유지 보수 릴리스까지 연기 할 수 있습니까?

요구 사항의 범위를 알면 특정 시간 내에 결과를 달성하는 데 필요한 작업 부하를보다 쉽게 ​​결정할 수 있습니다. 자원이 과도하게 활용 될 경우 직원이 더 필요합니다. 자원이 충분히 활용되지 않을 경우 마감일을 더 가깝게하거나 프로젝트 범위를 늘릴 수 있습니다.

직감이 본능적으로 당신에게 프로젝트를 관리 할 직원이 충분하지 않다고 말하면, 당신은 맞을지 모르지만, 왜 직감이 당신에게 그것을 말하고 있는지 이해해야합니다. 단순히 느낌을 갖는 것만으로는 충분하지 않습니다. 대신, 본능을 뒷받침하는 증거를 제공하기 위해 과학적으로 문제를 조사 할 수 있어야하며, 본능이 잘못 될 가능성에 직면 할 수 있도록 준비해야합니다. 증거를 수집 한 후 즉, 프로젝트의 범위를 정한 경우 실제로 경영진과 함께 앉아 프로젝트의 범위를 줄이거 나 프로젝트의 성공을 보장하는 데 사용할 수있는 리소스를 늘리는 사례를 만들어야합니다. 가까운 증거에.


스코프는 250K SLOC 시스템을 수축 포장 품질 (또는 적어도 컨설팅웨어 품질)로 완전히 다시 작성하는 것 같습니다. 장점은 요구 사항 수집 및 전체 설계가 이미 완료된 것입니다. 이것은 작은 일이 아니며 다른 책임을 가진 한 개발자를위한 것이 아닙니다.
David Thornley

@DavidThornley 개발자의 업무 범위, 마감일, 작업량, 회사가 이미 제품을 마케팅하는 방식에 크게 의존합니다. 1-2 명으로 구성된 팀이 많은 복잡한 프로젝트를 수행하는 것을 보았습니다. 잘 관리 되었기 때문에 많은 성공을 거두었습니다. 그러나 나는 그 일이 큰 일이며, 그 자체로 이미 자원 조달 측면에서 약간의 적기라는 것에 동의합니다. 문제는 작은 숙제를 먼저하지 않고 많은 사람들을 고용 할 가치가 없다는 것입니다. 이것이 실제로 제 대답의 요점입니다. :-)
S.Robins 2012 년

스코프는 지난 몇 달 동안 꽤 많이 제기 한 것입니다. 프로젝트의 20 %가 회사에 미치는 영향의 80 %가 있습니다. 그것이 내가 집중하려는 것입니다. 불행히도, 영향의 20 %를 차지하는 80 %는 더 많은 코드와 기능을 던져서 "비상 사태"를 처리하려고 할 때 라인의 최전방으로 밀려납니다. 한 번은 기능 정지를 요청하여 핵심 문제를 해결할 수있었습니다. 그들은 나에게 5 일을 주었다. 말할 필요도없이 5 년이 지난 지금에도 많은 핵심 문제가 남아 있습니다. 그래도 귀하의 게시물에 감사드립니다.
kstevens715

6

제품 / 프로젝트의 성공 여부는 제품을 구매 한 회사의 약속에 달려 있습니다. 그들이 더 많은 프로그래머 / 지원 직원을 고용 할 경우, 훈련, 교육, 관리 등을 알고 있어야하는 한 프로그래머의 생산성이 내재적으로 저하 될 것입니다. 증가가 실현되기 전에 감소해야합니다. 비즈니스 분석가, 관리자, 판매 및 상용화 된 제품에 대한 지원도 필요합니다.

상용 응용 프로그램을 호스팅하는 것은 단순한 플랫폼을 만드는 것 이상입니다. 지원 요구 사항, 기술 지원, 버그 수정, 사용자 교육 등이 있습니다.

적절한 분석 / 사양 / 추정 절차가 있습니까? 그렇지 않다면 지금 시작 하십시오. 직접 할 수 있습니다.

당신은 지금 당신의 두뇌를 일하고 있습니까? 그렇다면이 프로세스를 관리하고 개발을 계속할 것으로 예상되는 경우 두 배나 열심히 일할 준비를하십시오.

다음은 남부 캘리포니아 지역 가격과 비슷한 상황에 있었던 이전 경험의 답변입니다.

5-6 명 && ~ 500k

  • 모든 모자의 수석 개발자 / 관리자 1 명 (~ 100k-120k)

  • DB 이해 능력이 뛰어나고 숙련 된 2 명의 Sr. (매우 유능한자가 운전) 프로그래머 (2x ~ 80-100k)

  • 1 프로젝트 관리자는 관리 ($$?)와 인터페이스하여 앱의 요구를 이해하고 해당 요구를 프로그래머에게 직접 전달할 수 있어야합니다.

  • 1? (HTML / UI) 개발자? 자바 스크립트 기술 (프로그래밍 UI / 마크 업 코드가 싫어)

  • 1? 데이터베이스 사람? 그러나 대부분의 훌륭한 프로그래머는 확장 가능한 데이터 구조를 만드는 데 아무런 문제가 없지만 최적화 문제를 해결하려면 적어도 컨설턴트가 필요합니다.


1
+1 나는 당신의 고장을 아주 좋아합니다! 내가 SoCal에서 일하는 것을 생각했을 때 당신이 인용하는 급여가 나에게 우울하다고 느끼는 구약을 완성하십시오. 그러나 만일 Sr 사람들이 MSc + 5years 일과 같다면 서유럽보다 그다지 높지 않습니다.
Farmer

1
지원 업무 (클라이언트 설정 및 사소한 기능 향상)를 인계하고 일반 업무를 수행하는 엔트리 레벨 프로그래머를 추천한다는 점을 제외하고는 동의합니다. 일부 역할을 결합하면 관련된 기술 수준에 따라 작동 할 수 있습니다.
jfrankcarr

와우, So Cal에서 80-100K의 선임 개발자를 구할 수 있습니까? 생활비를 감안할 때 상당히 낮은 것 같습니다. 아마도 우리는 '노인'에 대한 다른 생각을 가지고있을 것입니다. 달라스에서 내가 아는 선임 개발자들은 그것보다 훨씬 더 많은 것을 얻고 있습니다.
kevin cline

우리는 아마도 어떤 맛이 좋은지에 대한 다른 생각을 가지고있을 것입니다. 저는 지난 10 년 동안 그 범위 내에서 일할 의향이있는 젊고 재능있는 2 명의 .Net Sr.을 고용했습니다. 최신 Microsoft Stack (TFS, .NET 4, C #, EF 4.1, MSSQL 2008 R2, blah blah ..)을 사용했으며, 깔끔한 코드를 생성하는 데 아무런 문제가 없었습니다. 우리는 작은 팀이었고, 우리가 일부 Sr.의 직원을 고용하려고 시도한 것은 그들이 학습에 저항하고 너무 많은 의견을 가지고 너무 많은 짐을 실 었다는 것입니다 (우리는 고용 기간도 많지 않았습니다)
hanzolo

2

구성, 테스트, 통신, 지원, 문서화 및 버그 수정에 대한 모든 책임이 있는 대규모 코드베이스의 프로그래머 1 명은 새 코드를 작성하거나 기능을 추가 (또는 이전 코드 리팩토링) 할 시간이 많지 않습니다.

비즈니스를 확장하지 않는 이러한 필수 작업의 비율로 일주일을 허비하면 경영진이 추가 지원을 얼마나 빨리 고용하는지 놀라게 될 것입니다.

대규모 프로젝트에는 일정량의 관련 오버 헤드가 사라지지 않습니다 (특히 새 클라이언트로 항상 구현 / 테스트하는 경우). 이것이 당신이 회전을지지하고 일반적으로지지하는 이유입니다. 팀원 중 일부는 새로운 기능에 대해 작업 할 시간이 있습니다.

소프트웨어 추정에 관한 책을 볼 수도 있습니다. 이 책들은 말할 것도 많지 않지만, 다양한 분야의 흥미로운 사례 연구를 포함하고 있으며 주장을 근거로 뒷받침합니다.


내 시간의 95 %가 그러한 작업 중 하나를 수행하는 데 소비됩니다. 지지대 교체라는 아이디어가 마음에 듭니다. 내가 롤로 회전 할 수있는 사람을 고용하면 고려해야 할 수도 있습니다. 예를 들어, 오늘은 실제로 일부 핵심 코드 작업을하고 있었고 누군가 배터리가 필요했기 때문에 중단되었습니다.
kstevens715

@ kstevens715-기술적 인 누군가의 아이라도 도움이 필요한 것 같습니다. 나는 당신이 적어도 5 피겨 소득을 받고 있다고 가정합니다. 배터리를 받으라고 말하면 직원에게 약 10 달러가 소요됩니다 (시간당 임금의 35 %).
Ramhound 2012 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.