정신과 시간의 방, 그리고 실용주의 프로그래머

요즘은 회사에서 매일 4~5시간씩 동료들과 설계 회의를 하고 있다. 내년에 있을 큰미션을 준비하기 위해서다. 하루에 두 시간 정도만 회의를 해도 녹초가 되기 일쑤인데 하루 반나절, 그 이상을 줄기차게 떠든다는 게 여간 힘든 일이 아니다.

하얀 건물에 하얀 계단이 어지럽게 꼬여있는 사진긴 회의를 마치고 '정신과 시간의 방'에서 나올 즈음이면 심신이 시루떡이다. 시간도 시간이지만, 논쟁을 해야 하는 문제의 성격이 우리를 더 지치게 만든다. 대부분이 과학적 증명보다는 가치 판단의 문제에 가깝다. 답이 없다. 철학과 개발이 맞닿은 지점을 어렴풋이 본다. 이런 거구나.

뭐든 내 맘 같지 않음이 당연하다는 걸 알면서도 누군가와 생각을 놓고 줄다리기하는 과정이 대단히 피곤한 건 어쩔 수 없다. 내 철학을 포기하는 건 쉬운 일이 아니지만 분명한 근거를 바탕으로 상대를 설득하지 못했다면 내가 아는 것들을 의심해보는 게 옳다. 차라리 한 수 접고 더 공부할 수 있는 원동력으로 삼는 게 현명한 길이고, 포기함으로써 성장하는 느낌은 즐겁다. 소주 한 잔을 마시고 떠먹는 아이스크림처럼 달콤 쌉싸래하다.

실재 없는 이론의 나열은 허상이라는 걸 몸으로 느낀다. 패턴이나 설계 원칙을 설명하라면 유창하지는 않아도 허접하지 않게 설명할 수 있다. 하지만 안다고 제품에 녹일 수 있는 것도 아니거니와, 실재하는 사례가 곁들여지지 않은 주장은 무뎌서 날이 서지 않는다. 문제는 정작 중요한 순간에는 경험한 사례가 잘 떠오르질 않는다는 점이다. 코드 베이스가 커져서 복잡해지고 나서야 문제가 발생하기에 간단한 코드로 재현하기도 어렵다. 평소에 이슈를 만났을 때 상황과 원인을 잘 메모해서 모아두지 못한 게 아쉽다.

어두운 밤, 산에 캠핑온 사람들이 모닥불을 피워놓고 둘러 앉아 있는 모습개발자는 역시 코드로 말하는 게 제일이다. 긴 논의를 거쳐 서로의 생각이 일치했다고 동의하고 고개 끄덕이는 순간조차도 머릿속에 다른 그림을 그리는 경우가 흔하다. 노트북을 꺼내서 짝코딩으로 얼른 간단한 코드 조각을 만들고 리뷰하니 커뮤니케이션이 훨씬 명확해졌다. 입은 짧게 털고, 코딩은 조금 길게. 그게 실용적이다.

내가 하는 일이 고도의 사회 활동(맞는 표현인지는 잘 모르겠지만 뜻은 통하겠지)이라는 사실을 깨달아 가고 있다. 2년 전까지만 해도 나에게 개발은 그저 나 자신과의 싸움이었다. 많은 동료, 여러 부서와 협업을 해야 하는 조직에 합류하고 난 뒤 경험치가 쌓이면서 내 일을 바라보는 나 자신의 관점이 많이 변했다는 걸 느낀다. 그저 ‘좋다’는 느낌적 느낌이나, 바다 건너 이름 모를 누군가의 깨알 같은 사례를 공유하는 걸로는 아무것도 할 수 없다. 모두가 같이 이해하고, 같이 느낄 수 있어야 한다. 요즘 ‘콘텍스트’라는 단어를 머리에 달고 산다.

전체의 일부가 된다는 건 여러모로 쉬운 일이 아니지만 내년에는 이런 일도 잘하는 나이고 싶다. 애자일한, 실용주의 프로그래머, 뭐 그런 엔지니어 말이다.