난 그저 코드 치는게 좋을 뿐이다

요즘 따뜻한 햇살이 참 좋다. 이젠 마냥 어리다고 할 수 있는 나이가 아니라서 그런지, 예전엔 그저 평범해 보였던 그런 일상도 요즘엔 그저 마냥 행복하고 좋은 느낌이 든다. 날이 좋으면 괜스레 내 기분도 좋아진다. 처음 학부 시절 5월 쯤 이었을까. 그 순간 부터 내가 프로그래밍을 좋아 한다는 사실을 알았던 것 같다. 그저 코드 치는게 좋았고, 내가 설계한 대로 알맞게 동작이 되는 것을 보면 괜스레 기분이 좋았다. 마치 지금 내가 따스한 햇살을 느끼는 순간 처럼 말이다. 내게 프로그래밍이란 이러한 것이다. 단순히 내 전업이 아닌 그 이상의 느낌을 주는 말로 형용할 수 없는 그런 행위의 무언가인 것이다.

혼란

요즘 현업에서 일을 하다 보면 나의 이 가치관이 점점 무너지는 것을 느끼곤 한다. 간혹 옛날이 그리울 때가 있다. 정말 단순한 하나의 함수를 두고 큰 스크린을 다 같이 보며 열심히 논의하던 그 시절이 가끔 그립다. 클린 코드에 대해 치열한 논의가 오가던 그 시절과 현재가 대비되곤 한다. 너무나도 많아진 Agent. 그에 비례하여 떨어지는 코드에 대한 가치. 분명 지금이 더 좋은 시대임에 강력하게 동의한다. 그리고 나도 이러한 자동화에 작게나마 현업에서 일조하고 있다. 그리고 급변하는 시대에 적응하기 위해 사이드 프로젝트도 더욱 활발하게 발전 시키고 있다. 이렇듯 아련한 내 마음과 더불어 프로그래밍 학습(學習)의 의미가 변해가고 있다. 하지만 다시금 강조하지만 이러한 변화는 불가피하며 더 좋은 세상임에는 맞는 듯 하다. 좋은 세상이 오고 있다. 반면에 현업에 임하는 사람들의 태도도 변하고 있다. 판단을 내리는 주체가 역전되고 있다. 클린 코드에 대한 감각이 무뎌지고 있다. 사람이 읽기 쉬운 코드가 아닌 Agent가 읽기 쉬운 코드가 아닌 명세에 더욱 힘을 싣고 있다. 토론이 사라지고 있다. 열정이 사라지고 있다. 클린 코드를 향한 열망이 사라지고 명세를 보고 이를 Agent에게 읊어주는 시간이 더욱 많아지고 있다. 그렇게 제품이 순식간에 완성되고 세상에 내보여 지고 있다. 속도가 빨라졌음에도 불구하고 나의 Day 2 는 점점 Day 3, Day 4, Day 7 .. 아니 그 이상으로 길어지고 있는 듯 하다.

불꽃

나는 그저 코드를 치는 행위가 좋았을 뿐이다. 단순히 코드는 외부 라이브러리로 쉽게 얻어지는 것이 아닌, 외부 의존성을 제거한 채 우리의 뜻대로 돌아가는 소프트웨어 그 자체가 좋았을 뿐이다. 본디 시스템의 수명은 짧다고 생각한다. 그도 그럴 것이 조금이라도 관리해 주지 않으면 이녀석은 동작할 생각 조차 하지 않는다. 아니, 고객이 사용하는 시스템은 동작 하지만 이를 내 환경에서 재현시킬 방법이 없어 지기도 한다. 그렇게 사용자가 눈치채지 못한 채 계속해서 발전 시키고 개선하고 또 개선하고, 단순히 나는 이것이 좋았을 뿐이다. 나와 뜻이 동일하여 나를 따라주는 사람들도 생겼다. 제품을 향한 뜨거운 열정, 좋은 코드를 향한 끊임없는 열망. 이런 나의 모습에 동조하여 같이 활활 타오르는 불꽃들이 있었다. 촛불에서 횃불로, 그리고 용광로처럼 활활 타오르던 때가 있었다. 하지만 지금은 촛불이다. 불은 불이지만 미약한. 언제 꺼질지 모르는 그런 불꽃. 이들은 더 이상 본인이 타오르려 하지 않는다. 불꽃이나 화염이 아닌, 동력을 불어 넣어 주는 무언가가 되기로 한 이들이 많아졌다. 더 이상 오류를 본인들이 보려 하지 않는다. 더 이상 IDE 셋팅에 시간을 투자하지 않는다. Terminal 꾸미는 시간에 더 노력을 투자한다. 이 상황이 잘못 됐는가? 아니, 결코 아니다. 소프트웨어를 만들기 위해 복잡한 로직을 보아야만 했던, 그리고 이를 이해하고 만들 수 있는 소수의 누군가. 이것은 분명 문제다. 단순 소프트웨어 분야 뿐이던가. 점점 기술의 가치는 낮아지고 있다. 주판에서 계산기로, 그리고 계산기에서 엑셀이라는 프로그램으로 넘어갈 때 처럼 그 변천의 한 순간일 뿐이다. 하지만 이와 별개로 그 일의 본질은 변하지 않아야 하는 것 아닐까. 우리의 화염으로 무언가를 동작시킬 그 열정은 식으면 안되는 것 아닌가. 우리의 동력으로 무언가를 만들어 내고 그로인해 세상을 이롭게 해야 하는 그 목적 자체는 동일해야 하는 것이 아닌가.

설렘

테크닉에 목매여 실존하지 않는 무언가를 강렬하게 쫓을 때가 있었다. 자다가도 벌떡 일어나 아이디어 영감을 받고 다짜고짜 IDE를 켜는 순간이 존재했다. 지금도 마찬가지다. 세상을 이롭게 한 Agent와 더불어 새로운 것을 만들 때면 공을 가지고 노는 5살 아이 처럼 마냥 세상이 밝고 즐겁다. 설렘은 말해 무얼 하는가. 지금도 마냥 즐겁고 좋기만 하다. 일의 패러다임은 바뀌고 있다. 이젠 너도나도 이런 영감을 받곤 한다. 어느정도 경지에 도달 했을 때 느낀 깨달음도 있다. 다양한 무공 초식을 익혀 이를 조화 시키는 무언가보다 결국 그 경지의 끝에는 단순한 정권 지르기 한 방이 강하다는 것을. 지금도 이 생각은 변함이 없다.

흔들림

솔직히 고백하자면 나도 흔들린 적이 있다. 어느 날 새벽, 내가 정성들여 설계한 모듈을 Agent가 3분 만에 비슷하게 뱉어내는 것을 봤을 때. 그 순간 내 안에서 무언가가 작게 부서지는 소리를 들었다. 내가 이틀 밤을 지새우며 고민했던 그 구조가, 그 네이밍이, 그 추상화의 경계가 — 정말 의미가 있었던 것인가. 잠깐이지만 그런 생각이 스쳤다. 그리고 그 잠깐이 나를 꽤 오래 괴롭혔다. 내 주변 환경도 많이 변했다. PR 하나에 40개의 코멘트가 달리던 팀이 있었다. 변수명 하나를 두고 30분을 논의하던 사람들이 있었다. "이 함수는 한 가지 일만 해야 한다"는 원칙 하나에 목숨을 거는 듯한 눈빛들이 있었다. 지금 그 사람들은 명세를 쓰고 있다. 코드를 읽지 않는다. 코드를 쓰지도 않는다. 명세를 Agent에게 건네고 결과물을 훑어본다. 리뷰라고 부르기엔 너무 빠르게 Approve 버튼을 누른다. 그들의 눈에서 더 이상 그 빛을 볼 수 없다. 그들을 탓하고 싶지 않다. 아니, 탓할 수 없다. 그들도 한때는 나와 같은 불꽃이었으니까. 다만 조직이, 시장이, 속도가 그들에게 다른 역할을 요구했고, 그들은 적응했을 뿐이다. 적응은 생존이고, 생존은 틀린 것이 아니다. 하지만 적응과 체념 사이의 경계는 생각보다 얇다. 그리고 그 얇은 경계를 넘는 순간, 제품은 더 이상 "우리의 것"이 아니게 된다. 그저 기능 명세의 집합체가 될 뿐이다.

유대

제품이란 무엇인가. 나에게 제품은 살아 있는 유기체다. 숨을 쉬고, 아프면 신음하고, 잘 돌보면 성장한다. 에러 로그 하나에도 이 녀석의 비명이 들리던 때가 있었다. 새벽 3시 알람에 눈을 비비며 달려가 장애를 수습하고, 그 원인을 끝까지 파고들어 두 번 다시 같은 고통을 겪지 않게 만들어 줄 때. 그때 나와 제품 사이에는 분명 어떤 유대가 있었다. 지금도 그 유대를 느끼지만, 주변에서 같은 유대를 느끼는 사람을 찾기가 점점 어려워지고 있다. 가끔 외롭다. 구조적 개선을 제안했을 때 돌아오는 반응이 "다시 생성하면 되니까"로 귀결될 때. 설계의 의도를 설명하고 있는데 상대의 관심은 이미 다음 티켓으로 넘어가 있을 때. 그 순간의 감정을 뭐라 설명해야 할까. 분노도 아니고 실망도 아닌, 그냥 텅 빈 무언가. 대화가 성립하지 않는다는 느낌. 같은 언어를 쓰고 있지만 다른 세계에 살고 있다는 느낌. 나는 코드의 결을 말하고 있는데, 상대는 산출물의 속도를 말하고 있다.

장인

그래서 나는 요즘 자주 생각한다. 내가 고집하는 이것이 장인 정신인지, 아니면 시대착오적 낭만인지. 내 방식만이 정답이라고 말하려는 것이 아니다. 효율을 추구하는 것도, 속도를 택하는 것도 각자의 합리적인 선택이다. 다만 나는 그 선택의 과정에서 무언가가 빠져나가고 있다는 감각을 지울 수가 없다. 이 질문에 아직 명확한 답을 내리지 못했다. 어쩌면 영영 못 내릴 수도 있다. 하지만 한 가지 분명한 것은, 내가 이 질문을 던지는 것 자체를 멈추고 싶지 않다는 것이다. 질문을 멈추는 순간 나도 그 얇은 경계를 넘게 될 테니까. 다시 창 밖을 본다. 여전히 햇살은 따뜻하다. 나는 그저 코드 치는 게 좋을 뿐이다. 그래서 오늘도 IDE를 연다.