brunch

You can make anything
by writing

C.S.Lewis

by 문현구 YPER 대표 Jan 04. 2016

관리자급 개발자가 되기 위한 자세

나는 개발자 출신 CEO다.

베이직, 포트란을 배우며 자라 컴공과를 거쳐 개발자로 사회 생활을 시작했고, 대기업에서 개발 관리, 서비스 기획, 신사업 기획을 하면서 차츰 개발의 때를 벗었으며, 올해부터는 스타트업 CEO를 하고 있으니 차근차근 개발자에서 관리자로 성장했다고 볼 수 있겠다.

이 과정에서 나는 완전한 의식 구조의 변화를 경험할 수 있었다. 특히 대학원에서 인공지능을 전공하며 인지과학, 뇌과학의 지식을 쌓고 도킨슨의 진화론, 최근엔 아들러의 열등감에 대한 심리학적 관점을 갖게 되면서 내 자신을 더욱 잘 분석할 수 있게 되었다.

많은 개발자들과 이야기를 나눠보면 그들이 10년전에 내가 가지고 있던 전형적인 사고방식으로 대화한다는 것을 느낄 수 있다.

우리나라 개발자에게 비극적인 사실은 사회에 나오기 전에 받아야 할 인문/사회학적 소양과 자아 정체성을 찾기 위한 연습이 선진국에 비해 턱 없이 부족하다는 것이다. 나처럼 대기업에서 여유 있게 단계적으로 범주를 확장해 보지 않는 이상, 시간이 비용인 개발자의 특성 상 사회에 나와서 그런 교육을 받기는 현실적으로 불가능하다. 학교가 그것을 이미 키워줬어야 했는데, 아쉽게도 우리의 제도권 교육은 그저 피라미드 하단의 모범적 일꾼을 만드는 주입식 연습일 뿐 리더나 사회인으로서의 소양을 심어주는 데는 관심이 없다는 게 문제다.

나는 이 글을 통해서나마 나의 후배 개발자들이 자신의 뇌가 어떤 특징을 가질 수 있는지 이해하고, 삶을 살면서 가끔씩은 개발자 모드를 벗어나는 연습을 할 수 있길 바란다.


개발자의 의식구조는 다르다


중요한 깨달음을 먼저 말하자면, 시스템이 어느 정도 이상의 수준을 넘어 서면 더 이상 기존의 논리와 알고리즘으로 설명할 수 없는 복잡계로 접어들게 된다는 것이다. 우리가 만드는 소프트웨어를 벗어나면, 하다못해 친구와 나와의 관계 하나만으로도 이미 단정지을 수 없는 복잡성이 펼쳐진다.

세상이 엄청나게 복잡하다는 것, 너무나 당연해 보이지만 이 사실이 이야기의 중요한 시작점이 되겠다. 왜냐면 개발자가 훈련하는 소프트웨어 영역의 뇌 근육과 복잡계를 다루는 사람의 뇌 근육이 여기서 극명하게 갈리기 때문이다. 인간의 뇌도 근육과 같아서 자신의 직업에 따라 모든 사고방식이 한쪽으로만 발달해 엄청난 연습 없이는 쉽사리 바뀌지 않는다.

젊은 시절 새벽까지 코딩 할 때의 내 머리 속이 생각난다. 발생할 수 있는 수많은 조건을 생각하고 if, case문 뒤로 코드를 짜 넣으며 내 자신의 치밀함에 뿌듯해 했었다. 컴파일러가 에러를 다 잡아 준다면 결과는 정직하다. 중요한 건 내가 만든 로직이 제대로 작동하느냐이고 로직만 정확하다면 결과는 단 하나였다. 그때까지 나의 뇌는 정확한 논리와 빠른 판단, 그리고 그 결과에 대한 확신을 갖도록 훈련되었다.

그렇게 훈련된 나의 뇌의 특징이 지금과 극명하게 다른 점이 하나 있다. 바로 “가능영역 탐색 완료”라는 신호이다. 개발자는 발생할 수 있는 모든 경우를 코드에 다 짜 넣도록 훈련된다. “가능영역 탐색 완료”라는 신호가 없이 완료된 코딩은 반드시 에러를 유발한다는 것을 알고 있다. 그래서 else문이나 예외처리를 통해서라도 모든 영역을 다 탐색했노라고 스스로에게 확인시킨다. 

문제는 개발의 영역에서는 그렇게 모든 “가능영역의 탐색”이 가능하고 또 그것이 필요로 한 반면 코드 밖의 세상에선 “가능영역 탐색 완료”라는 신호를 쉽게 발생시켜선 안 된다는 것이다. 사회, 정치, 인간의 감정 등의 영역은 절대로 탐색 범위가 유한하지 않다. 그리고 예외 처리를 통해 단순히 에러 메시지만 출력할 수 있는 것도 아니다.

이 차이는 대단히 중요한데, 사고방식의 심각한 문제를 발생시키기 때문이다. 코드의 영역 밖에서 “가능영역 탐색 완료”를 빠르게 도출하는 건 일종의 뇌의 노화와 관련 있다. 나이든 사람들이 고집이 세고 정치적으로 완고한 이유가 있다. 그건 인간의 뇌가 어느 정도 나이가 되면 ‘더 이상 배울 수도 없고 배워서도 안 되는 상태’가 되기 때문이다.

사람은 열등감을 극복하도록 성장하게 되어 있다. 어느 정도 나이가 되면 그 동안의 경험과 확신을 통해 자신이 충분히 알고 있다고 인정하고 그를 통해 자신의 판단에 대한 효율성을 높이려 하는 경향이 있다. 그리고 배운다는 것은 자신이 부족하다는 것을 인정하는 행위가 된다. 그래서 나이에 대한 콤플렉스와 사회적 지위에 민감할수록 내가 모른다는 것을 용납하기 힘들어진다. 따라서 인간의 뇌는 시간이 지날수록 “가능영역 탐색 완료” 신호를 보냄으로써 확신을 통한 빠른 추진력과 자존감을 확보한다.

문제는 개발자에게는 그 시기가 너무 빨리 온다는 데 있다. 개발자로 대기업에 들어가 괴짜로 불리는걸 즐기며 내 주장을 단정적으로 말하고 다녔던 사회 초년을 생각하면 어설퍼도 한참 어설펐다. 열정이나 있었기에 그나마 인정 받고 다녔지 그것도 없었다면 제대로 무시 당했을 인간이 나였다. 개발자라면 많은 사람이 그런 성향을 가지고 있을 것이다. 그리고 그런 성향은 코딩 할 때 분명 바람직하다. 하지만 소프트웨어 영역 밖으로 나와서 타인과 소통할 때는 모드를 바꿔야 한다. 내가 구축한 조직의 틀이 나에게 맞춰져 있고 나의 사회적 영향력이 충분하기도 전에 “가능영역 탐색 완료”를 자꾸 출력하지 않도록 주의해야 한다. 다시 말하지만 소프트웨어에서 복잡계로 넘어가는 순간 세상의 정답은 존재하지 않고 오직 현재적인 대안만 있을 뿐이다.

따라서 우리는 확정적이고 완결형 답을 내는 자세에서 관계 지향적이고 범주를 벗어난 대화 형식으로 쉽게 모드를 전환할 수 있는 연습을 해야 한다. 그리고 그것이 개발자로 성장하더라도 관리자급 개발자가 되는데 필요한 자질이다.


관리자급 개발자의 자질


“이건 이게 한계입니다”, “이 가격으로는 이것 밖에 안됩니다”, “안 되는 이유가 있습니다”, “돈을 더 주면 됩니다” 등등은 모두 완결형이다. 그리고 꼰대들이 말하는 “해 봤어?” “이것이 최선입니까?” “다른 방법이 있지 않을까?”하는 것들이 인정하기 싫지만 범주를 벗어난 대화 형식이다.

나는 실력 있는 개발자들이 자기가 경험한 것을 기반으로 자신의 생각이 옳다는 것을 일단 기정 사실화 하고 강하게 주장하려는 성향을 많이 보았다. 생각해 보면 어처구니 없는 일이다. 왜냐면 능력 있는 개발자일수록 오히려 자신이 경험했던 영역은 조직의 역할 면에서 보나 사회적 활동 반경에서 보나 지극히 협소할 수 밖에 없기 때문인데, 그들은 다른 사람이 경험한 영역을 보지 못했기에 마치 자신이 알고 있는 영역이 전부인 양 생각하는 듯 하다.

그냥 직업 전선에서 개발 보병으로 남아 전투에만 전념할 사람이라면 중요한 문제가 아닐지도 모른다. 하지만 자기 아래에 단 한 명이라도 두고 위 아래로 협업을 하는 자리에 서야 할 사람이라면 절대적인 진리란 없다는 걸 반드시 염두에 두어야 한다. 여기서 진리란 아래 사람, 윗사람, 그리고 내 동료가 협의하여 정하는 현재적인 가설일 뿐이다. 그리고 관리자가 해야 할 일은 진리를 고집하는 것이 아니라 가설을 검증하기 위해 열심히 협력하여 실천하는 것이다. 그래서 상대방의 의견을 존중하고 그와 나 사이의 생각을 조율하여 제3의 답을 찾아 내는 관계 지향적 사고가 필요한 것이다.

기계는 돈을 투입하고, 기름을 쳐 주면 잘 돌아간다. 모든 경영진이 그 정도는 다 안다. 돈 많이 주고, 개인의 연구 시간과, 좋은 카페테리아를 제공하면 개발자들이 더욱 충성할거라는 건 누구나 말할 수 있다. 그것은 오히려 기계적 관점에서 개발자를 바라본 것에 불과하다.

개발 관리자가 해야 하는 있는 일은 그게 아니다. 기계의 세상과 유기체 세상을 이어주는 가교 역할, 즉 서로 다른 언어를 쓰는 사람들 사이에서 통역의 역할을 하는 것이다.

1+1=2라는 완결형의 로직을 가진 사람이 1+1=3이 되어야 하는 범주를 벗어난 사람과 만났을 때, 어떻게 하면 3을 만들어 낼 수 있을지 개발자의 입장과 경영진의 입장에서 모두 고민하는 것이 진정한 능력이다. 그리고 죽으라고 고민하다 온갖 꼼수와 정치적 책략을 짜 내어 3을 만들어 내는 사람이 조직에서는 관리자로서 발전하고 연구 조직에서는 기술의 페러다임을 깨는 혁신가로 성장하게 되는 것이다.

내가 젊었을 때 그랬듯이 천상 개발자라면 1+1=2를 깬다는 것 자체가 치욕이고 변절일 것이다. 그래서 그토록 많은 대기업에서 잘나가는 개발 관리자가 변절자에 정치만 하는 무능한 사람이라는 욕을 듣고 있는 이유이기도 하다. 하지만 이것 하나만은 알아야 한다. 조직에서 잘 올라가는 사람은 당신이 생각하는 것만큼 조직에 해가 되는 사람이 아니다. 그만큼 조직에 필요한 것을 맞춰 주기 때문에 그렇게 올라가고 있는 것이다. 잘못이 있다면 조직의 본질적이고 궁극적인 업의 속성이 당신과 맞지 않는 것일 뿐, 스님이 절에 대해 불평하는 꼴이다.


개발자의 껍데기


대학교 때 홍삼 영업을 하던 외삼촌이 새로운 사업을 하시겠다고 부동산 중계 웹사이트를 만들어 달라며 내게 돈을 줬던 일이 있다. 기획서와 디자인도 없이 입력 내용과 출력 내용만 주고 본인이 생각하는 사업구상만 전달했으니 천상 개발자였던 내가 무엇을 만들었는지 이 바닥에 있는 사람들은 예상할 수 있을 것이다. 정말로 하얀 화면에 입력 폼과 출력 결과만 출력하는 사이트를 PHP와 mySQL로 뚝딱 만들어 놓고 돈 내 놓으라고 화를 냈었다. 외삼촌은 그래도 좋은 대학 다니며 배운 놈이니 나를 전문가로 생각해서 나를 통하면 서비스 하나쯤은 쉽게 만들 수 있을 거라 생각했을 텐데 말이다. 나는 그저 내 역할은 개발이니 사업과 기획, 디자인은 알 바 아니고 딱 주어진 것을 다 하면 그만이라는 아주 정직한 생각을 했던 거다. 나만 그런 게 아니라 개발자라면 대부분 자신의 영역을 한정시켜 놓고 그 안에서 답을 찾는 경향이 있다.

고객이 뭘 원하는지는 안중에도 없었던 내가 지금은 정부, 민간 투자를 받아 나름 혁신적인 손세차 O2O 사업을 하면서 스타트업 대표를 하고 있다. 정말로 그때와 내가 본질적으로 무엇이 달라졌는가를 묻는다면, “개발자일 땐 ‘what’만 생각하면서 확정된 결과물을 구축했다면 지금은 ‘why’를 생각하며 끝없는 답을 찾는 역할을 하고 있다”는 것이다. 그리고 그런 자세를 갖게 되면서 관리자가 되고 리더가 되어 가고 있다.

사업을 하다 보니 코딩만 잘하는 제대로 된 개발자 모시기 조차 힘들다는 걸 몸소 체험하고 있다. 확실히 소프트웨어 개발자는 기술자로서 자부심을 가져도 좋은 직업이다. 하지만 그로 인해 앞에서 언급한 직업병이 뇌에 발생할 수도 있다는 걸 염두에 뒀으면 좋겠다. 그건 일종의 조로현상이다. 설령 관리자가 아닌 코딩만 할 사람이라 해도 그런 현상이 빨리 와서 좋을 건 없다. PC 밖에도 인생의 많은 부분이 있기 때문이다.


지금까지의 이야기를 사업 조직에 맞게 내린 결론은 이렇다.

첫째, 코딩 밖의 영역에서는 내가 알고 있는 사실이 틀렸을 확률이 50% 이상이라는 점을 항상 염두에 두고 대화에 임해야 한다. 특히 조직, 인간, 사업, 비전 등 자신도 경험은 했지만 권위자가 아닌 영역의 대화를 나눌 때는 모드를 전환하여 확정적인 어법 보다는 제안적이고 의견을 묻는 형태가 바람직하다. 둘째, 문제가 발생하면 당신의 영역 안에서는 정답이 없을 확률이 많다. 만약 그 안에 답이 있다면 상대방도 그 정도는 알고 있다. 그러니 상대방과 내가 정답을 창의적이고 협력적으로 찾아 내는 게 중요하며 이때 필요한 것이 범주를 벗어난 사고이다. 셋째, 그 정답을 찾는 것도 핵심은 아니다. 그 정답을 실제 정답으로 만들기 위해 얼마나 적극적으로 노력했는지에 따라 그것이 정답이 되기도 하고 오답이 되기도 한다. 바로 그때 mind와 attitude가 비로소 빛을 보게 된다. (이 세 번째 부분은 여기서 다루지 않았다. 개발 관리자로서의 mind와 attitude를 다음에 별도로 다뤄볼 생각이다)

개발자뿐 아니라 나이가 들면서 사고방식이 고착화 되는 사람, 인터넷에 짧은 생각의 글로 도배하는 누리꾼들, 심지어는 가끔씩 그 사실을 망각한 나까지, 한번쯤 생각해 볼 내용이다 싶어 정리 차원에서 긴 글을 써 봤다. 개인적 경험의 성급한 일반화일 수도 있겠다고 생각하며, 건설적인 의견 달게 받을 마음의 준비로 글을 맺는다. 

작가의 이전글 회사의 권한과 책임의 구조
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari