읽지 않는 코드의 시대, AI와 가독성의 재정의
![]()
들어가며
한때 우리는 아름다운 코드, 순수 함수의 합성과 타입 시스템, 수학에 가까운 로직을 꿈꿨습니다. 그걸 장인 정신이라 부르며 범주론이나 타입 레벨 프로그래밍까지 공부했죠. 그런데 어느 순간, 더 이상 아무도 그 코드를 직접 읽지 않는다는 걸 깨닫게 됩니다. 가독성의 정의 자체가 인간 중심에서 기계 중심으로 바뀌고 있습니다.

가독성의 두 가지 축
예전의 가독성은 사람이 로직을 쫓을 수 있는지, 리뷰에서 실수를 찾을 수 있는지, 몇 달 뒤의 내가 이해할 수 있는지를 묻는 것이었습니다. 클린 코드, SOLID, 디자인 패턴은 모두 인간의 작업 기억 한계 안에서 복잡성을 다루기 위한 도구였습니다. 이제 가독성은 기계를 위한 질문으로 확장됩니다. AI가 이 코드 패턴을 학습 데이터에서 본 적이 있는지, 수정 요청 시 올바른 위치를 찾을 수 있는지, 변경 후에도 시스템이 깨지지 않는지가 중요해집니다. 인간용 가독성은 추상화와 압축을, 기계용 가독성은 명시성과 예측 가능성을 추구합니다.
장인 정신의 딜레마
함수형 프로그래밍은 참조 투명성, 불변성, 강한 타입으로 인간의 인지 한계를 보완하려 했습니다. 그런데 AI에게는 그 '한계'가 없습니다. AI는 수많은 코드베이스를 보고 패턴으로 이해합니다. 인간의 인지 부하를 줄여주는 우아한 추상화는 AI에게는 오히려 노이즈에 가깝고, 반복적이고 평범한 명령형 코드가 더 익숙합니다. "배우기 어렵지만 장기적으로 이득"이었던 함수형의 장벽은, AI가 명령형 작성 진입 장벽을 낮추면서 상대적으로 더 높아 보입니다. 더 나아가 함수형의 아름다움을 알아보던 사람들조차 이제 Claude가 코드를 대신 읽습니다. 감상할 눈이 사라진 예술이 어떤 의미를 갖는지가 질문이 됩니다.
코드, 매개체로 서다
코드는 예전에 인간이 머물던 영역이었습니다. 매일 읽고 고치고, 변수명과 함수 위치로 토론했죠. 이제 코드는 인간의 의도와 기계의 실행을 잇는 매개체에 가깝게 바뀌고 있습니다. '의도 → 자연어 명세 → AI → 코드 → 실행' 흐름에서, 함수형 대 객체지향은 x86 대 ARM처럼 실행 계층의 선택지가 됩니다. 우리는 코드를 직접 짓는 쪽에서, 집을 주문하는 쪽으로 이동하고 있습니다.
AI 시대의 '좋은 코드' 미학
그렇다면 AI 시대의 좋은 코드는 무엇일까요. 몇 가지 원칙이 정리됩니다. 관용적 표현이 창의적 최적화보다 안전하고, 추론의 지역성—필요한 정보가 눈에 보이거나 한 번에 도달 가능해야 하며, DI·AOP·런타임 프록시 같은 암묵적 메커니즘은 피하는 것이 좋습니다. 예측 가능한 구조, 명시적 상태 전이(열거형 등), 장황하지만 의도가 드러나는 이름, 작은 파일과 단일 책임, 그리고 테스트를 명세로 두어 AI가 의도를 역추론할 수 있게 하는 것이 도움이 됩니다. 아이러니하게도 불변성·명시적 상태·작은 순수 함수 같은 원칙은 함수형 프로그래밍과 겹칩니다. 함수형은 '아름다워서'가 아니라 기계가 읽기 좋아서 살아남을 수 있고, 고차 추상화와 이론적 우아함은 줄어들어도 불변 데이터·순수 함수·명시적 타입은 남을 수 있습니다.
맺음말
코드를 매개로 인간과 인간이 소통하던 시대, 변수명과 구조로 의도와 사고를 나누던 시대가 저물어 가고 있습니다. 코드는 점점 인간의 눈을 거치지 않는 영역으로 이동하고, 시장은 우아함보다 속도를 원하며, AI가 명령형 코드의 속도를 크게 끌어올렸습니다. 그럼에도 우리는 순수 함수 체인이 테스트를 통과할 때, 타입 시스템이 컴파일 타임에 버그를 잡아줄 때의 만족을 기억할 수 있습니다. 그 아름다움은 LP나 기계식 시계처럼, 과정을 사랑하는 이들의 영역으로 남을 수 있습니다.