0. 들어가며 — 왜 또 프로그래밍 책인가?
팀장을 맡고 나서 한동안 이상한 반복을 겪었다. 엔진을 몇 개의 모듈로 나누고, 그 모듈을 사람들에게 하나씩 배분했다. 몇 달이 지나면 신기하게도 모듈 사이의 경계가 팀원들 사이의 소통 경계와 똑같은 모양으로 굳어 있었다. 자주 대화하는 사람들이 맡은 모듈끼리는 인터페이스가 매끄러웠고, 서로 말을 잘 섞지 않는 사람들이 맡은 모듈 사이에는 어김없이 어색한 이음매가 생겼다. 조직도를 다시 그려 소통 구조를 바꾸면, 얼마 지나지 않아 코드의 경계선도 슬그머니 따라 움직였다.
나중에야 이 현상에 이름이 있다는 것을 알았다. Conway’s Law. 조직의 소통 구조가 시스템의 설계에 그대로 새겨진다는 말은, 내게는 비유가 아니라 여러 번 확인한 관찰이었다.
그러다 이 경험이 조직과 코드에만 해당하는 이야기가 아니라는 생각이 들었다. 수학책을 펴고 범주론을 들여다볼 때도, 외국어의 문법 구조를 익힐 때도, AI가 데이터를 학습하는 과정을 공부할 때도 비슷한 감각이 반복해서 찾아왔다. 서로 다른 대상들을 이해하고 있었는데도, 그 관계의 모양은 놀랍도록 서로 닮아 있었다
그래서 궁금했던 것은 조직도도, 범주론도, 문법도 아니었다. 무엇을 근거로 우리는 “이 관계는 저 관계와 같다”고 판단하는가. 이 질문에 답하려면 프로그래밍 하나만 붙잡고 있어서는 안 됐다. 프로그래밍은 그 판단이 유난히 선명하게 드러나는 자리일 뿐, 질문 자체는 훨씬 더 크다.
그래서 이 연재가 다루려는 것은 프로그래밍 문법이 아니다. 범주론의 정의를 나열하는 글도 아니고, AI의 작동 원리를 해설하는 글도 아니다. 대신 프로그래밍이라는 익숙한 렌즈를 통해 사고가 구조를 발견하는 과정을 들여다보고, 그렇게 발견한 것을 다시 프로그래밍으로 가져와 확인하는 왕복을 시도하려 한다.
매 화는 아주 작은 질문 하나에서 시작할 것이다. 젓가락 두 짝일 수도 있고, 변수 하나일 수도 있고, 함수 하나일 수도 있다. 그 작은 질문 하나를 끝까지 따라가다 보면, 어느 순간 범주론을 만나고, AI를 만나고, 다시 일상으로 돌아오게 될 것이다.
다음 화는 그 첫 질문에서 출발한다.
무엇이 무엇이 똑같을까?