뛰어난 프로그래머 생산성 – 10,000 배의 차이를 설명합니까? [닫은]


19

훌륭한 선반 운영자는 평균 선반 운영자의 임금보다 몇 배나 많은 명령을 내리지 만, 훌륭한 소프트웨어 코드 작성자는 평균 소프트웨어 작성자의 가격의 10,000 배에 해당합니다. - 빌 게이츠

같은 팀에 "훌륭한"소프트웨어 엔지니어와 "평균적인"소프트웨어 엔지니어가 있다고 가정 해보십시오. 한 엔지니어가 10,000 배 더 생산적인 생산성을 어떻게 차지할 수 있습니까? 나는 그들이 기능, 버그 및 조사에 대한 자신의 몫을 취하고 지속적으로 품질을 제공한다는 점을 감안할 때 이것을 아주 잘 이해할 수는 없습니다. 내 설명이 "평균"보다 높다는 것을 정당화 할 수 있습니까? "큰"?


2
이 질문이 stackoverflow에 적합한 지 확실하지 않지만 응답에도 관심이 있습니다.
Austin Henley

18
인용문은 훌륭한 사람이 말한다 가치가 10,000 배의 가격을 평균 한,이 "생산성"에 대해 아무것도.
Oded

4
실제로 훌륭한 프로그래머는 일반 프로그래머보다 생산성이 훨씬 낮을 수 있습니다. "직무"를 수행하는 대신, 그는 레이더에서 벗어난 더 나은 일을했으며, 생산적인 프로그래머의 직업을 쓸모 없게하는 완전히 새로운 제품군을 만들었습니다.
hotpaw2

2
내가 확신하고있는 한 가지는 혁신과! @ # $를 끝내려면 둘 다 필요하다는 것입니다.
Erik Reppen

6
Abe Lincoln은 "나무를 자르는 데 8 시간이 걸리면 도끼를 갈아 타는 데 6 시간을 소비 할 것"이라고 말했다. 좋은 프로그래머는 덜 생산적인 것처럼 보일지 모르지만 앞으로 나올 모든 문제에 대비하고 있습니다.
BeardedO

답변:


57

인용의 요점은 하나는 10K 배 더 생산적이라는 것이 아니라 하나는 다른 하나보다 가치가 10K 배 높다는 것입니다. 소프트웨어는 결함이있는 설계 또는 구현이 수년 동안 휴면 상태에 놓일 수있는 고유 한 조건을 갖습니다 (잘못 가공 된 부품은 일반적으로 "작동하지 않고 현장에서 만들지 않습니다"). 하루는 참기 어려운 상황에서 머리를 키 웁니다.

모든 사람은 설계에서 구현, 테스트, 생산, 유지 보수에 이르기까지 결함을 수정하는 데 소요되는 지수 비용에 익숙해야합니다.

회사의 평판뿐만 아니라 가능한 책임을 고려할 때, 문제를 피할만큼 충분히 알고있는 개발자는 가난한 솔루션을 무지하거나 순진하게 구현 한 개발자의 10,000 배에 해당한다고 결론을 내릴 수 있습니다.

편집 (2014 년 봄) : "Heartbleed"


1
프로그래머가 다른 사람보다 10,000 배나 더 많은 가치를 갖게하는 것은 책임이 없다는 점에 대해서는 미묘합니다. 원래는 생각하지 못했습니다. 감사합니다. 그래도 측정하기가 매우 어려운 것 같습니다.
TheImpact

2
@TheImpact : 코딩이 완료되고 프로젝트가 세상에 나간 후에야 잘 드러나기 때문에 "측정"하기가 어렵습니다. 성능 및 신뢰성 및 일반적으로 "평균적인"프로그래머의 생각; 반면 그들은 훌륭한 프로그래머가 만든 디자인의 패브릭에 내장되어 있습니다.
NotMe

10
+1. 훌륭한 소프트웨어 개발자의 가치가 100이라면 -10보다 몇 배나 더 많은가?
니콜

3
수요와 공급 문제도 있습니다. Raymond Chen : "저는이 고급 코드를 작성하기 위해 전 세계에서 약 5 명만 믿습니다. 저는 그 중 하나가 아닙니다.- blogs.msdn.com/b / oldnewthing / archive / 2011 / 04/15 / 10154245 .aspx . " 이는 보안 관련 코딩의 경우 특히 그렇습니다. 문제는 수년간 눈에 띄지 않을 수 있습니다 (적어도 흰색 모자에 의해 눈에 띄지 않을 수 있음). Schneier는 대부분의 프로그래머가 프로그래머 자신이 깰 수없는 암호화 알고리즘을 작성할 수 있다고 말합니다. 나는 이것이 작가가 최고가 아니라면 누군가가 더 잘할 수 없다는 것을 의미하지는 않는다.
Brian

1
Ariane V 로켓의 첫 발사를 고려하십시오. 잡히지 않은 제로 나누기가 로켓을 파괴시켰다. 그뿐만 아니라 문제의 코드는 로켓이 켜진 순간 아무런 가치를 갖지 못했습니다. 그들이 더 나은 프로그래머와 함께 저장했을 수백만을 생각하십시오.
Loren Pechtel

44

평균 올림픽 수영 선수는 거리에서 시간당 약 2.5 마일을 수영 할 수 있습니다.

평범한 사람 (수영 할 수있는 사람)은 거리에서 시간당 약 1.5 마일을 수영 할 수 있습니다.

이것은 평균 올림픽 수영 선수가 약 8 시간 안에 영어 채널을 수영 할 수 있음을 의미합니다.

그렇다면 올림픽 수영 선수가 평균보다 60 % 빠르며 평균 수영 선수가 레이스를 완료하는 데 약 13 시간이 걸린다는 것이 이유입니다 ...

평범한 수영 선수 인 잉글리쉬 채널을 수영 하려고 한다면, 일주일 후 해안을 가로 질러 갈 수있는 유일한 방법은 해안가에서 씻겨 나가는 것입니다.

프로그래밍의 많은 측면은 영어 채널을 수영하는 것과 같습니다. 싱크대 또는 수영입니다. 나는 10,000X가 더 나은 작동하는 완성 된 소프트웨어와 작동하지 않는 불완전한 소프트웨어의 구별을 설명하는 정확한 방법인지조차 모릅니다.


31

같은 팀에 "훌륭한"소프트웨어 엔지니어와 "평균적인"소프트웨어 엔지니어가 있다고 가정 해보십시오. 한 엔지니어가 10,000 배 더 생산적인 생산성을 어떻게 차지할 수 있습니까? 나는 그들이 기능, 버그 및 조사에 대한 자신의 몫을 취하고 지속적으로 품질을 제공한다는 점을 감안할 때 이것을 아주 잘 이해할 수는 없습니다. 내 설명이 "평균"보다 높다는 것을 정당화 할 수 있습니까? "큰"?

그것은 "평균적인"소프트웨어 엔지니어에게 많은 "기여 된 것"입니다. 실제로 훌륭한 소프트웨어 엔지니어는 일반 엔지니어가 제대로 해결 하지 못하는 몇 시간 안에 문제를 해결합니다. 뛰어난 소프트웨어 엔지니어는 1/5 분량의 코드와 1/10 분량의 버그로 1/3의 일반적인 문제를 해결합니다. 훌륭한 소프트웨어 엔지니어의 코드는 O (n)에서 실행되는 반면 평균 소프트웨어 엔지니어의 코드는 O (n ^ 3) 시간에 실행됩니다. 훌륭한 소프트웨어 엔지니어는 기다리는 동안 자신의 솔루션을 조정할 수 있으며, 일반적인 소프트웨어 엔지니어는 사양의 최신 변경 사항에 대해 불평하고 새로운 요구 사항을 충족하는 데 몇 주가 걸릴 것이라고 말합니다. 이들은 훌륭한 엔지니어가 일반 엔지니어의 작업을 다시 실행할 때 본 실제 차이점입니다.


6
+1 : 불행히도 문제가 올바른 해결책을 얻지 못하는 것이 일반적입니다. 즉각적인 문제를 "고정" 하는 몇 가지 해결 방법과 클러치가 얼마나 빈번한 지 , 몇 주 안에 더 많은 문제가 발생할 것이라고 확신 합니다. "그러나 몇 주 안에 미래의 자아들이 그 문제들을 다루도록하자!"
Joachim Sauer

거의 불가능한 문제에 대한 작동 솔루션과 비 작동 솔루션의 차이점은 조직이 살아남거나 파산하거나 실험실에서 무언가가 폭발하여 모든 엔지니어 (클래식 TV 드라마 스토리 라인 등)를 죽이는 등 무한한 접근 방식에 가깝습니다. .
hotpaw2

@ hotpaw2 : 사실, 나는 그렇게 극적인 것을 생각하지 않았습니다. 토폴로지 정렬과 같은 그래프 계산과 같은 약간의 수학적 복잡성 문제를 생각하고있었습니다. 보통의 엔지니어들은 느리고 버그가 많은 솔루션을 작성하는 데 몇 주를 소비 할 수 있습니다. 훌륭한 엔지니어는 비즈니스 요구 사항을 잘 알려진 문제에 매핑 한 다음 게시 된 라이브러리 또는 알고리즘을 검색합니다.
케빈 클라인

9

차이점의 관점 에서이 문제를 해결하려고 노력할 것입니다.

훌륭한 엔지니어는 일반 엔지니어보다 다음을 더 잘 수행합니다.

  • 디자인-수정이 적고 유연성이 뛰어난 디자인을 제작하십시오. 이는 소프트웨어 수명 기간 동안 절감 효과로 이어집니다.
  • 특징-이것들은 금식으로 구현되고 더 깔끔한 구현입니다.
  • 버그-더 빨리 발견되고 잘 수정되며 향후 버그가 줄어 듭니다.
  • 조사-더 나은 해상도와 결과로 더 빨리 결론을 내릴 수 있습니다.

함께 찍은, 이러한 것이 저장 개발 시간에 돈의 회사를 많이하고 수 있도록 여분의 기회에 돈의 회사를 많이.


4

훌륭한 프로그래머는 종종 임금을 받기 위해 "기능, 버그 및 조사에 대한 자신의 몫을 취하는 것"이 ​​아닙니다. 그들은 때때로 회사를 그만두고 창업하거나 신생 기업에 합류하거나 새로운 스 unk 크 웍스 프로젝트를 시작하거나 옛날에는 전국적으로 유명한 푸른 하늘의 R & D 연구소에 합류하여 아무도 필요하다고 생각하지 않는 제품을 혁신합니다 또는 위대한 프로그래머의 통찰력, 기술 및 땀 전에 소프트웨어와 관련이 있다고 생각했습니다.

이 프로그래머 "가치"는 위험에 대한 비례적인 보상에 관한 것입니다. 프로그래머는 2X 이상을 지불하는 대신 그러한 미친 소프트웨어 제품에 대해 생각하기 위해 해고 당했을 수도 있습니다.

가끔 소프트웨어 스타트 업으로 발생하는 현상 : 백만 / 십억 명의 사람들에게 공개되거나 Google 또는 Facebook 등으로부터 인수되는 경우. 비슷한 양의 경우 선반 운영자에게는 거의 발생하지 않습니다 (실시간에는 하나 이상의 성공적인 실리콘 밸리 기술 회사 창립자가 작업장에 선반을 가지고 있음).


4
".... 수십억에 이르는 대중에게 공개 ....."언론의 수사에도 불구하고 이것은 소프트웨어 엔지니어들에게는 거의 일어나지 않습니다. "만드는"모든 사람들에게 수천명이 모호해 지거나 너무 많은 VC 라운드를 타면서 입안에서 쓴 맛
만으로도

1
@ mattnz : 아마도 프로그래머의 10,000X가 가치가 있다고 주장하는 10,000 대 1 확률보다 약간 낫습니다.
hotpaw2

3

최고의 프로그래머 만 해결할 수있는 솔루션이 있습니다. 수천 개의 평범한 것들을 던지면 작동하지 않습니다. 그들이 지식을 종합적으로 결합 할 수 있다고해도 그들의 노력을 조정하는 것은 더 어렵다.

SO에 대한 질문에 대답하는 것은 다르지 않습니다. 일반적인 개발자 그룹 중 하나가 답을 얻을 수있는 많은 문제가 있습니다. 이 웹 사이트는 아마도 대부분의 개발 팀보다 노력을 조정하는 일이 훨씬 더 낫습니다.


3

게이츠의 인용을 뒷받침하는 경험적 증거가 있다고 생각합니다. 타이핑 풀에서 5 번째 백분위 수와 95 % 백분위 수 사이의 출력 차이 (타이핑 풀에 대해 쉽게 측정 가능)가 3 대 1과 같다는 것을 읽었습니다 (소스를 기억하지는 않지만). 워드 프로세싱 소프트웨어를 사용할 수있게 된 후에는 소프트웨어의 고급 기능을 사용할 수있는 사람들이 상대적으로 유리한 이점을 얻었 기 때문에 비율이 10 또는 20 대 1로 증가했습니다.

소프트웨어 개발의 경우 아마도 모든 종류의 도구, 기술 등을 활용할 수있는 자유가 더 많기 때문에 비율이 훨씬 높아질 것입니다. 차이를 측정하는 것이 더 어렵지만 대부분의 시도는 10 대 1 이상이며, 측정하기 쉬운 것만 측정하기 때문에 차이를 과소 평가하는 것 같습니다.

선반을 타이핑하거나 조작하는 것과 같은 일에서 상위 1 %의 사람들은 아마도 가능한 것의 생리 학적 한계에 도달했을 가능성이 높습니다. 프로그래밍의 경우에는 명확하지 않으며 (코드를 작성하는 데 걸리는 시간과 코드를 입력하는 데 걸리는 시간의 비율이 엄청나게 크지 않음) 훨씬 더 많은 변형의 여지가 있어야합니다.


1
와. 요점에 대해 이야기하십시오. 앵커 포인트로 "타이핑 속도"로 시작하는 모든 프로그래머 생산성 측정은 확실한 답을 얻습니다.
riwalk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.