작년 연말 해고 물결에 내 주변 친구 몇 명도 다 피하지 못했다. 나도 마찬가지였다. 보상금을 받고 집에 돌아왔는데, 처음 2주는 꽤 좋았다. 자연스럽게 눈을 뜨고, 게임도 하고 드라마도 봤다. 그런데 3주째가 되자 통장 잔고가 나가기만 하고 들어오지 않는 걸 보면서 마음이 조여오기 시작했다. 주택담보대출과 자동차 할부는 실직 여부와 상관없이 날짜가 되면 빠져나간다.
어쩔 수 없이 여러 외주 모집 단체방을 돌며 일을 찾기 시작했다. 예전에는 회사에서 코드를 짜면서 기술만 뛰어나면 된다고 생각했다. 아키텍처, 알고리즘, 성능 최적화를 입에 달고 살았다. 그런데 첫 외주를 받자마자 현실에 세게 얻어맞았다.
고객은 전자상거래를 하는 작은 사장님이었고, 친구 소개로 나를 찾아와 백오피스 관리 시스템 프로젝트가 있는데 기간은 한 달이고 가격은 꽤 낮게 부른다고 했다. 당시엔 빨리 일을 시작하고 싶어서 별생각 없이 받아들였다. 프로젝트 자체는 어렵지 않았다. 그냥 CRUD 작업이었고, 나는 React와 Ant Design으로 능숙하게 만들었다. 다 작성한 뒤 로컬에서 실행해 테스트도 문제없었고, 패키징해서 고객에게 보냈다.
반나절쯤 지나 고객이 위챗으로 스크린샷을 보내며 물었다. “형제님, 이 코드는 제가 잘 모르겠는데 좀 정리해줄 수 있나요?”
나는 그 순간 멍해졌다. 코드를 어떻게 더 정리하란 말인가? 그가 보낸 스크린샷을 열어보고 거의 숨이 넘어갈 뻔했다. 그는 내가 패키징한 bundle.js 파일을 그대로 열어본 것이었고, 그 안에는 Webpack으로 압축·난독화된 코드가 한 줄에 빽빽하게 수만 줄 들어 있었고 변수명은 전부 a, b, c, d였다. 그의 눈에는 그게 그냥 깨진 문자 덩어리였다.
나는 그에게 설명했다. 이건 압축된 것이고 배포용이라 용량이 작고 로딩이 빠르다고. 그는 얼핏 이해한 듯하면서도 다시 물었다. “그럼 나중에 뭔가 수정하고 싶거나 다른 사람이 유지보수하게 되면 볼 수 있는 버전을 하나 줄 수 있나요? 이건 도저히 못 하겠어요.”
그 순간 문득 깨달았다. 내 눈에는 당연한 ‘압축·난독화’가 고객 눈에는 ‘이 사람 믿을 수 없다, 코드를 똥처럼 짰다’로 보인다는 것을. 그는 Tree Shaking이 뭔지, AST 추상 구문 트리가 뭔지 모른다. 그가 인정하는 원리는 하나뿐이다. 코드는 사람이 볼 수 있어야 한다.
그 후 나는 철이 들었다. 매번 납품 전에 JS 포맷팅·압축 도구로 코드를 다시 정리했다. 도구는 간단하다. 압축된 코드를 들여쓰기와 줄바꿈이 있고, 변수명은 여전히 짧더라도 적어도 구조가 명확한 형식으로 되돌린 뒤 고객에게 보여줄 문서를 만든다. 때로는 소스 코드를 prettier로 포맷팅하고 주석까지 붙여서 함께 보내기도 했다.
결과가 어땠게 됐게? 이후 받은 외주에서는 고객 만족도가 수직 상승했다. 자기미디어를 하는 여성 고객은 작은 도구를 만들어 달라고 나를 찾았고, 코드를 받은 뒤 매우 기뻐하며 “비록 이해는 못하지만 보기만 해도 전문적으로 보여요”라고 했다. 또 다른 고객은 나를 친구에게 직접 추천하며 이 친구는 일 처리가 꼼꼼하다고 했다.
이 일로 꽤 오래 생각했다. 우리 기술자들은 늘 자기감동에 빠지기 쉽다. 얼마나 새로운 프레임워크를 썼고 얼마나 교묘한 알고리즘을 짰는지가 대단하다고 여긴다. 하지만 고객이 원하는 것은 사실 매우 소박하다. 쓸 수 있어야 하고, 문제가 생기면 사람을 찾을 수 있어야 하고, 코드가 천서처럼 보이면 안 된다. 특히 기술을 모르는 발주자들은 네가 믿을 만한지 판단하는 기준이 때로는 코드가 얼마나 정돈되어 보이는가일 뿐이다.
지금 내 외주 진행 절차에서 코드 포맷팅은 반드시 해야 하는 단계다. 프로젝트가 아무리 작아도 납품 전에는 도구로 한 번 돌려서 가독성 좋은 버전을 만든다. 가끔은 간단한 README까지 써서 고객에게 어떻게 배포하고 설정을 어떻게 바꾸는지 알려준다. 이 정도의 추가 수고가 장기 고객 여러 명을 쌓아주었다.
그래서 묻겠다. 대기업 해고가 무섭냐? 무섭다. 하지만 때로는 관점을 바꿔 생각하면, KPI와 OKR만 보는 환경을 떠났기 때문에 기술은 결국 사람을 위해 봉사해야 한다는 걸 진짜로 깨달았다. 고객이 신경 쓰는 것은 네 코드가 얼마나 고深한지가 아니라 네가 그를 편안하고 안심하게 해줄 수 있는가다. 그리고 코드 포맷팅이라는 작은 일이 바로 고객이 ‘이 사람이 나를 중요하게 여긴다’고 느끼게 하는 스위치다.