[metrics] 신화적인 남자 달 개발자 당 10 라인-큰 프로젝트에 얼마나 가깝습니까? [닫은]

모든 사람들은 항상 “신화적인 남자의 달”에서 “하루에 개발자 당 10 줄”을 이길 수 있고 프로젝트를 시작하면 보통 하루에 몇 백 줄을 얻을 수 있다고 말합니다.

그러나 이전 고용주에서 모든 개발자는 매우 날카로 웠지만 엄청난 프로젝트, 백만 줄 이상의 코드, 매우 엄격한 인증 요구 사항 및 다른 수백만 라인 프로젝트와의 인터페이스였습니다. 어떤 시점에서, 호기심을 불러 일으키기 위해 그룹의 배송 제품에 코드 줄을 작성했으며 (우리가 개발 한 도구는 계산하지 않음), 개발자마다 하루에 약 12 ​​줄이 추가되었습니다. 변경 사항, 테스트 코드 또는 개발자가 매일 실제 프로젝트 코드를 작성하지 않았다는 사실을 세지 마십시오.

다른 사람들은 어떻게 지내고 있습니까? 그리고 어떤 종류의 요구 사항에 직면하고 있습니까?



답변

추가 된 줄 수는 프로젝트 상태에 따라 크게 달라지며 새 프로젝트에 추가하는 비율은 시작하는 프로젝트의 비율보다 훨씬 높습니다.

큰 프로젝트에서는 대부분 부품 간의 관계를 파악하는 데 대부분의 시간을 소비하며 실제로 변경 / 추가하는 데 소량 만 사용됩니다. 반면 새로운 프로젝트에서-당신은 대부분 충분히 씁니다.


답변

현재 프로젝트 중 하나에서 일부 모듈에서 코드베이스에 마이너스 라인 수를 기여한 것을 자랑스럽게 생각합니다. 어떤 코드 영역이 불필요하게 복잡 해졌고 더 깨끗하고 명확한 디자인으로 단순화 될 수 있는지 식별하는 것은 유용한 기술입니다.

물론 일부 문제는 본질적으로 복잡하고 복잡한 솔루션이 필요하지만 요구 사항이 잘못 정의되거나 변경되는 대부분의 대규모 프로젝트 영역에서는 라인 당 더 많은 문제가있는 지나치게 복잡한 솔루션이 있습니다.

해결해야 할 문제가 있다면 줄 수를 줄이는 솔루션을 선호합니다. 물론 작은 프로젝트를 시작할 때 매일 10 줄 이상의 코드를 생성 할 수는 있지만 작성한 코드의 양은 생각하지 않고 코드의 기능과 성능은 생각하지 않습니다. 나는 확실히 하루에 10 줄을 이길 것을 목표로하지 않을 것입니다.


답변

나는이 인용문을 좋아한다 :

코드 줄을 세려면 “생산 라인”으로 간주하지 말고 “소비 라인”으로 간주해야합니다. -Edsger Dijkstra

때때로 당신은 추가하는 것보다 코드를 제거함으로써 더 많은 기여를했습니다


답변

이 측정 항목 사용을 중지해야합니다. 대부분 의미가 없습니다. 응집력, 결합 및 복잡성은 코드 라인보다 더 중요한 지표입니다.


답변

다른 사람들은 어떻게 지내고 있습니까?

저는 회사 에서 유일하게 풀 타임 개발자 이며 지난 7 년간 500,000 줄의 OCaml 및 F # 코드를 작성했으며 이는 하루에 약 200 줄의 코드와 같습니다. 그러나이 코드의 대다수는 각각 수백 줄 길이의 수백 개의 개별 프로젝트로 구성된 자습서 예제입니다. 또한 OCaml과 F #간에 중복이 많이 있습니다. 우리는 50kLOC보다 큰 사내 코드 기반을 유지하지 않습니다.

나는 우리 자신의 소프트웨어를 개발하고 유지하는 것 외에도 지난 7 년 동안 업계의 많은 고객들과 상담했습니다. 첫 번째 고객을 위해 3 개월 동안 하루에 20 줄의 코드 인 2,000 줄의 OCaml을 작성했습니다. 다음 고객을 위해 우리 중 4 명은 개발자 당 하루에 2,000 줄의 코드 인 6 개월의 문서와 수백만 줄의 C / C ++ / Python / Java / OCaml 코드를 생성하는 컴파일러를 작성했습니다. 다른 클라이언트의 경우 C ++ 50kLOC를 6 개월 동안 6kLOC의 F #으로 바 꾸었습니다. 이는 하루에 -352 줄의 코드입니다. 들어 또 다른 클라이언트 , 나는 하루에 코드 0 라인 때문에 같은 크기입니다 F #으로 OCaml의의 15kLOC를 재 작성하고 있습니다.

들어 우리의 현재 클라이언트 , 나는 하루에 코드 -6,000 라인이 될 것이다 (맞춤형 컴파일러 작성) 1 년 F 번호의 ~ 160kLOC와 C ++ 및 매스 매 티카 코드 1600000 개 라인을 대체합니다. 이 프로젝트는 현재까지 제가 가장 성공한 프로젝트이며 고객에게 지속적인 비용으로 연간 수백만 달러를 절약 할 것입니다. 모든 사람이 하루에 -6,000 줄의 코드를 작성하는 것을 목표로해야한다고 생각합니다.


답변

실제로 “The Mythical Man-Month”(이 문서를 읽는 사람은 누구나 쉽게 구할 수있는 사본이 있어야 함)의 사본을 확인하지 않고 Brooks가 작성된 라인으로 생산성을 살펴 보는 장이있었습니다. 그에게 흥미로운 점은 하루에 쓰여진 실제 줄 수가 아니라 어셈블러와 PL / I에서 거의 같은 것으로 보인다는 사실입니다 (고급 언어라고 생각합니다).

Brooks는 일종의 임의의 생산성 수치를 포기하지는 않았지만 실제 프로젝트의 데이터를 사용하여 작업하고 있었으며 평균적으로 하루 12 라인이었을 수도 있습니다.

그는 생산성이 달라질 수 있다고 지적했다. 그는 컴파일러가 애플리케이션 프로그램보다 3 배, 운영 체제는 컴파일러보다 3 배 어렵다고 말했다. (그는 카테고리를 분리하기 위해 3의 승수를 사용하는 것을 좋아 한 것 같습니다.)

그가 프로그래머의 생산성 사이의 개별적인 차이점을 이해했는지는 모르겠지만 (크기 순서의 논쟁에서 그는 7 가지 차이점을 가정했지만) 우리가 아는 것처럼 우수한 생산성은 더 많이 쓰는 것이 아닙니다 코드뿐만 아니라 작업을 수행하기 위해 올바른 코드를 작성합니다.

환경에 대한 질문도 있습니다. Brooks는 개발자를 더 빠르거나 느리게 만드는 것에 대해 조금 추측했습니다. 많은 사람들과 마찬가지로, 그는 현재 유행 (시간 공유 시스템을 사용한 대화 형 디버깅)이 기존 방식보다 더 나은지에 대해 의문을 제기했습니다 (전체 시스템을 사용하여 2 시간 동안 신중하게 사전 계획).

이를 감안할 때, 그가 생각했던 실제 생산성 수치는 쓸모가 없다고 생각합니다. 이 책의 지속적인 가치는 사람들이 배우지 않고 계속 유지하는 원리와보다 일반적인 교훈에 있습니다. (만일 모든 사람이 그것들을 배웠다면이 책은 잠재 의식적인 마음과 같은 무언가가 있다는 프로이트의 모든 주장과 마찬가지로 역사적 관심사 일 뿐이다.)


답변

하루에 수백 줄의 코드를 쉽게 얻을 수 있습니다. 그러나 하루에 수백 줄의 코드를 얻으려고 노력하면 쉽지 않습니다. 하루에 줄이 거의 없거나 전혀없는 디버깅과 며칠을 거치면 평균이 다소 빨리 떨어집니다. 나는 어려운 문제를 디버깅하는 데 몇 주를 보냈으며 대답은 1 또는 2 줄의 코드입니다.