brunch

You can make anything
by writing

C.S.Lewis

by 이서 Jul 31. 2023

훌륭한 개발자와 평범한 개발자의 차이


스티브 잡스의 아래 인터뷰를 예전 글에서 소개한 적이 있다. 좋아하는 영상이다. 자주, 수시로 재생하여 보곤 한다.


[스티브 잡스] A급 인재와 B급, C급 직원의 차이

(7분 26초 소요지만, 4분 7초까지만 보셔도 됩니다.)

https://youtu.be/tkHvxLwLx3M


얼마 전 위 영상과 비슷한 맥락의 글을 읽었다. 많은 생각을 했다. 아무래도 이 산업에서 오래 일을 하다보니 공감가는 부분이 많았다. 결국 내 생각의 끝은, '올바른 사람을 채용하는 것은 정말 중요하다.'는 것으로 이어졌다. 임원이 추천한 사람이라는 이유로 덜컥 채용해버리는 요새 우리 팀의 분위기 때문에 더 와닿았을 수도 있겠다. (그 결과는..)


얼마 전 유시민 작가가 유튜브 방송에 출연해 이렇게 이야기했다.

"B급들은 C급,D급을 자기 아래에 앉힌다. 그리고 C급,D급 주변에는 등외급들이 자리를 차지한다. 그렇게 조직은 망가진다."


책에서 읽은 내용을 구구절절 설명하지 않고, 그대로 옮기는 것이 나을 것 같아 기록한다. 특별한 코멘트는 하지 않겠다. PM들이 읽어보면 좋겠다. (읽는데 5분)


https://onlinecs.baylor.edu/news/what-future-software-engineering



처음 소프트웨어 프로젝트를 맡은 프로젝트 관리자를 위해 개발자 능력에 대한 몇 가지 미신 들을 밝혀 봅시다. 정말 훌륭한 소프트웨어 개발자는 일반 개발자보다 훨씬 더 많은 생산성을 낸다는 것을 알아야 합니다. 실제, 통계적으로 매우 훌륭한 개발자는 여러 분야에서 서투른 개발자보다 월등하다고 합니다. 양적으로 본다면 10배 정도의 차이가 납니다. 즉 숙련된 개발자는 단지 일반 개발자보다 조금 나은 게 아니라는 것입니다.

그 차이는 매우 큽니다.

이것이 신참 소프트웨어 프로젝트 관리자에게 제품 개발을 계획하는 데 있어 의미하는 바는 무엇일까요? 관리자들은 가장 뛰어나고 똑똑한 개발자들이 없더라도 평범한 개발자들로 그나마 유용한 결과를 얻을 수 있을 것이라는 잘못된 생각을 가지고 있습니다. 서투른 인부라도 땅을 파 구멍을 만들 수 있겠지만, 소프트웨어를 만드는 것은 땅을 파는 것과 다릅니다.

소프트웨어 개발에서, 오늘 프로그램을 만든 것은 내일의 기초가 됩니다. 만일 2류 개발자가 기초를 만들었다면 정말 좋은 개발자들은 진행하기 전에 뒤로 돌아가서 그 결함들을 수정해야 할 것입니다. 2류 개발자나 일반 개발자를 고용하는 것은 프로젝트 속도를 느리게 합니다. 종종, 좋은 개발자를 늘리는 것보다 팀에서 형편없는 개발자를 퇴출하는 것이 더 유익합니다.

이런 사실과 함께 지연된 프로젝트에 인력을 투입하더라도 여전히 프로젝트가 지연되는 사실을 결부시켜 생각해 보십시오. 그러면 왜 대부분 엔터프라이즈 개발이 냉혹한 현실로 가는지 이해할 수 있습니다. 경험이 부족한 소프트웨어 프로젝트 관리자는 창고에 사람을 더 투입하면 화물차에 더 빨리 실을 수 있는 것 같이, 프로그래머를 더 고용하면 소프트웨어 프로젝트를 완료하기 위한 시간이 단축될 것이라고 판단할지도 모릅니다.

그런 방법은 통하지 않습니다. 새 사람을 얻기 위해 시간이 걸릴 것이고 다른 프로그래머들의 작업도 방해할 것입니다. 게다가, 팀원을 추가할 때마다 의사소통 경로는 증가합니다. 두 명의 팀에서는 베티 수와 빌 사이 하나의 경로만 있습니다. 마이크를 추가하면 세 개의 경로로 갑자기 올라갑니다. 경로의 수는 계속 기하급수적으로 증가하게 됩니다. 이러한 의사소통 경로 수는 n(n-1)/2이 됩니다. 팀에 12명이 있다면 12/(12-1)2 개의 경로를 가지고 프로젝트 관리자로서 66개의 관계들을 유지해야 합니다. 한 사람 더 추가하면, 이제 78개의 관리할 의사소통 경로를 가지게 됩니다.

보통의 개발자들과 소프트웨어를 만드는 것은 두가지 미신을 드러냅니다. 첫 번째는 사람을 추가하면 프로젝트 기간을 짧게 만들 수 있다는 것입니다. 두 번째는 버그를 양산하고 동작하지 않는 보통의 코드를 만드는 평균적인 개발자도 좋다는 것입니다. 사실은, 평균적인 개발자는 전체 생산성을 끌어내리고 프로젝트를 완료하기 위한 필요한 시간은 길어집니다.

해법은 뭘까요?
훌륭한 개발자들에게 강력한 도구들을 제공하십시오. 높은 품질의 소프트웨어를 더 빨리 얻을 수 있을 겁니다. 두 번째, 따뜻한 마음씨는 프로젝트에 도움이 안 됩니다. 불쌍한 개발자들을 돌봐줘야 한다는 생각은 진짜 선수들인 여러분의 훌륭한 개발자들의 생산성을 깎아버립니다. 소프트웨어는 조립 라인 제조 공정이 되기에는 너무 복잡합니다.

좀 더 빠른 소프트웨어 개발을 원합니까? 뛰어난 소프트웨어 개발자를 고용하고 양성 하는데 별도의 비용을 투자하십시오. 이는 단기적으로나, 코드를 유지보수하는 장기적으로 충분히 보상될 것입니다.

- 97 things every project manager should know



매거진의 이전글 우리 팀의 거북선은 무엇인가
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari