화두, S/W Engineering의 필요성
Thursday, July 20th, 2006화두 : 불가의 수행자가 깨달음을 얻기 위해 참구(參究)하는 문제.
from naver 백과사전
오늘 한 시간동안 S/W Engineering에 대해서 Presentation을 했습니다. 끝날 무렵 한 분이 “S/W Engineering이 왜 필요하죠?”라는 질문을 하시더군요. S/W Engineering 관련해서 Presentation을 하거나, 필요성에 대해서 이야기를 할 때면 항상 듣는 질문이기 때문에 자동으로 대답해 드렸습니다.
“좋은 품질의 S/W를 더 쉽고 더 빠르게 만들기 위해서죠.”
형이상학적이고 복잡하게 답을 할 수 있었지만, S/W Engineering을 하는 목적은 위의 한 문장으로 요약될 수 있습니다. 질문하신 분의 표정을 보니, 제 질문에 그다지 만족하신거 같지 않더군요. 역시나 제 답변이 마음에 들지 않으셨는지, 다른 질문을 하셨습니다.
“그럼 S/W Engineering을 하지 않으면 좋은 품질의 S/W를 만들 수 없나요?”
이 질문을 듣자, 갑자기 머리 속에는 어릴 때 많이 했던, 그리고 지금도 해변에 놀러 가면 한번씩 해보는 모래성 게임이 생각났습니다. 모르시는(?) 분을 위해서 이 게임에 대해서 간단히 설명 드리겠습니다. 모래성을 쌓고 가운데 나뭇가지 꺾은 것을 꽂아 두고 사람들이 돌아가면서 모래 한 줌씩 가져갑니다. 결국 가운데 꽂아 둔 나뭇가지를 쓰러뜨린 사람에게 피의 응징이 가해지는 단순하지만, 재미있는 게임이죠.

Presentation할 때는 생뚱맞게 이 게임이 왜 생각났는지 알 수가 없었습니다. 질문하신 분이 애타게 대답을 기다리셨기 때문에, 모래성 게임 생각은 잠시 접고 질문에 적당한 답을 찾았습니다.
“S/W Engineering을 하지 않아도 품질 좋은 S/W를 만들 수 있습니다. 그러나 S/W Engineering을 제대로 적용한다면, 적용하지 않았을 때보다 좋은 품질의 S/W를 얻을 수 있습니다.”
제 대답에 만족하셨는지는 모르겠지만, 그분은 더 이상 질문하지 않으셨습니다. 돌아오는 길에 Presentation을 할 때 모래성 게임이 생각난 이유를 곰곰히 생각해 봤습니다. 모래성 게임에서 보통은 다음 사람을 술래로 만들려고 나뭇가지가 쓰러지지 않을 만큼 흙을 가져 옵니다. 다음 사람도 운이 좋다면 술래가 되지 않을 수 있지만, 적어도 내 차례는 오지 않을겁니다.
나뭇가지를 지지하고 있다는 측면에서, 모래성을 구성하고 있는 모래 가운데 99%는 의미가 없습니다.(그러나 이 게임을 게임답게 만들기 위해서는 99%의 모래가 있어야 합니다.) 마찬가지로 처음 질문의 대답으로 드렸던 “좋은 품질의 S/W를 더 쉽고 더 빠르게 만들기 위해서”라는 목적에서 봤을 때, S/W Engineering의 많은 방법론, 기술은 모래성의 나머지 모래와 같지 않을까라는 생각이 들더군요.
그런데 이 생각은 제가 이 블로그에서 손가락에 힘주어서 타이핑했던 수 많은 기술과 방법론을 한 줌 재로 산화시켜 버릴만큼 위험합니다. 마치 S/W Engineering 무용론을 주장하는 것처럼 보일 수 있기 때문입니다. 그러나 인생의 나침반을 S/W Engineering으로 결정하면서 제 자신과 했던 다짐이 있었습니다.
“S/W Engineering을 위한 S/W Engineering은 하지 말자”
S/W Engineering이 극단으로 치달으면, 전형적인 관료주의가 될 수 있습니다. 이런 관료주의를 옆에서 지켜 보기도 했고, 관료주의의 희생양이 되기도 했습니다. 그렇기 때문에 인생의 목적을 S/W Engineering으로 결정했을 때는 제 자신이 관료주의로 치닫는 것을 막기 위해서, S/W Engineering이라는 범주 안에서 행해지는 활동들이 S/W Engineering의 진짜 목적에 얼마나 부합하는지에 대해서 항상 고민해야겠다는 생각 했습니다.
그리고 이런 맹세를 지키기 위해서, S/W Engineering 인생을 각성하게 만들어 주는 화두 하나를 정했습니다. 이 화두가 “S/W Engineering을 왜 해야 하지?”였습니다. 바로 오늘 받았던 질문입니다. 그러나 습관적으로 적용하는 S/W Engineering 기술들 속에서, 오랜 시간이 지나지 않았는데도 화두는 Presentation 때 받는 일상적인 질문에 반성없는 답변이 되어 버렸습니다.
따라서 화두를 잊어버리고 살았던 삶에 대한 무의식적인 반성으로 모래성 게임이 생각난 듯 합니다. 제가 이 블로그에 썼던 많은 S/W Engineering 이야기는 그 나름 가치가 있고 주의 깊게 사용한다면 효과를 얻을 수 있습니다. 다만 반성 없이 적용하고, 생각없이 따랐을 때는 본연의 목적을 잃어 버리고, 나무가지를 지탱하는 1%의 모래가 아닌, 의미없는 99%의 모래가 되어 버립니다. 따라서 S/W Engineering이 개발자를 위협하는 프랑켄슈타인이나, 억압하는 관료주의가 되지 않기 위해서는 끊임없는 자기 반성이 필요합니다.
그럼으로 우리가 본질이라고 믿는 것을 지키기 위해서는 본질적이지 않은 것을 희생할 수 있는 전문가다운 화두 하나를 항상 가슴에 담고 있어야 합니다.


