소프트웨어 개발이라는 행위는 때로 예술과 공학의 경계를 넘나든다. 기계가 이해할 수 있는 언어로 인간의 의도를 표현하는 과정은, 엄밀한 규칙 아래서도 창의성이 발휘되는 몇 안 되는 영역이다. 그런데 이 창의성이라는 것이 반드시 ‘아름다움’으로 이어지는 것은 아니다. 오히려 때로는 기괴함, 혹은 의도치 않은 희극으로 변질되기도 한다. The Eye of Argon이란 작품은 그런 변질의 극단을 보여주는 사례다.
1970년대에 쓰인 이 판타지 소설은 문법 오류, 맞춤법 실수, 논리적 비약으로 가득 차 있다. 그런데도 불구하고 이 작품이 50년이 지난 지금까지 회자되는 이유는 무엇일까? 단순히 ‘나쁜 글’의 표본이기 때문일까? 아니다. 이 작품이 주는 진짜 교훈은, 인간이 규칙을 어기는 방식에는 일정한 패턴이 있다는 점이다. 그리고 그 패턴은 소프트웨어 개발에서도 놀랍도록 유사하게 발견된다.
코드를 작성할 때 우리는 컴파일러라는 엄격한 심판관을 앞에 둔다. 문법 오류는 즉시 지적당하고, 논리적 결함은 곧장 오류 메시지로 돌아온다. 그런데도 불구하고, 혹은 바로 그 때문에, 개발자들은 때로 기발한 우회로를 찾아내곤 한다. 가독성을 희생하면서까지 성능을 쥐어짜는 코드, 유지보수를 포기한 채 일회성 스크립트로 문제를 해결하는 방식, 혹은 과도한 추상화로 인해 원본 로직을 알아보기 힘든 구조물들. 이 모두가 The Eye of Argon의 문장처럼, 규칙을 어기되 나름의 논리를 가진 산물이다.
문제는 이런 ‘나름의 논리’가 종종 집단적 합의로 이어진다는 점이다. 특정 회사나 팀에서만 통용되는 코딩 스타일, 혹은 특정 언어의 문화 속에서만 이해할 수 있는 관행들이 그것이다. 예를 들어, C언어의 매크로 남용은 한때 ‘고급 기술’로 여겨지기도 했다. 코드의 길이를 줄이는 대신 가독성을 희생하는 이 방식은, 마치 The Eye of Argon의 작가가 단어들을 마구잡이로 이어붙인 것처럼, 외부인에게는 이해할 수 없는 암호로 여겨지곤 했다. 그런데도 불구하고 그런 코드가 실무에서 버젓이 살아남는 이유는, 그 암호가 ‘내부자’들에게는 나름의 효율성을 제공하기 때문이다.
그들은 눈을 감고도 그 코드를 짤 수 있었다. 아니, 눈을 감아야만 그 코드를 이해할 수 있었다.
하지만 이런 암호화된 코드는 결국 기술 부채로 돌아온다. 새로운 팀원이 합류했을 때, 혹은 시간이 지나 잊혀졌을 때, 그 코드는 더 이상 효율적이지 않다. The Eye of Argon이 문학계에서 ‘나쁜 글쓰기’의 예시로 회자되듯, 나쁜 코드도 결국은 그 나름의 역사와 맥락을 가진다. 문제는 그 맥락이 외부인에게 전달되지 않는다는 점이다. 주석이 없는 코드, 문서화가 되지 않은 API, 혹은 지나치게 복잡한 클래스 구조는, 마치 The Eye of Argon의 문장처럼, 그 자체로는 의미를 전달하지 못한다.
그렇다면 우리는 어떻게 해야 할까? 모든 코드를 완벽하게 문서화하고, 모든 규칙을 엄격히 준수하는 것이 정답일까? 아마도 아닐 것이다. 소프트웨어 개발은 결국 인간의 활동이고, 인간은 완벽하지 않기 때문이다. 중요한 것은 규칙을 어기는 방식에 대한 자각이다. The Eye of Argon의 작가가 자신의 글이 얼마나 기이하게 읽힐지 몰랐던 것처럼, 개발자들도 때로 자신이 짠 코드가 얼마나 이해하기 어려운지 깨닫지 못한다. 그 자각의 순간이 바로 성장의 시작이다.
기술의 발전은 이런 자각을 돕는 도구를 계속해서 제공한다. 린터, 정적 분석기, AI 기반 코드 리뷰 시스템 등은 개발자가 규칙을 어기는 순간을 실시간으로 지적해준다. 하지만 이런 도구들도 결국은 도구일 뿐이다. 진짜 문제는 코드의 미학이 아니라, 그 코드를 작성하는 인간의 태도다. 규칙을 알고 있으면서도 의도적으로 어기는 것과, 규칙을 모르기 때문에 어기는 것은 전혀 다른 문제다. 전자는 경험의 산물일 수 있지만, 후자는 무지의 결과다.
소프트웨어 개발이라는 행위가 20세기 중반에 시작된 이후, 우리는 수많은 ‘최선의 실천’을 만들어냈다. 그런데도 불구하고 여전히 나쁜 코드는 존재한다. 어쩌면 그 이유는, 우리가 코드의 아름다움보다 기능성에 더 집착하기 때문일지도 모른다. The Eye of Argon이 문학 작품으로서 가치를 인정받지 못했듯, 기능만 하고 가독성은 떨어지는 코드도 결국은 한계에 부딪힌다. 문제는 그 한계가 언제, 어떻게 드러날지 모른다는 점이다.
이 작품에 대한 자세한 내용은 위키피디아에서 확인할 수 있다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.