퇴사한 동료가 남기고 간 핵심 모듈을 덜컥 물려받았다고 해 보자. 자동 테스트는 초록불이고 실서비스도 멀쩡하게 잘 돌아간다. 그런데 막상 기획서가 바뀌어 기능 하나를 손보려고 파일을 열어 보면 손가락이 그대로 멈춘다. 도대체 왜 이런 구조로 짰는지 물어볼 사람이 사내에 아무도 없다. 섣불리 한 줄 고쳤다가 엉뚱한 곳이 무너질까 봐 겁부터 난다.
이럴 때 우리는 흔히 인수인계 문서가 부실했다고 탓한다. 코드에 주석을 촘촘히 달고 위키에 설계 문서를 잘 남겨 뒀으면 문제없었을 거라고 믿는다. 하지만 문서를 처음부터 끝까지 다 읽고 나서도 여전히 코드를 건드리기 무서울 때가 많다. 진짜로 증발해 버린 건 글자로 적힌 설명이 아니라 그 코드를 처음 짰던 사람들의 머릿속에 있던 전체 밑그림이기 때문이다.
2006년 영국 웨일스의 램피터 대학에서 종교학을 전공하고 졸업한 뒤 줄곧 개발자로 밥벌이를 해 온 Tom BH라는 사람이 있다. 그가 쓴 에세이 Religious Studies In Software Engineering은 종교학에서 쓰는 렌즈를 가져와 소프트웨어 업계를 들여다본다. 언뜻 물과 기름 같아 보이는 두 분야가 어떻게 맞닿는지, 그중에서 현업 개발자가 곱씹어 볼 만한 대목 네 가지를 추려 봤다.
안에 있는 사람은 잘 알지만 잘 못 본다
원래 종교라는 건 한마디로 정의하기가 무척 까다롭다. 저자가 대학 시절 들었던 불교 수업에서는 교수님이 첫 시간에 종교의 정의 서른네 가지를 빼곡히 적은 유인물을 나눠 줬다고 한다. 절대자나 신을 모시지 않는 불교만 떠올려 봐도 왜 한 줄짜리 정의가 불가능한지 금방 알 수 있다. 그중에서 저자가 고른 건 신학자 폴 틸리히(Paul Tillich)의 정의다. 종교란 “궁극적인 관심을 두는 상태(the state of being ultimately concerned)”라는 것이다. 시야를 이렇게 넓혀 잡으면 종교나 정치 이념, 사상은 모두 사람과 사회를 특정한 결과로 이끌기 위해 만든 규칙과 실천의 묶음이 된다. 저자는 바로 이 지점에서 종교가 컴퓨터 프로그램과 똑 닮았다고 본다. 프로그램 역시 정해진 규칙과 절차를 따라 원하는 결과를 뽑아내는 구조이기 때문이다.
종교학에서 늘 부딪히는 해묵은 딜레마가 하나 있다. 바로 ‘내부자와 외부자 문제’다. 독실한 신자는 자기 종교의 교리와 미묘한 감정을 누구보다 깊이 알지만 그만큼 시선이 한쪽으로 쏠려 있다. 반대로 인류학자 같은 외부 관찰자는 한 발짝 떨어져서 객관적으로 볼 수 있지만 신자들이 겪는 생생한 체험까지는 알지 못한다. 그래서 종교학자들은 두 시선 중 하나만 고집하지 말고 안팎을 오가며 봐야 한다고 말한다. 오늘날 개발자 역시 디지털 세계의 원리를 가장 깊이 이해하는 동시에 그 세계의 권력과 믿음 체계 한복판에 발을 담근 철저한 내부자다. 저자 자신도 기술적 특이점이나 오픈소스 운동을 지지하는 사람으로서 결코 중립적인 관찰자일 수 없다고 솔직하게 고백한다.
지식을 담는 그릇이 바뀌면 권력도 옮겨 간다
인류가 지식을 담아 온 그릇은 크게 네 번 바뀌었다. 입에서 입으로 전하던 말의 시대, 문자로 적어 남기던 글의 시대, 활자로 찍어 내던 인쇄의 시대, 그리고 지금 우리가 사는 디지털 시대다. 문자가 없던 시절에는 긴 서사시나 노래의 운율이 지식을 저장하는 유일한 장치였다. 호메로스의 『오디세이아』나 인도의 『라마야나』가 그렇게 전해졌다. 당연히 당시의 권력과 권위는 그 방대한 이야기를 통째로 외우고 읊을 수 있는 소수의 사람들 손에 모였다.
문자가 발명되면서 권력의 중심은 경전으로 옮겨 갔다. 기독교와 이슬람교, 유대교, 힌두교, 시크교, 불교 등 오늘날의 주요 세계 종교들은 모두 기록된 경전 위에 세워졌다. 그러다 15세기 구텐베르크의 인쇄기가 등장하면서 판이 다시 한 번 뒤집힌다. 미디어 이론가 클레이 셔키(Clay Shirky)는 인쇄술이 성경 해석을 독점하던 중세 교회의 권위를 무너뜨렸고 그 여파가 17세기 유럽에서 근대 국민국가가 탄생하는 밑거름이 됐다고 분석한다.
지금은 모든 지식이 코드와 네트워크를 타고 흐르는 디지털 시대다. 저자는 여기서 마셜 매클루언의 유명한 경구인 “미디어는 메시지다”를 다시 불러낸다. 그릇에 담긴 내용물보다 그릇의 생김새 자체가 사회의 모습을 결정한다는 뜻이다. 오늘날 Amazon과 Google, Microsoft, Apple 같은 빅테크 기업들이 쥔 막강한 권력도, 레이 커즈와일이 『특이점이 온다』에서 그린 초지능 시대의 청사진도 옛 종교의 권위나 종말론적 예언과 겹쳐 보인다. 지식을 담는 매체를 주무르는 집단이 시대의 권위를 쥔다는 역사의 공식이 지금도 그대로 되풀이되고 있는 셈이다. 그리고 우리 개발자들은 바로 그 디지털이라는 그릇을 날마다 빚어내는 실무자들이다.
저항하던 분파도 몸집이 커지면 교회가 된다
사회학자 막스 베버가 처음 꺼내고 1980년대 로드니 스타크와 윌리엄 심스 베인브리지가 다듬은 ‘교회-분파 이론’이라는 게 있다. 핵심은 끝없는 순환이다. 처음에는 타락한 기성 교회에 반기를 든 소수 분파(sect)로 출발하지만 세력이 커지고 조직이 갖춰지면 그 분파 자체가 또 하나의 거대한 기성 교회(church)로 굳어 버린다. 그러면 그 답답해진 교회에 반발해 또 다른 분파가 떨어져 나온다.
역사에서 가장 극적인 사례가 16세기 종교개혁이다. 당시 가톨릭교회는 십일조 세금을 걷고 자체 법정까지 굴리던 거대한 기득권 제도였다. 1517년 마르틴 루터는 면벌부 판매에 반발해 『95개조 반박문』을 내걸었고 이 주장은 갓 보급되기 시작한 인쇄술을 타고 전 유럽으로 들불처럼 번졌다. 그렇게 저항의 깃발을 들고 태어난 개신교 역시 시간이 흐르면서 주류 교단이 됐고 그 안에서 다시 수없이 많은 교파가 갈라져 나왔다.
소프트웨어의 역사도 이 궤적을 소름 끼치도록 똑같이 밟아 왔다. 1984년 리처드 스톨먼이 기업의 소스 코드 독점에 맞서 자유 소프트웨어 운동을 시작하고 GPL 라이선스를 만들었을 때만 해도 그것은 철저히 변방의 저항 운동이었다. 하지만 수십 년이 흐른 지금 그 오픈소스 위에서 RedHat, Docker, HashiCorp 같은 거대 기업들이 탄생했다. 리눅스 커널을 바탕으로 만든 안드로이드는 전 세계 40억 명 가까운 사람이 매일 쓴다. 저자의 추산대로 오늘날 전체 소프트웨어의 70~90%가 오픈소스 위에서 돌아간다면 옛날의 저항군은 이미 세상을 지배하는 가장 거대한 기성 교회가 된 셈이다.
최근에는 빅테크 기업들의 사상적 기반을 정면으로 비판하는 목소리도 높다. 팀닛 게브루(Timnit Gebru)와 에밀 토레스(Émile P. Torres)는 실리콘밸리 엘리트들 사이에 퍼진 초인간주의와 장기주의 같은 일곱 가지 사상 묶음을 ‘TESCREAL’이라 부르며 이를 현세의 구원을 약속하는 일종의 세속 종교로 규정했다. 저자는 이들의 비판을 면벌부에 맞섰던 루터의 모습에 겹쳐 본다. 빅테크의 독점에 맞서는 진영이 스스로를 오픈소스 분파로 여긴다 해도, 그들이 디딘 오픈소스 진영 역시 이미 거대한 권위와 교리를 가진 또 하나의 교회라는 사실을 잊어서는 안 된다는 지적이다.
프로그램은 소스 코드가 아니라 사람 머릿속에 산다
에세이 후반부에서 저자가 가장 공들여 소개하는 글은 튜링상 수상자인 피터 나우르(Peter Naur)가 1985년에 쓴 논문 『이론 구축으로서의 프로그래밍(Programming as Theory Building)』이다. 나우르는 프로그램의 본체가 텍스트 파일에 적힌 소스 코드가 아니라 그것을 만든 프로그래머들의 머릿속에 자리 잡은 ‘이론’이라고 보았다. 소스 코드는 그 머릿속 이해를 바깥에 적어 둔 그림자에 불과하다. 현실 세계의 문제를 왜 하필 이런 데이터 구조로 풀었는지, 앞으로 요구사항이 바뀌면 어디를 어떻게 고쳐야 하는지에 대한 살아 있는 감각이 곧 프로그램 그 자체라는 뜻이다.
1967년 멜빈 콘웨이가 발표한 유명한 ‘콘웨이의 법칙’도 결국 같은 맥락을 짚는다. 시스템의 구조는 그것을 설계한 조직의 의사소통 구조를 그대로 닮는다는 법칙이다. 사람들 사이에 말이 어떻게 오가는지가 코드의 모양을 결정한다. 1991년 핀란드의 대학생 리누스 토발즈가 혼자 시작한 리눅스가 오늘날 수만 가지 배포판과 파생 프로젝트로 뻗어 나간 것도 전 세계 개발자들이 메일링 리스트에서 부대끼며 소통한 방식을 그대로 닮은 결과다.
여기서 나우르의 가장 서늘한 문장이 등장한다.
The death of a program happens when the programmer team possessing its theory is dissolved.
그 프로그램의 이론을 머릿속에 품고 있던 개발팀이 해체되는 순간 프로그램은 죽는다는 말이다. 서버에서 바이너리는 어제처럼 잘 돌아가고 있을지 모른다. 하지만 새로 들어온 변경 요청 앞에서 어디를 어떻게 고쳐야 할지 아는 사람이 아무도 남지 않았다면 그 프로그램은 이미 생명을 다한 화석이나 다름없다. 글 첫머리에서 떠올렸던 ‘전임자가 남기고 간 무서운 모듈’이 바로 이 상태다. 살아 있는 사람의 이해보다 저장소에 박제된 글자(경전)를 더 귀하게 여기는 순간 소프트웨어는 서서히 죽어 간다.
오늘 우리가 마시는 쿨에이드는 무엇인가
종교학의 시선으로 한 발짝 물러서서 보면 소프트웨어 개발은 결코 차가운 기계와 논리만의 세계가 아니다. 사람들이 어떤 기술적 약속을 믿고 따르는지, 지식을 담은 매체를 누가 쥐고 흔드는지, 한때의 저항이 어떻게 굳어져 또 다른 권위가 되는지 보여주는 지극히 인간적인 무대다.
저자는 글 말미에 ‘쿨에이드를 마신다(drinking the Kool-Aid)’는 영어 관용구를 꺼낸다. 1978년 남미 가이아나에서 교주의 말만 믿고 신도 900여 명이 독이 든 분말 주스를 마셔 목숨을 잃은 인민사원 집단 자살 사건에서 유래한 말로, 어떤 집단의 믿음을 아무 의심 없이 삼켜 버리는 태도를 뜻한다. 사실 우리 개발자 커뮤니티에도 달콤한 쿨에이드는 늘 넘쳐난다. 모든 문제를 단숨에 해결해 줄 것 같은 새 프레임워크와 새 개발 방법론, 그리고 AI가 가져올 장밋빛 혹은 잿빛 예언들 앞에서 우리는 얼마나 자주 질문을 멈추고 잔을 들이켜 왔을까.
당장 내일 출근해서 챙겨야 할 교훈은 아주 현실적인 곳에 있다. 코드라는 경전을 숭배하기보다 동료들 머릿속에 살아 있는 이해를 지키는 일이다. 지금 내가 맡은 모듈이 왜 이렇게 생겼는지 옆자리 동료에게 자기 말로 막힘없이 설명할 수 있는지 돌아보자. 만약 아무도 그 답을 모른다면 그 코드는 아무리 잘 돌아가도 이미 절반쯤 죽어 있는 상태다. 팀원이 바뀔 때 위키 문서 링크 하나만 덜렁 넘기지 말고 같이 코드를 읽고 부딪히며 머릿속의 밑그림을 건네줄 시간을 확보해야 한다. 코드는 깃허브 저장소에 남지만 살아 있는 프로그램은 오직 사람과 사람 사이에서만 숨을 쉰다.