티스토리 뷰

에세이

동화 속의 개발자들

June 2018. 7. 8. 04:25

처음에는 모든 게 다 신기했다. 학교에서만 프로그래밍을 하다가 프로젝트에 처음 들어갔을 때 내가 알고 있던 세상이 넓어지는 것도 신기했고, 다들 거울 나라에라도 들어온 것처럼 쉬지 않고 일하는 것도 신기했고, 다 망하는 것만 같았던 프로젝트가 끝날 때가 되니까 모양을 갖추고 결과가 나오는 것도 신기했다.


그런데 어느 순간부터 신기한 것들이 점점 사라지기 시작했다. 나도 내 주변도 별로 달라진 것은 없었으니 그냥 모든 것들이 익숙해졌다고 표현해도 될 것 같았다. 복잡한 것들이 단순한 것들의 조합임을 알게 되고, 열심히 하는 사람들은 모두 각자의 리듬을 가지고 있음이, 모든 프로젝트는 시작할 때부터 성공이 예정되어 있음이 보이기 시작하면서 무엇인가 성장한 느낌이 들었다. 복잡하고 거대한 프로젝트가 사실은 치밀한 계획 없이 예산에 맞춰서 몸집을 불리기 위해 이것저것 갖다 붙인 것임을, 같이 일하는 사람들의 모두 같은 비전을 가지고 있는 것이 아님을, 프로젝트가 명시적으로 실패하면 안 되는 사람들이 어떻게든 좋은 모양새를 만들기 위해서 다른 사람들의 시간을 빼앗고 있음을 알게 되기 전까지는.


신입 개발자들을 위한 업무 교육을 진행할 때는 보통 대규모 프로젝트에서 각자가 자신의 몫을 다하기 위해서, 그리고 다른 사람에게 피해를 주지 않기 위해서 어떻게 해야 하는지에 초점을 맞춘다. 이때는 보통 여러 명의 코드를 서로 주고받고 하나로 합치는 방법, 코드를 완성하기 전에 테스트하는 방법, 개발 단계의 앞뒤에 존재하는 다양한 프로세스들, 잘못된 것을 잘못되었다고 말하는 방법, 자신이 어떤 일을 했는지 말하는 방법, 다른 사람에게 도움을 요청하는 방법, 다른 사람의 코드를 읽는 법과 다른 사람이 읽을 수 있게 코드를 만드는 법과 같이 협업 과정에 대한 내용을 주로 다루게 된다. 어떻게 보면 개발은 하나의 소재에 불과하고 그 소재를 중심으로 IT 회사 생활에 적응하는 데 필요한 것들을 가르친다고 봐도 좋을 것 같았다.


신입 개발자들에 대한 교육은 중견 개발자들에 대상으로 하는 강의와는 많은 부분에서 차이가 있다. 물론 신입 개발자들이 교육과정에 임할 때 훨씬 더 적극적이고 진지한 태도를 가진다는 점도 있지만, 더 중요한 것은 강사가 전달해주는 메시지에 대한 신뢰가 강하다는 점이다. 이 아이들은 폰 노이만이 자바 프로그래머였다고 말해도 믿을 것 같은 느낌이었는데, 그렇기 때문에 보통의 교육과정은 긍정적이고 이상적인 메시지를 많이 담게 되었다. '테스트는 이렇게 하는 게 효과적인데요, 사실 프로젝트 가면 테스트 기간에 개발하는 게 일상일 거예요'라는 식으로 이야기해서 회의적인 시각을 가지게 할 필요는 없는 것이다.


그래서 이러한 과정의 교재를 만들 때는 동화를 쓰고 있는 듯한 느낌을 받을 때가 많다. 착한 사람과 나쁜 사람이 의심할 여지없이 구분되고 중간에 고난이 있더라도 결국엔 착한 사람들이 행복해지는 그런 이야기. 아이들이 자신의 세상을 만들어나갈 때 희망을 채울 수 있도록 해주고자 쓰는 그런 이야기들이 채워진다. 그 과정이 대부분 다른 사람과 어떻게 같이 일해야 하는가에 집중된 것은, 다른 사람과 같이 하는 일에 대한 태도를 어떻게 가져가는가가 그 사람만이 아니라 그 사람 주변의 사람들의 행복에도 영향을 많이 주기 때문이다. 이왕이면 이 아이들이 같이 일하고 싶은 사람으로 성장하기를 바라는 마음이었는데, 자신의 책을 읽는 아이들이 착한 어른으로 성장하기를 바라는 동화 작가들의 마음과 크게 다르지는 않았을 것 같다.


현실이 동화 속의 이야기가 아니듯이 현장도 교육 속의 이야기가 아니다. 서로의 업무를 공유하는 방법을 배우고 프로젝트에 가면 다들 입 다물고 자기 일만 아무도 모르게 하는 경우가 많다. 다른 사람들이 읽기 쉬운 코드를 쓰는 것이 중요함을 배웠는데 막상 소스 코드를 보면 재버워키가 따로 없다. 하루가 멀다 하고 코드에서 충돌이 발생하는데 너무 자주 발생하다 보니까 다들 별일도 아니라는 듯 처리해버리는 모습을 보고 살짝 충격을 받기도 한다. 원래 다들 이러는 건지 아니면 여기만 좀 특별하게 망가져 있는 것인지 고민하기도 하고.


그리고 모든 것에 익숙해진다. 그리고 시간이 더 지나서 무엇을 배웠는지도 기억이 잘 안 나는 시기가 되면 내가 무엇을 이루었고 무엇을 포기했는지도 구분이 잘 안 되는 시기가 오게 되는데, 어른이 되었다고 볼 수도 있을 것 같다. 아이였을 때 생각하는 어른들의 모습이 실제 어른들과 다르다는 사실을 알게 되는 그 순간이 온 것이다.


이야기와 주제를 분명하기 위해서 매우 평면적으로 구성되는 동화 속의 인물들과 달리 많은 영화의 캐릭터들은 입체적으로 그려지는 경우가 대부분이다. 많은 캐릭터가 선과 악을 구분하기 어려운 애매한 경계선에 있기도 하고, 정말 나쁜 캐릭터를 그릴 때도 거기에 동기와 신념을 더해서 개연성을 갖추는 경우가 많다. 주인공의 성격이 변해가는 과정을 주요한 플롯으로 삼는 영화도 있고, 이념이나 신념의 대립을 그리는 영화는 한쪽 편을 들기 어려운 경우가 많다.


그러니까 못하는 사람들이 모여서 한마음으로 더 못하는 것을 볼 때나, 잘못을 지적했다가 본인의 평이 안 좋아질 것을 무서워해서 위험요소를 지나칠 때나, 몇 년째 같은 일이 이름만 바꿔가면서 계속 새로 시작되는 것을 볼 때면 이제는 뭐가 문제인지 누가 잘못을 한 것인지 구분하기도 어려운 상황이 된다. 다들 '지금 우리가 올바른 방향으로 나아가는 것인가?'라고 의문을 가지지만 누구도 거기에 자신 있는 대답을 내리지 못해서 멈추거나 되돌아가지도 혹은 더 빨리 움직이지도 못하고 그저 관성대로 움직이는 상황이다. 현실이 이렇게 선 하나로 가를 수 없는 입체적인 모습을 가지게 되면 거기에 적응하기 위해서 다들 자신의 캐릭터에 다양한 복선과 반전 요소를 넣기 시작한다.


그렇게 자신의 캐릭터를 오랫동안 구성해온 사람들 중 일부는 잘못된 가치관에 그릇된 신념을 계속 더해나가면서 나쁜 어른이 된다. 이 나쁜 어른들이 가지고 있는 캐릭터는 몇 가지 정도로 분류할 수 있다. 무언가 자신만의 이해하기 힘든 독자적인 기준을 가지고 있는데 그 기준을 다른 사람들에게 명시적으로 인정받아야만 되는 사람들. 아니면 자신이 가지고 있는 신념이 너무 약해서 자신이 속한 집단과 자기 자신을 일체화시켜야만 자신의 존재감을 느낄 수 있는 사람들. 별로 가진 것이 없는데 그렇지 않다고 열심히 생각하다가 결국 부조화에 빠져서 가지고 있는 것이 많은 것처럼 행동하는 사람들. 하기 싫은 일을 억지로 하면서 그 사실을 들키지 않기 위해 목소리가 커지는 사람들. 어떻게 해도 자기 수준이 높다고 주장하기는 어려웠는지 회의주의자로 변해서 주변의 모든 사람을 바보로 취급하는 사람들.


순수한 마음과 눈으로는 대하기 어려운 사람들이다. 여기서 순수함은 다들 자신의 역할을 충실하게 수행하고 서로가 부족함을 보완해주면서 공동의 목표를 위해 노력해서 성과를 낼 수 있을 것이라 믿는 마음을 말하는데 그 믿음이 자신을 배신하는 상황을 자주 겪게 되면 결국 믿음을 조금씩 버려가면서 현실에 적응할 수밖에 없다. 신입 개발자들을 대상으로 써나가는 교재에는 결코 등장시킬 수 없는 캐릭터들. 세상에는 어른스러운 어른도 있지만 그렇지 않은 사람도 일부 있음을 말하면 세계관이 깨지니까.


우리가 보통 말하는 '어른스럽다'라는 표현은 다른 사람이 받을 상처를 대신 받아줄 수 있는 사람을 말하는데, 자신이 아프면 다른 사람들도 아프게 만들어야 권위가 살아난다고 생각하는 사람들이 어른 행세를 하는 모습을 볼 때도 있다. 저 사람들에게는 도대체 무엇이 부족한 것일까? 가만히 생각해보면 그런 사람들은 보통 과정이나 노력은 무시하고 결과만 가지고 이야기를 한다. 개인의 개성을 무시하고 사람을 숫자로 취급한다. 정해진 목표의 달성이 개개인의 사정보다 우선한다. 감정이나 감성을 방해물로 취급한다. 한 달에 한 번 회식을 하면 좋은 분위기를 유지할 수 있을 것으로 생각한다.


그러니까 인간에 대한 관심이, 이해가 부족한 사람들이 많았다.


몇 년 전에 프로젝트 수행을 위해서 지방에 내려간 적이 있었다. 당시에 내가 속했던 부서는 일하는 체계를 바꿔보고자 만들었던 부서였고 그 부서 소속의 인원이 다른 프로젝트에 가서 하는 소리는 보통 그냥 당연한 소리가 많았다. 설계서 똑바로 쓰셔야 합니다. 실제 일이 말씀하신 것처럼 쉽지 않으면 기간이 늘어날 수 있습니다. 표준들 정해놓은 문서는 어디 있나요? 아니 일이 많아서 야근하면 당연히 프로젝트에서 수당 결재해주셔야죠. 아니 비즈니스 로직 적어 달랬는데 레거시 코드를 그대로 붙여서 주시면 어쩝니까. 아니 계약도 안 했는데 벌써 완성된 화면을 보여 달라고 하시면 안 되죠.


당연히 충돌이 생길 수밖에 없었다. 보이지 않는 충돌이 보이는 충돌이 될 때쯤 프로젝트의 높으신 분들과 실무자들이 모여서 앞으로 어떻게 진행할 것인가에 대한 회의를 한 적이 있었다. 당시에 나는 어쨌든 내가 하는 말들은 현실적이지는 않을 수 있어도 옳은 말이기는 하니까 내 주장에 훨씬 설득력이 있을 것이라고 생각했고, 회의를 하면 밀리지 않을 자신이 있었다. 그리고 실제로 회의가 그렇게 흘러가자 상대방은 우리 부서의 개발 속도가 느려서 같이 일을 못 하겠다고 주장했고, 나는 설계서가 약속한 날짜에 도착하지 않았음을 주장했다. 그러지 저 쪽에서는 내가 설계서를 자꾸 돌려보내서 늦어졌다고 주장했고, 나는 설계서가 개발을 시작할 수 있는 최소한의 내용도 적혀있지 않았음을 보여줬다. 그때 저쪽에서 그랬다. 내가 설계서가 며칠 늦어져도 개발은 기한 내에 완성될 수 있다고 이야기했는데 딴 소리를 한다고.


개발 앞쪽의 일정이 하루 늦어지면 개발 완료일도 하루 늦어지는 것은 상식이었고, 그 상식이 보통 통하지 않는 것이 이 바닥의 일이라서, 그리고 그 사실이 많은 개발자에게 고통으로 다가온다는 것을 잘 알고 있어서 나는 가급적 사전에 협의할 때 일정이 밀리면 개발도 같이 밀린다는 사실을 주지 시켜주려고 노력하는 편이었다. 그러니까 상대방의 말은 완전히 거짓말이었다. 그런데 내가 없는 자리라면 몰라도 내가 있는 자리에서 내가 하지 않은 말을 했다고 주장할 수 있다는 사실이 굉장한 충격으로 다가왔다. 그래서 '제가 언제 그렇게 말씀을 드렸습니까? 오히려 저는 그 반대로 이야기했는데 그렇게 말씀하시면..'이라고 목소리를 크레셴도로 높여가면서 반박을 하기 시작하자 갑자기 회의가 진행되는 동안 조용히 있던 굉장히 높은 분이 훨씬 더 큰 목소리로 이거 다 때려치우고 너는 당장 짐 싸서 서울로 올라가라고 - 다수의 금칙어를 포함하여 - 소리를 질렀다.


지성을 가진 사람들이 미래에 대해서 토의하던 도중에 대놓고 거짓말을 하고 논리에서 밀리니까 욕을 하면서 소리를 지를 수 있나? 우리랑 같이 일하자고 한 건 너네들 아니었어? 도대체 내가 무슨 상황 속에 있는 것인가 이해가 잘 안 되어서 버벅거리고 있으려니, 옆에 있던 같은 부서의 차장님이 차장다운 관록으로 그 자리를 수습하기 시작했다. 그 사이에 정신적으로는 몇 번을 서울행 버스에 올라탔지만 실제로는 아무 말이나 행동도 하지 않고 가만히 앉아있기만 했다. 그 자리가 대충 수습되고 회의가 끝나고 서울에 있는 부서에 연락했더니, 그래도 수습은 된 것이니 몇 주 더 있다가 올라오라는 말을 들었다. 몇 주가 지난 뒤 서울에 올라가서 그 프로젝트의 개발을 몇 달은 더 했다. 물론 그 과정이 아름다웠을 리가 없었다. 그래도 신입 개발자 시절에 가졌던 환상이 깨지는 데 4년이 걸렸으니 나름 선방한 게 아닌가 생각해봐도 기분이 별로 좋아지지는 않았다.


프로젝트가 끝난 뒤 사직서를 올려야 되나 고민하다가 일단은 조금 쉬면서 생각을 해야겠다는 결론을 내리고는 열흘짜리 연차를 냈다. 공휴일을 포함하면 15일 동안의 휴가였으니 그전까지 몇 년간의 회사생활 동안 썼던 모든 연차를 더한 것보다 긴 기간이었다. 사실 연차 기간 동안 여행을 가거나 뭔가 다른 일을 하면서 마음을 다스리지는 않고 회사에 제출하기 위한 사직서와 블로그에 올리기 위한 사직서를 계속 고쳐 쓰면서 시간을 보냈는데, 그래서인지 별로 마음을 다잡지 못한 상태로 휴가가 끝났다.


부서장님께 더 이상 다른 프로젝트와 협상하고 조율하는 일은 하기 힘들겠다고 말씀드리고 개발자 업무로 복귀했는데 이전에 깨져버린 무엇인가가 있었는지 개발을 해도 예전 같은 마음을 가지기가 쉽지 않았다. 심지어 그때 수행했던 프로젝트는 동화 속에나 나올법한 환경에서 진행되고 있었는데도 말이다. 그렇게 한 달 정도가 지나자 내 상태가 안 좋아 보였는지 아니면 갈 사람이 없었는지 부서에서 나를 신입 교육 강사로 2주간 파견을 보냈다.


처방은 효과적이었다. 누군가를 가르치기 위해서는 그 내용을 당연히 잘 알고 있어야 했고, 그저 교재를 이해하는 것이 아니라 교재에 쓰인 단어 하나라도 모르는 단어가 없어야 했다. 매일매일 다음 날 강의를 위해서 교재를 읽어 보면서 몇 년 전 선배들과 함께 그 교재를 만들기 위해서 고생했던 시절을 떠올렸다. 어른들이 동화책을 다시 읽는다고 순수해질 수는 없겠지만, 순수했던 시절을 떠올릴 수는 있는 거니까. 아이들에게 동화책을 읽어주는 부모는 주인공이 진정 행복해졌을 것이라고 믿어야 그 내용을 전달하는 목소리에 희망을 담을 수 있으니까. 나를 힘들게 하는 문제가 해결되지는 않았지만, 최소한 무엇이 문제인지는 알았으니까 앞으로 그것을 풀어나갈 수도 있을 것 같다는 생각이 들었다.


그렇게 2주의 과정이 끝나고 후배들은 첫 번째 프로젝트에, 나는 일곱 번째 프로젝트에 들어갈 때가 왔다. 교육과정을 마무리하면서 후배들에게 마지막으로 무슨 말을 해줄까 조금 고민을 하다가 여러분이 몇 년 뒤에도 지금 가지고 있는 인간성을 잃지는 않았으면 좋겠다고 이야기했다. 그때의 후배들도 이제 다들 프로젝트를 일곱 개나 혹은 그 이상을 수행했을 텐데, 지금쯤이면 그 말이 무슨 뜻이었는지 이해했을까 궁금해졌다.

'에세이' 카테고리의 다른 글

올림, 내림, 반올림  (0) 2018.07.26
한겨울 밤의 컴파일  (0) 2018.07.23
안녕하세요. 감사합니다.  (1) 2018.06.15
2002  (0) 2018.05.16
My December  (0) 2016.12.04
댓글