소프트웨어 개발 성과와 개인의 엔지니어의 역량과의 상관관계


소프트웨어 공학의 사실과 오해

Fact 02. (사람) ‘개인차’에 관한 연구에 따르면, 최상의 프로그래머는 최악의 프로그래머보다 28배 더 뛰어나다. 여기에 비례해서 이들에게 임금을 28배 주는 것이 아니라면, 이들은 소프트웨어 분야에서 가장 값싸고 훌륭한 자원이다.

(개인적 의견) 하루빨리 메이저 리그식의 연봉제가 필요하다…..고 생각한다…모두 계약직으로..ㅎ
참고: 궁극의 코드 카타

이 주제에 대해서는 오래된 참고문헌이 많다.

– 우리의 연구에서 가장 중요한 실질적 발견은 프로그래머 실무 능력의 현저한 개인차다(Sackman 1968). Sackman은 생산성 차이가 28배까지 달라질 수 있다는 것을 발견했다.

– 한 그룹 내에서도 프로그래머간의 능력차가 10배이상 날 수 있다(Scwartz 1968)

– 개인간에 5배 정도의 생산성 차이는 흔한 것이다. (Boehm 1975)

– 개인에 따라 성과는 엄청난 차이가 난다. 가령 두 사람은 단지 1개의 오류를 찾았지만 (1인당 0.5개), 다섯사람은 7개의 오류를 찾았다. (1인당 1.4개). 초급 프로그래머들에 대한 이런 차이는 잘 알려져 있었지만, 경험이 많은 사람들 사이에서도 그 차이가 크다는 것은 약간 놀라운 일이다.(Myers 1978)

Fact 03. (사람) 지체된 프로젝트에 사람을 추가 투입하면 프로젝트가 더 늦어진다.

직관적으로 생각하면,프로젝트 일정이 지연될 때 일정을 따라잡기 위해 투입인원을 늘려야 할 것 같다. 이번 사실은 이 직관이 틀렸다는 것을 말한다. 문제는 프로젝트에 인원이 투입되면 그들이 제 속도로 일하도록 하는데 많은 시간이 필요하다는 것이다. 새로운 인원은 생산성을 제대로 내기까지 많은 것을 배워야 한다. 그러나 더 중요한 것은 그들이 배워야 하는 것은 주로 프로젝트 팀 내의 다른 사람으로부터 얻어야 한다는 것이다. 그 결과 새로운 팀 멤버는 프로젝트에 뭔가를 기여하는데 매우 느릴 뿐 아니라 충분한 생산성을 내가 전까지는 기존 프로젝트 팀의 시간과 주의를 뺏는 요인이 된다.

게다가, 프로젝트에 사람이 많을 수록 커뮤니케이션은 더욱 복잡해진다. 따라서 프로젝트가 지연될 때 인력을 투입하면 프로젝트는 더 늦어지는 경향이 있다.

만약 애플리케이션 도메인에 대해 잘 알고 있다면 괜찮지 않을까?

McConnel(1999)에서 그는 (1) 이 사실을 무시하는 것은 실제로 흔한 일이며, (2) 이 사실은 쉽게 인지하고 피할 수 있는 제한된 상황에서만 유효하다는 점을 지적했다. 그러나 이 기본적인 사실에 반대하는 사람은 많지 않고, 지체된 프로젝트에 인원을 추가 투입할 경우 매우 신중해야 한다. 사실 어떤 프로젝트건(해당 프로젝트가 지체됐든 아니든 간에) 인원의 추가 투입에는 신중해야 한다. 관리자가 프로젝트 진행을 좀 더 빠르게 하고 싶을 때는 특히 이런 유혹을 많이 받는데, 이는 매우 위험하다.

McConnel, Steve 1999, “Brooks’ Law Replaced”

Fact 04. (사람) 작업환경은 생산성과 품질에 지대한 영향을 미친다.

소프트웨어 프로젝트에서는 가능한 최고의 사람들로 팀을 구성하고, 적절한 방법론을 적용하려 하고, 상당히 높은 수준의 SEI CMM 레벨에 해당하는 프로세스를 확립하여 가능한 빠르게 진행하려는 경향이 있다. 문제는 여기에 뭔가 중요한 것이 빠져 있다는 것이다. 바로 작업환경이다. 분석가가 분석을 하고, 설계자가 설계를 하고, 프로그래머가 프로그래밍을 하고, 테스터가 테스트를 할 때, 작업환경은 매우 중요하다.

간단히 말하자면, 소프트웨어 작업은 사고 집약적이므로, 작업환경은 생각을 촉진하는 곳이어야 한다. 사람이 붐벼서(의도적이든 그렇지 않든) 자꾸 방해를 받는다면 거의 일을 진행할 수 없게 된다.

얼마나 심할까? 이 문제를 집중적으로 다룬 책이 있다. 피플웨어(DeMacro and Lister 1999)는 상당한 분량을 할애하여 작업환경이 어떻게 어떤식으로 영향을 미치는지 설명한다. 이 책에서 저자들은 작업환경이 업무 효율에 얼마나 영향을 미치는지에 대한 조사결과를 설명한다. 그들은 프로젝트 팀 구성원을 모아서 상위 25%에 속하는 그룹과 하위 25%에 속하는 그룹으로 나누었다.(상위 25%에 속하는 그룹은 하위 25%에 속하는 그룹보다 업무 효율이 2.6배 뛰어났다) 그리고 각 그룹에 속한 사람들의 작업 환경을 조사했다. 상위 그룹에 속하는 사람들은 1.7배 넓은 공간에서 일했다. 상위 그룹 사람들은 작업 환경이 충분히 조용하다고 대답한 비율이 하위 그룹 사람들보다 2배 높았고, 개인적인 공간이라고 대단한 비율은 3배 이상 높았으며, 전화를 다른 곳으로 돌리거나 꺼 놓을 수 있다고 대답한 비율은 각각 4배와 5배 이상 많았다. 상위 그룹 사람들은 작업 중 다른 사람에 의해 불필요한 방해를 받는 비율이 하위 그룹의 절반에 불과했다.

Advertisements

“소프트웨어 개발 성과와 개인의 엔지니어의 역량과의 상관관계”에 대한 4개의 생각

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중