A born coder

A born coder

December 22, 2003

소프트웨어 공학 관련하여 가장 유명한 책 중 하나가 The Mythical Man-Month일 것이다. 소프트웨어 개발에 있어 사람의 머리 수만큼이나 믿을 수 없는 것이 없지만, 대부분의 프로젝트는 이 머리 수에 의존하여 진행된다. 이와 관련되어 1명의 훌륭한 개발자가 몇 명의 평범한 개발자 역할을 할 수 있는가라는 질문도 자주 나온다. 30이라는 대답은 쉽게 들을 수 있다.

그렇다면 그 30의 차이는 무엇일까? 물론 개발자의 지식과 숙련도의 차이가 있다. 지식이 없고, 숙련도가 떨어지는 경우, 30 이상의 차이가 발생하는 것은 개발 속도 뿐만 아니라 아키텍처의 문제까지 감안하지 않을 수 없기 때문이다.

특히, 패키지 소프트웨어를 개발하는 경우, 집중력이 떨어지는 개발자의 코드는 결국 프로젝트 완성을 위해서는 완전히 새로운 코드로 대체해야 하는 경우도 종종 발생한다. 개발자 수를 더하는 것이 +가 아니라 -인 경우가 된다.

그렇다면, 개발 속도와 quality 측면에서 30배 이상 나는 코더는 타고난 코더일까? 하늘에서 점지해준 소프트웨어 코더일까? 이 mythical coder들은 무엇이 다른 것일까?

이런 괴물 코더들을 감안하고도 소프트웨어 공학이 의미를 가질 수 있을까? 괴물 코더들의 존재는 소프트웨어 공학을 위협하고, 개발 프로세스를 위협하는 것이 아닐까? 정말 이러한 신화적 코더들만 쳐다본다면 소프트웨어 개발 기간의 예측은 더욱 어려워지고, 참여하는 코더들의 능력은 더욱 의심스러워진다.

하지만, mythical coder들을 신화로서 바라보는 것은 모두를 불행하게 한다. mythical coder의 출현 혹은 그로 인한 개발 기간의 엄청난 단축을 고려하고 프로젝트를 할 수 있을까? 좀더 분석적으로 바라보아야 한다. 결국은 각 코더의 지식과 기술, 경험 정도와 그 코더들의 열의.. 개발 집중력, 그리고 개발 시간이 결정한다.

mythical coder들은 보다 적합한 지식과 기술을 가지고 있으며, 보다 많은 시간을 훨씬 뛰어난 집중력으로 코딩에 사용한다는 공통점을 볼 수 있을 것이다. 시간을 잘 조직화하고 낭비하지 않으며, 자신의 약점을 잘 알고 보완해나갈 것이다.

그렇다면 개발 프로세스 혹은 소프트웨어 공학의 관점에서 참여하는 인력을 어떻게 바라봐야 할까? 그들이 가지고 있는 지식과 기술, 그리고 열정을 냉철하게 바라보고, 진행되는 프로젝트에 필수적인 기술, 지식, 경험과 쉽게 습득 가능한 기술, 지식, 경험을 구분해내고, 집중할 수 있는 환경과 그 집중에 투입되는 개발 시간을 최대한 확보하는 방향을 항상 고민해야 할 것이다.

신화적인 코더를 신화의 세상에서 인간의 세상으로 내려오게 하는 것이 소프트웨어 공학과 프로세스 관리의 의무인 셈이다.

Posted by Yoon Kyung Koo at December 22, 2003 10:48 PM

Comments

개발자의 리소스가 정량화된다는 것... 곧 그 사람의 능력이 측정가능하게 된다는 것일텐데...

공장 입장에서는 볼트와 너트의 품질의 명확한 spec이 나오는것이 중요하긴 하지만...

왠지 사람마저 그러한 대상에 속하게 된다는 것이... 그냥 왠지...좀....그냥...왠지... 좀.. ^^
Posted by: 재웅 at June 10, 2004 03:39 PM