[2부 2번 수필] 소프트웨어 오류에 대한 단상
아키텍처 - 설계 - 구현에 이르기까지 한치의 실수도 없이 한 달음에 끝내야 한다고 주장하는 사람들을 종종 만나곤 한다. 주로 하드웨어 부문에 있는 사람들이 이런 방식의 일처리에 익숙한데, 심지어 소프트웨어 개발에 6시그마와 같은 방법을 사용하려는 욕망을 드러내기도 한다.
소프트웨어 오류에 대해 우리가 과연 어떤 식으로 대응해야 할까? 로버트 L 글래스 큰 형님께서는 다음과 같은 주장을 통해 사람의 중요성을 강조한다.
소프트웨어 오류 제거에서 가장 중요한 요소는 제품 특성이나 프로세스 특성이 아니라 올바른 사람의 선택이다.
200% 동감이 가는 말이다. 방법론이 아무리 뛰어나고 지원 도구가 아무리 우수하면 뭐하나? 결국 오류를 찾아내는 사람이 가장 중요한 말이다.
여기까지야 너무나 많이 떠들어온 이야기라서 식상하기 일보직전일테다. 그렇다면 여기서 말하는 올바른 사람들의 특성이 무엇일까? 로버트 L. 글래스 큰형님에 따르면 다음과 같은 놀라운 사실이 밝혀진다.
우수한 사람들이 '나쁜'사람들 보다 잘못 시작하는 경우가 많다는 사실을 발견했다. 즉, 좋은 소프트웨어를 만들려면 적어도 생명 주기 포반에는 시행착오를 거치면서 불가피하게 '오류'가 생긴다는 뜻이다. 그러므로 모든 오류가 무조건 나쁘지만은 않다.
자전거를 처음 배울 때 넘어지지 않고 배울 수 있다면 얼마나 좋겠느냐만, 세상에 공짜 점심은 없다. 제대로 훈련받은 공학도라면 초반에 저지른 오류를 후반에 다시 저지르지는 않을테니, 차라리 출시 직전에 대박(?!)을 터트려 제품 전체를 위험하게 만드느니 초반에 이런저런 온갖 실수를 다 저지르도록 정책적으로 배려해줄 필요가 있다. 개발자를 믿고 신뢰하면 그 만큼 돌아오는 몫이 크다.
요즘 들어와서 초반부터 꽉 짜여진 틀에 따라 정확하게 소프트웨어를 만들어야 한다고 윽박지르는 관리자를 볼 때마다 화가 나기 보다는 연민의 정이 느껴진다. 소프트웨어 제작을 공장 컨베이어 벨트에서 진행하려는 이런 시도 때문에 소프트웨어 산업이 3D화 되고 있지 않은지 반성해볼지어다.
"소프트웨어 컨플릭트 2.0: 시대를 뛰어넘는 즐거운 논쟁" 역자 박재호




