위대한 개발문화를 위하여

0

요즘 들어서 좋은 소프트웨어를 만드는 주요 요인으로 좋은 개발 문화를 이야기하는 경우가 많다. 이런 이야기를 들을 때마다
개발 문화가 무엇이길래, 소프트웨어의 품질을 좌지우지하는 것일까?라는 궁금증이 생긴다. 개발 문화가 중요하다면, 좋은 소프트웨어를
만들기 위해서 개발 문화를 좋게만 만든다면 모든 문제가 해결되는 것일까? 이 글은 단순하지만 답은 쉽지 않은 이 질문에 대한,
지금까지 나의 결론이다. 사실 결론이라고 말은 했지만, 어쩌면 이 글을 다 읽고 난 사람들은 새로운 의문이 생길지도 모른다.
그렇다 하더라도, 그런 의문과 의문에 대한 답을 찾아내는 과정이 여러분의 회사에 좋은 개발 문화를 조성하고 위대한 소프트웨어를
만드는 데 작은 보탬이 되었으면 좋겠다.

좋은 개발 문화를 이야기하기 전에 첫 직장에서의 경험담을 하나 소개하겠다. 오래 전에 내 블로그에서 소개한 적이 있는
일화다. 첫 직장 앞에는 넓은 화단이 조성되어 있었다. OJT 때 선배 사원이 그 화단을 횡단해서 다니지 말라는 주의를 주었다. 첫
직장에서는 통근 버스를 운행했는데 퇴근 시간에 맞춰서 나오면 버스 출발 시간에 맞추기가 빠듯했다. 그런데 그 화단을 가로 질러서
가면 시간을 상당히 많이 줄일 수 있었다. 그런데 그런 사람이 많았는지 화단을 무단횡단하다가 사장님의 눈에 띄면 좋지 않은
소리를 들을 수 있으니 조심하라는 게 선배의 조언이었다.

그 이야기를 듣고 며칠이 지났을 때 일이다. 여유 있게 나온다고 준비했는데 막상 회사 문을 나오고 보니까 버스 시간이
빠듯했다. 내 눈 앞에는 넓은 화단이 펼쳐져 있었다. 신입사원으로서 그 화단을 횡단하느냐 마느냐는 유혹에 시달리고 있었다. 그때
평소 안면을 트고 지낸 선배 사원이 내 옆을 지나서 화단을 유유자적 무단횡단했다. 선배 사원의 뒤를 쫓아서 나도 냉큼 화단을
무단횡단했다. 선배 옆에서 서서 넌즈시 물었다. 무단횡단하다 걸리면 안 좋은 소리 듣는다는 이야기가 있지 않냐고 말이다. 선배
사원이 내 질문을 받더니 원숭이 다섯 마리 이야기를 아냐고 물었다. 원숭이 다섯마리 이야기? 난 모른다고 답했다.

사용자 삽입 이미지

source:http://www.flickr.com/photos/9783357@N08/7065345079

원숭이 다섯 마리를 이용해서 간단한 실험을 했다고 한다. 우선 우리 가운데 기둥을 두고 그 기둥 위엔 바나나를 묶어두었다고
한다. 그리고 원숭이 다섯 마리를 그 우리에 가두었다고 한다. 원숭이들 중에서 기둥 위에 매달린 바나나를 발견한 놈이 재빠르게
기둥을 타고 올라서 바나나를 먹으려고 할 때, 실험자가 그 원숭이를 향해서 센 물살이 나오는 물대포를 발사했다고 한다. 물대포를
맞은 원숭이는 기둥에서 떨어졌지만, 다른 원숭이가 다시 시도한다고 한다. 마찬가지로 다른 원숭이가 바나나를 낚아채려고 할 때,
다시 한 번 물대포를 쏴서 원숭이를 떨어트렸다고 한다.

이게 몇 번 반복이 되면 원숭이들이 더 이상 바나나를 따 먹으려고 하지 않는다고 한다. 더 이상 바나나에 도전하는 원숭이가
나오지 않으면 원숭이 한 마리를 꺼내고 물대포를 한 번도 맞아보지 않은 원숭이로 바꾼다고 한다. 이때부터 재미있는 현상이 일어
났다고 한다. 새로 들어온 원숭이는 바나나를 발견하고 따먹으려고 하는데, 물대포를 맞은 원숭이들이 이 원숭이를 한사코 말린다고
한다. 새로운 원숭이는 몇 번 시도하다가 무리의 제지를 받고 기둥 위를 오르려고 하지 않는다고 한다.

이런 식으로 물대포를 맞은 원숭이를 하나씩 바꾸면, 우리엔 물대포를 한 번도 맞아보지 않은 원숭이들로 가득 찬다고 한다.
그런데 흥미로운 건 이런 원숭이들이 물대포를 한 번도 맞아 보지 않았지만, 모두 기둥 위에 매달린 바나나를 따먹으려고 하지
않는다. 선배에게서 그날 들은 이야기는 상당히 충격적이었다. 그리고 그 이후로 직장문화나 조직문화, 개발문화 같은 것에 대해서
이야기하거나 생각할 때면 선배와 함께 금단의 화단을 횡단하며 들었던 원숭이 다섯 마리 이야기가 생각난다.

이 이야기가 신선하기는 하지만, 사실 누구나 한 번쯤 겪어보는 경험담을 원숭이를 통해서 재확인했다는 생각이 들 것이다. 즉
새로운 조직에 들어갔을 때 흔히 듣는 이야기나 충고가 여기에 해당한다. 새로운 조직에 들어가서 새로운 아이디어나 일하는 방법을
바꿔 보자고 제안을 하면 듣게 되는 이야기와 비슷하다. 말하자면, “짝 프로그래밍 해봤는데, 잘 안되더라고.” “코드 검토
해봤는데, 시간 낭비야.” “요구사항을 정리해도 결과는 똑같아” “그런 식으로 UI를 구성하면 사용자들이 싫어하더라고.”

물론 이런 이야기를 하는 사람 가운데 자신이 직접 경험해 보고 나서 하는 경우도 있지만, 물대포를 한 번도 맞아 보지 않은
원숭이가 동료 원숭이들의 만류에 기둥을 오르기를 포기한 것처럼, 조직 구성원의 이야기만으로 새로운 아이디어나 방법론을 구현하거나
적용해 보기를 포기한 경우도 많다. 우리는 흔히 이런 분위기가 팽배한 조직을 조직문화가 나쁘거나 개발문화가 부실하다는 평가를
한다. 사람이 자산의 전부라고 할 수 있는 개발회사에, 이런 학습된 무력감이 만연하다며 그 끝이 뻔하다.

이런 부정적인 개발문화를 타파해서 혁신적인 소프트웨어를 만들기 위해서 어떤 방법을 취할까? 흔히 개발문화를 바꾸기 위해서,
소프트웨어 프로세스 개선을 많이 한다. 비싼 돈을 들여 외부의 프로세스 전문가를 불러 프로세스를 개선하는 경우도 있고, 프로세스
개선 팀을 회사 내부에 만들어서 개발 팀의 프로세스를 고치는 경우도 있다. 이런 식의 해법을 찾는 이유는, 소프트웨어를 만드는
방법을 개선한다면 소프트웨어의 품질도 좋아질 것이라는 아이디어에 기초한 것이다. 이런 방법이 성공할 때도 있지만, 대개 원하는
결과에 미치지 못하는 경우도 많다. 왜 그럴까?

낙후된 문화 때문에 개발이 더딘 원주민들에게 선교사와 같은 사람들이 찾아와서, 당신들이 못 사는 것은 사는 방식이 잘못됐기
때문이라고 진단을 내린다. 그리고 삶의 방식을 바꾸는 매뉴얼을 만들어 주고, 그 매뉴얼대로 산다면 부자나라 대열에 낄 수 있다는
말을 남기고 자신들의 나라로 돌아간다. 매뉴얼을 받은 원주민 가운데 일부는 매뉴얼대로 살려고 노력하고 일부는 배부른 소리하고
있네,란 생각으로 원래 살던 대로 산다. 시간이 흐르면서 잘해보려고 하는 원주민들도 원래 삶을 고수하는 원주민들 때문에, 뭔가
바뀌는 것 같지 않아 포기하고 만다. 결국 선교사들이 남긴 매뉴얼은 저녁 식사를 위한 땔감으로 사용된다.

원주민과 선교사의 비교가 조금 지나친 감은 있지만, 우리가 흔히 프로세스 개선으로 얻게 되는 결과와 유사한 점이 많다. 물론
프로세스 개선을 지속적으로 하다 보면 깨우침을 얻는 원주민들이 늘어나 문화가 조금씩 바뀌기는 하지만, 그 변화의 속도가 매우
느리다. 왜 그럴까?

모든 변화의 근본적인 동기는 조직이나 개인의 안에서 나와야 한다. 흔한 자기 계발서에 나오는 이야기와 유사하지만, 현실이
그렇다. 아무리 좋은 프로세스, 방법론을 가져다 개발자들에게 설명한다고 해도 개발자가 실천하지 않으면 그만이다. 특히 오랜 시간
동안 학습된 무력감이 조직문화로 굳어진 개발회사에서, 외부에서 주어지는 계기로 무언가를 바꿔보려면, 조직의 관성을 이겨내야 한다.
그래서 외부의 전문가가 참여하는 프로세스 개선은 그다지 도움이 되지 않는다. 그렇다면 이런 조직에서 개발문화를 바꿔 보려면
어떻게 해야 할까?

개발자, PL, PM, 프로세스 컨설턴트로서 지난 직장생활 경험을 봤을 때, 개발 문화의 변화는 중간관리자가 가장 잘 주도할
수 있는 걸 체험했다. 팀원이나 일반 개발자일 때 변화의 바람은 개인의 울타리를 넘어서기가 힘들다. 말하자면 도전적인 원숭이
하나가 기둥 위에 달린 바나나를 먹을 수 있을 것 같은데, 대장 원숭이와 동료 원숭이가 쌍수를 들고 말리는 형국이다. 이런
조직적인 저항을 이겨내기란, 개인으로서 쉽지 않다.

하지만 울타리 안의 원숭이들을 움직일 수 있는 대장 원숭이라면 이야기가 달라진다. 원숭이들에게 미시적인 비전을 제시하고
구체적인 행동 지침을 내려 장기간 문화의 형태로 축적된 학습된 무력감을 이겨낼 수 있다. 대장 원숭이로서, 팀원 원숭이들에게
바나나를 혼자 힘으로 따 먹을 수 없지만 같이 힘을 합치면 가능하다는 미시적인 비전을 제시한다. 그리고 조직적으로 바나나를 따먹을
수 있는 전략을 도출한다. 예를 들자면 여럿 원숭이가 동시에 기둥을 올라서 물대포의 사선(fire line)을 분사시킨 후,
그중 가장 재빠른 원숭이가 바나나를 탈취해 내려오는 작전을 구상하고 실천에 옮기는 것이다. 만약 이런 성공경험을 우리 안에
원숭이들을 하게 된다면, 그들은 장기간에 걸친 패배주의적인 문화를 극복하고 더 나은 도전을 할 수 있을 것이다.

하지만 이런 변화는 우리 안에 원숭이들에게만 국한된 것이다. 다른 우리에 갇힌 원숭이들에게 이런 성공 체험을 전파하고 전체
원숭이 사회의 문화로 자리 잡기 위해서는 반드시, 우리를 넘어서는 지식 전파가 필요하다. 말하자면 우리 안의 성공은 개발회사로
치자면 하나의 부서나 하나의 프로젝트 팀에 해당한다. 이런 팀과 부서 내에서의 미시적인 성공이 조직 전체로 퍼져 나가기 위해서,
원숭이들을 조직화하고 움직일 수 있는 능동적인 다수의 대장 원숭이와, 그런 대장 원숭이를 등용할 수 있는 왕 원숭이가 필요하다.

지금까지 좋은 개발문화를 만들어내는 방법에 대해서 간단하게 살펴봤다. 그렇다면 이 글을 시작한 근본적인 질문, 좋은
개발문화를 갖고 있다면 좋은 소프트웨어를 만들어 낼 수 있을까?에 답을 찾아보자. 물론 좋은 개발문화를 갖고 있다고 해서 반드시
좋은 소프트웨어를 만들어내리라는 보장을 할 수 없다. 효율성과 효과성의 관점에서 봤을 때, 좋은 개발문화라는 효율성을 고도로
높이는 수단이다. 효율성이란 잘하는 것을 더 잘하는 것이다. 10을 들여서 10을 얻었다면, 효율성이 좋다는 건 1을 들여서
10을 얻는 것이다. 하지만 아무리 효율이 좋아 1원에 10개의 빵을 만들어내더라도 고객이 원하는 것이 맛있는 만두라면, 이
회사는 효과적이지 않은 것이다. 고객이 만두를 먹고 싶다는 걸 알아차리고 10원이 들더라도 1개의 만두를 만들어야 효과적인 전략을
구사한 셈이다.

좋은 개발문화를 갖고 있는 회사는 적은 노력으로 품질이 우수한 소프트웨어를 만들 가능성이 높다. 하지만 아무리 효율성 좋게
개발해서 제품을 만들었더라도, 시장이 반응하지 않는다면 그 회사는 좋은 개발문화를 갖추었지만 그다지 효과적으로 운영되지 않는
것이다. 이런 효과성의 문제는, 사실 이 글에서 다루는 주제가 아니다. 하지만 효율적으로 일하고 고객이 원하는 것에 많은 관심을
기울이려는 조직은, 더욱 효과적인 제품을 만들어낼 가능성이 높을 것이다. 이런 측면에서 보자면 좋은 개발문화를 갖고 있는 회사는
시장에서 장기적으로 위대한 소프트웨어를 만들어낼 것이다.

최근 들어 좋은 소프트웨어를 만들어내려면 좋은 인재를 양성해야 한다는 이야기를 많이들 한다. 실제로 이런 인력을 양성하기
위한 교육기관이나 프로그램도 많이 만들어지고 운영되고 있다. 그동안 인력난에 시달린 개발회사들에 반가운 소식이 아닐 수 없다.
하지만 이런 생각도 든다. 우리나라에 세계에 자랑할만한 소프트웨어가 많이 나오지 않은 이유가 단순히 인력이 부족했기 때문일까?
그동안 배출된 개발 인력을 잘 활용한다면, 정부나 기업에서 원하는 좋은 소프트웨어를 만들어낼 수 있지 않았을까?

결국 이런 질문을 하다 보면, 개발 문화의 중요성에서 그 해답을 찾게 된다. 학습된 무력감에 시달리는 조직 안에 있다 보면
대다수가 어느새 패배감에 젖어 든다. 하지만 그런 문화를 만든 것은 결국 개인의 합이다. 하지만 반대로 그런 문화를 타파하고
혁신을 이룰 수 있는 것도 개인에서 출발한다. 물론 패배주의에 빠진 조직 문화를 바꾸는 게 가능하다고 하지만, 적지 않은 노력과
시간이 필요하다. 낙후된 조직문화에 아무리 능력이 출중한 인재를 투입한다고 해도, 그렇게 모두가 원하는 좋은 소프트웨어를 얻을 수
없다. 그래서 개발 문화가 중요하다고 말했다.

결국 이 글을 끝까지 읽은 여러분이 개발문화의 중요성에 동의를 한다면, 어쩌면 이 생각에도 동의할지 모른다. 정말 위대한
개발 문화를 갖춘 회사라면 아주 평범하거나 역량이 부족한 개발자들로도 위대한 소프트웨어를 만들 수 있어야 한다. 어쩌면 뛰어난
인재로 뛰어난 소프트웨어를 만들어내는 것은, 위대한 회사가 아니라 평범한 회사도 할 수 있는 게 아닐까 한다. 결국 평범한
회사에서 위대한 회사로 변하는 그 중심에는, 위대한 개발문화가 꼭 필요하다는 뜻이다.

글: 신승환

출처: http://www.talk-with-hani.com/archives/1551

About Author

/ root@talk-with-hani.com

신승환은 소프트웨어 개발, 프로젝트 관리, 프로세스 컨설팅 등의 업무를 십 년간 수행했으며, 현재는 차량용 임베디드 소프트웨어를 만들고 있다. 읽은 것과 생각한 것을 블로그(http://talk-with-hani.com)와 트위터(http://twitter.com/talkwithhani)에 꾸준히 남기려고 노력한다. 지은 책으로는 '시지프스를 다시 생각하다',‘겸손한 개발자가 만든 거만한 소프트웨어’와 ‘도와주세요! 팀장이 됐어요’가 있으며, 다수의 IT서적을 번역하였다.

MS  httpwwwventuresquarenet
MS  httpwwwventuresquarenet
MS  httpwwwventuresquarenet
MS  httpwwwventuresquarenet
MS  httpwwwventuresquarenet
MS  httpwwwventuresquarenet
MS  httpwwwventuresquarenet
MS  httpwwwventuresquarenet
MS  httpwwwventuresquarenet