News Feed

AI 시대의 코드, 익숙함이 만든 비효율은 아닐까?

컨텐츠 정보

  • 조회 458

본문

자동차가 처음 발명됐을 당시, 많은 사람이 그것을 ‘말 없는 마차(horseless carriage)’라고 불렀다. 실제로 외형도 마차와 크게 다르지 않았다.

신문사들이 처음 웹사이트를 만들었을 때도 마찬가지였다. 초창기 뉴스 웹사이트는 종이신문의 지면 구성을 그대로 옮겨온 형태였고, 지금도 그 흔적이 일부 남아있다.

오늘날 우리가 사용하는 컴퓨터에는 ‘데스크톱’과 ‘파일’이 있다. 1950년대 사무실의 책상과 서류철 개념을 그대로 차용한 것이다.

오늘날 철도 궤도의 폭이 고대 로마 전차의 바퀴 간격에서 유래했다는 말도 있다. 물론 다소 신빙성이 떨어지는 주장이다.

이처럼 새로운 기술을 기존 방식으로 사용하는 현상을 흔히 ‘소가 다니던 길을 포장한다(paving the cow paths)’라고 표현한다. 소는 두 지점 사이의 최단 경로를 계산하지 않는다. 그저 익숙한 길을 되풀이해 밟을 뿐이다. 즉, 소가 다니던 길 위를 포장하는 것이 반드시 합리적인 것은 아니다.

경영학의 거장 피터 드러커는 이 생각을 다음과 같은 말로 정리했다.

애초에 할 필요가 없는 일을 효율적으로 해내는 것만큼 쓸모없는 일도 없다.

이 모든 이야기는 오늘날 개발자가 직면한 상황, 즉 AI가 코드를 대신 쓰는 시대를 떠올리게 한다.

코드는 정말 필요한가?

개발자는 수년 동안 자신만의 코딩 기술을 갈고닦는다. ‘클린 코드(Clean Code)’에 관한 책을 읽고, 올바른 코드 구조에 대해 블로그를 쓰며, “코드는 잘 작성되는 것만큼 잘 읽히고 유지보수돼야 한다”라는 신념을 당연하게 받아들인다.

AI 코딩은 이런 모든 전제를 바꿔놓는다. AI 코딩 에이전트는 인간이 하는 모든 훌륭한 작업을 볼 필요가 없다. 주석, 명확한 변수명, 깔끔하게 구성된 클래스 같은 것은 모두 인간을 위한 것이다. 생각해보면, 코드 자체가 인간이 만든 산물이다. 우리가 설계하고 구축하는 소프트웨어를 더 쉽게 이해하고 다루기 위해 만들어낸 장치다.

최근 필자는 클로드 코드(Claude Code)를 이용해 애플리케이션을 만들었다. 그에게(클로드 코드를 사람처럼 생각하지 않을 수 없었다) 구현체가 아닌 인터페이스(interface)에 맞춰 코드를 작성하라고, 그리고 각각의 클래스가 하나의 기능만 수행하도록 설계하라고 고집했다. 필자는 클로드가 만든 코드가 우리가 개발자로서 항상 추구하는 것, 즉 잘 작성되고 유지보수가 쉽고 결합도가 낮은 코드이기를 바랐다. 익숙한 이야기다.

그러다 문득 이런 생각이 들었다. 우리는 모두 소가 다닌 길을 포장하고 있는 것 아닐까? 에이전틱 AI가 소프트웨어를 만들 때 인간이 신경 쓰는 것을 똑같이 고려할 필요가 있을까? 클로드는 곳곳에 주석을 달았다. 그건 필자를 위한 것이었지, 자신을 위한 것은 아니었다. 그는 필자가 원한 방식대로 코드를 작성했다. 그런데 어쩌면, 클로드는 소프트웨어를 더 잘 작동시키는 더 나은 방법을 알고 있는 건 아닐까?

그렇다면 애초에 코드는 누가 필요로 하는 걸까? 언젠가 코딩 에이전트가 단순히 기계어(machine code)를 직접 생성하는 날이 올 수도 있다. 즉, 우리의 자연어를 바로 이진 코드로 컴파일하는 것도 불가능한 상상은 아니다. (이건 언어 전쟁을 끝내는 한 가지 방법이 될 수도 있다.)

지금 우리는 코드를 작성하고, 검토하고, 컴파일하고, 실행하는 과정을 거친다. 여기에 한 겹이 더해졌다. 우리의 의도를 에이전트에 설명하면 그 에이전트가 그것을 코드로 번역한다. 곰곰이 생각할수록 점 A에서 점 B로 가기엔 꽤 우회적인 방식처럼 보인다. 만약 이것이 ‘소가 다닌 길(cow path)’이라면, A에서 B로 가는 가장 직접적인 방법은 무엇일까?

소프트웨어로 가는 직선의 길

코딩 에이전트는 매일 더 똑똑해지고 있다. 그들이 발전할수록 우리는 그들을 더 신뢰하게 될 것이고, 그들이 작성한 코드를 커밋하기 전에 일일이 검토할 필요도 점점 줄어들 것이다. 언젠가 우리는 에이전트가 다른 에이전트의 코드를 검토하는 세상을 보게 될지도 모른다. 그렇다면 결국 인간이 더 이상 에이전트가 작성한 코드를 읽지 않게 되었을 때, ‘코드’라는 개념은 어떤 의미를 갖게 될까?

우리가 단위 테스트를 직접 작성하거나, 에이전트에게 대신 작성하도록 하는 일은 결국 인간의 만족을 위한 절차에 불과한 걸까? 코딩 에이전트는 과연 테스트를 필요로 할까? 머지않은 미래에는 에이전트가 자신이 만든 결과를 스스로 자동으로 검증하거나, 테스트를 하지 않아도 그 결과를 ‘예측할 수 있는’ 능력을 바탕으로 문제없이 동작하는 시스템을 만들어내는 모습을 충분히 상상할 수 있다.

스스로에게 물어보자. 마지막으로 컴파일러의 출력을 직접 확인해본 게 언제였는가? 그 출력 내용을 제대로 이해할 수는 있는가? 물론 일부는 가능할 것이다. 하지만 솔직히 말해, 대부분은 그렇지 않다.

어쩌면 AI는 인간의 언어 입력을 기반으로 지금보다 훨씬 직접적이고 효율적인 소프트웨어 설계 방식을 찾아낼지도 모른다. 우리가 아직 상상조차 하지 못한 새로운 접근 방식 말이다. 그때가 되면 코드는 더 이상 소프트웨어를 표현하는 주된 형태가 아닐 수도 있다.

어쩌면 코드는 피터 드러커의 말처럼, 애초에 하지 말았어야 할 일로 남게 될지도 모른다.
dl-itworldkorea@foundryco.com

관련자료

댓글 0
등록된 댓글이 없습니다.