2009년 4월 27일

스티브 맥코넬의 바보들의 황금


소프트웨어 문제점들이 지속된 이유 중 하나는 일부 비효율적인 기법들이 겉으로 보기에는 매력적이라 것이다. 과거 골드러쉬 동안 일명 바보들의 황금이라 불리는 황철금에 속았던 투기꾼들 처럼 소프트웨어 개발자들은 바보들의 황금이 떨치는 유혹에 넘어갔다.

거대한 바위를 옮기는데 어떤 팀은 그냥 밀기 시작한다. 어떤 팀은 무작정 바위를 옮기려고 하지 않고 먼저 옮길 방법을 고민하고 나무를 베어 굴림대로 사용하기로 한다. 조금 더 현명한 팀은 잘 닦인 길과 통나무 굴림대를 가지고 바위를 움직이기 시작한다. 이 부분에서 이야기하고자 하는 것은 아무 생각 없이 일을 시작하는 것 보다 우선 계획을 세우고 그 일에 대한 생각을 해본 뒤에 효율적인 방법으로 일을 하는 게 빠른 시간에 일을 끝낼 수 있다는 것이다. 출발점을 빨리 떠났다고 해서 결승선에 빨리 가까워지는 것은 아니다.

소프트웨어를 개발하는 것도 이와 같아서 전체 소프트웨어 개발 팀중 75%는 무작정 바위를 밀면서 프로젝트를 시작한다. 이러한 개발방식을 "일단 작성하고 고쳐보는 개발"이라고 한다. 계획이나 설계 없이 바로 코딩으로 들어가는 것이다. "일단 작성하고 고쳐보는 개발"의 매력은 실행즉시 진척상황을 파악할 수 있고 효과적인 프로젝트 진행을 위한 어떠한 준비 및 훈련도 요하지 않는 다는 것이다. 그러나 거대한 바위를 옮기 것처럼 출발점을 빨리 떠났다고 해서 결승선에 빨리 가까워지는 것은 아니다.

"일단 작성하고 고쳐보는 개발"에 익숙한 개발자들은 테스트나 기술 리뷰를 불필요한 부담이라고 하지만, 품질을 버리고 비용이나 시간을 줄이려는 시도는 대부분 비용을 높이고 일정을 늘리기만 한다. 결함은 일찍 제거할 수록 좋은 효과를 얻는다. 결함 제거를 통하여 좋은 효과를 기대할 수 있는 프로젝트에서 비용이나 일정을 품질과 맞바꾸려는 시도는 겉으로 보기엔 매력적이지만 실제적으로 전혀 쓸모 없는" 바보들의 황금"일 뿐이다. 터무니 없이 생산성을 높일 수 있다고 자랑하는 새로운 기술들과 몇몇 방법론들을 은빛 총알(Silver Bullet)이라고 부른다. 이러한 새로운 혁신들은 마술도 아니며 쉽지도 않다. 적절한 훈련을 거치고 현실적으로 이루어질 수 있는 기대를 하면서 프로젝트 성격에 맞는 혁신을 일으킬 때만이 장기간에 걸친 전략으로써 의의를 갖는다. 벼락부자가 되려는 마음으로 그것을 적용하려 들면, 혁신은 "바보들의 황금"이 되어버린다.

하드웨어 는 일단 만들고 나면 바꾸기 어렵다는 점에서 하드하며 소프트웨어는 바꾸기 쉽다는 점에서 소프트 하다고 알려져 있다. 그러나 소프트웨어 시스템이 점점 더 복잡해짐에 따라 이러한 믿음은 소프트웨어 개발에 있어 오히려 해약이 되었다. 소프트웨어 역시 더이상 변형할 수 없는 부분이 존재하게 된다. 이러한 문제를 해결하기 위하여 가능한 확장 가능한 형태로 설계하는 문제는 비용과 직결된다. 유연성과 비용의 균형을 맞추어 어느 정도 하드하게 또는 소프트하게 만들지를 결정하는 것은 어려운 문제이다.

마지막으로 겉으로 보기엔 매력적이지만 실제적으로 전혀 쓸모 없는 "바보들의 황금"을 가려내기 위하여 스티브 맥코넬은 소프트웨어의 특성들을 아래와 같이 정리하고 있다.

프로젝트의 성공은 프로젝트 초기에 얼마나 빨리 코딩하는가에 달려 있지 않다. 생명에 관련된 시스템을 만들지 않는 한, 결함의 수를 비용과 프로젝트 일정과 맞바꿀 수 없다. 결함 개수에 초점을 맞춘다면 비용과 기간에 걸린 문제는 자연히 해결될 것이다. 은빛 총알은 프로젝트에 유해하다. 어쨌거나 업계의 역사를 볼 때 기업에서는 끊임없이 새로운 은빛 총알을 제안하겠지만 말이다. 건성으로 프로세스를 개선하려는 것은 특히나 더 위험한 일이다. 이 경우 은빛 총알이 오히려 미래에 있을 개선 시도를 갉아먹게 된다. 이름에도 분명 소프트라는 단어가 들어 있는 데도 불구하고, 소프트웨어는 소프트하지 않다. 그리고 소프트웨어를 소프트하게 하기 위해서는 비용이 든다.

댓글 없음:

댓글 쓰기