2009년 5월 12일

화물숭배 소프트웨어공학



richard-feynman.jpg
이미지출처 : www.codeforsomething.com

아인슈타인 이후 최고 천재로 평가되었던 미국의 물리학자 리차드 파이먼 교수가 1974년 캘리포니아 공대 학위 수여식에서 행한 연설의 일부이다.

예전에 남태평양 어떤 섬에는 화물 숭배라는 종교를 믿는 사람들이 있었다. 당시에 섬 하늘에는 전쟁 물자를 수송하는 비행기들이 많이 다녔고, 섬 사람들은 비행기를 신의 전령이라 믿었다. 그들은 언젠가 신이 자신들에게도 비행기에 엄청난 물자를 실어 보내줄 것이라고 생각했다. 그래서 비행기가 섬으로 착륙할 수 있도록 활주로 비슷한 것을 만들기 시작했고, 활주로 좌우에는 유도등처럼 불을 피워 놓았다. 또 사람이 들어와 앉을 수 있도록 관제탐 같은 통나무 집도 만들었고, 대나무를 깎아 안테나처럼 달아 놓았다. 그 안에서 나뭇가지를 헤드셋처럼 묶고 앉아, 비행기가 착륙하기만을 하염없이 기다렸다. 그들은 이전에 다른 곳에서 본 진짜 활주로의 모습을 재현했다. 적어도 그 형태만큼은 완벽했다. 그러나 비행기는 오지 않았다. 나는 섬 사람들이 "과학적인 연구의 형태와 지침"을 따르기 때문에, 이것을 화물 숭배 과학이라 부른다. 그들은 뭔가 중요한 것을 잊고 있음이 분명했다. 왜냐하면 비행기가 한 대도 오지 않았기 때문이다.

파인먼은 소위 과학자들 가운데서도 과학적 방법의 모든 형식은 갖추었지만 존경이나 지원할 가치라고는 조금도 없는 유사과학(pseudo-science)이 있음을 지적하며, 이를 화물 숭배 과학이라 하였다. 그는 또한 정직함과 성실성이 결여된 과학을 화물 숭배와 다를 바 없는 유사과학으로 규정하여 크게 주의할 것을 당부하였다.

그의 연설 가운데 가장 놀라운 것은 정직한 과학을 위한 제1원칙으로 "스스로를 속이지 말라"는 원칙을 제시한 것이다. 그는 세상에서 가장 속이기 쉬운 것은 자기 자신이며, 자신을 속이지 않는다면 다른 과학자들을 속이지 않는 것도 쉬운 일이라고 하였다. 실험 결과가 유명 과학자의 논문에서 참조한 결과와 다를 때 별다른 가책 없이 자신의 실험 결과를 무시하고 참조한 결과를 존중한다든지, 예측된 결과와 일치하는 실험 결과만을 논문에 포함시키고 다른 결과의 발생 자체를 언급하지도 않는 행태 등은 스스로를 속이는 대표적인 부정직함의 사례일 것이다.

스티브맥코넬은 "프로페셔널 소프트웨어 개발" 에서 소프트웨어공학에서도 화물숭배 현상이 있음을 지적한다.

소프트웨어 개발 방식에는 잘 짜인 계획, 잘 정의된 프로세스, 효율적인 시간사용, 오랜 경험을 통해 좋다고 판명된 소프트웨어 공학 기법들을 적용하여 프로젝트를 성공시키는 "프로세스 기반 개발"과 해당 분야의 최고 인재를 고용하고 전권을 위임을 통하여 동기를 부여하는 "책임 기반 개발" 있다.

이 두 개발 방법은 각각 현명하게 사용한다면, 비용을 절감하고 개발기간도 단축하면서 품질 좋은 소프트웨어를 만들어 낼수 있다. 그러나 두가지 방법다 완벽하게 실행되기는 어렵고, 제대로 수행하고 있는 지 알아내기도 어렵다. 그러나 대부분의 조직은 문제의 본질이 아닌 흉내내기에 머문다.

"프로세스를 중시한다고 사칭하는 조직"을 "관료조직"이라고 부른다. 이들은 소프트웨어 프로세스의 형태를 그 본질보다 더 중요하게 생각한다. 프로세스를 잘못 사용하면 오히려 개발자들의 사기가 떨어지고, 생산성도 저하된다.

"책임을 중시한다고 사칭하는 조직"을 착취조직이다 부른다. 이들은 결과(긴 근무시간)와 원인(높은 동기부여)을 혼동한다. 이런 조직에서는 직원들이 똑똑하게 일하는 것보다는 그냥 열씸히 일하는 것을 최고로 친다. 당연희 무질서하고 비효율적이다.

즉 문서화를 위한 문서화, 초과근무를 위한 초과근무, SW-CMM에 대한 비굴할 정도의 집착, 무비판적인 RUP나 eXtreme Programming 수용 등 본질보다 형식을 더 강조하는 모든 행위들은 화물숭배 소프트웨어공학이다.

댓글 없음:

댓글 쓰기