인지부채 청산 프로젝트
부끄럽지만 나는 바이브 코더ㅠㅠ
요즘 바이브 코딩을 꽤 많이 하고 있다.
아니, 거의 바이브 코딩만 한다.
부끄럽지만, 나는 바이브 코더다.
예전에는 기능 하나를 만들려면 직접 코드를 작성하고, 문서를 찾아보고, 에러가 나면 원인을 찾아가면서 꽤 많은 시간을 써야 했다.
그런데 요즘은 다르다.
"이런 기능 만들어줘."
라고 말하면 AI가 코드를 만들어준다.
에러가 나면 에러 메시지를 던져주고,
"이거 고쳐줘."
라고 하면 알아서 수정한다.
조금 복잡한 기능도 원하는 걸 설명하면 어느 정도 동작하는 결과물이 나온다.
처음에는 이게 굉장히 재미있었다.
개발 속도도 빨라졌고, 예전 같으면 귀찮아서 시도하지 않았을 기능들도 부담 없이 만들어볼 수 있었다.
그런데 어느 순간부터 조금 이상한 생각이 들기 시작했다.
이 짓거리가 나한테 도움이 되고 있는 걸까? 뭔가를 만들고 있다는 자기위로 행위가 아닐까?
집 주인에서 세입자로
물론 나도 무지성으로 AI가 생성한 코드를 복붙하는 건 아니다.
나름대로 코드를 리뷰한다.
AI가 어떤 코드를 수정했는지 확인하고, 대충이라도 읽어본다. 더 나은 선택은 없는지 확인하기도 하고, 모르는 기술이나 패턴이 나오면 찾아보기도 한다.
문제는 모든 작업에서 그러지는 않는다는 것이다.
프로젝트가 진행될수록 그 빈도가 점점 늘어난다.
솔직히 말하면 10번 중 7번도 제대로 읽어보지 않는 것 같다.
처음에는 파일 몇 개만 보면 됐다.
그런데 프로젝트가 커지면 AI가 수정하는 파일도 많아지고, 서로 연결된 코드도 많아진다.
그러다 보면 어느 순간부터 이런 생각이 든다.
"이 코드는 뭐지?"
"이건 왜 이렇게 되어 있지?"
"이 함수는 어디서 호출되는 거지?"
"이 구조를 왜 이렇게 만들었지?"
바이브 코딩을 하기 전에는 프로젝트를 만들면 부족하더라도 전체적인 구조에 대한 이해는 어느 정도 가지고 있었다.
집으로 비유하면 내 집에 어디에 어떤 방이 있고, 배관이 어떻게 연결되어 있고, 전기선이 어디로 지나가는지 정도는 알고 있었다.
그런데 바이브 코딩을 하면 할수록 달라졌다.
AI에게 이렇게 말한다.
"여기에 방 하나 만들어줘."
"여기에 화장실도 만들어줘."
"이 방에서 저 방으로 바로 갈 수 있게 연결해줘."
그러면 AI는 꽤 그럴듯하게 만들어준다.
사실 엄청 잘 만들어준다.
날이 갈수록 더 잘 만들어주는 것 같다.
처음에는 만들어준 결과물을 여기저기 뜯어본다.
어떻게 구현했는지 살펴보고, 개선할 만한 부분도 찾아본다.
그런데 AI가 점점 더 잘 만들수록 오히려 내가 안일해진다.
"이 정도면 알아서 잘하겠지."
그렇게 하나둘씩 맡기다 보면 어느 날 문득 깨닫게 된다.
내 집인데 내가 어디에 뭐가 있는지 잘 모르겠는데?
어떤 벽이 하중을 받고 있는지도 모르고, 이 배관을 건드리면 어디까지 문제가 생기는지도 모른다.
그냥 지금까지 별문제 없이 살아왔을 뿐이다.
프로젝트가 커질수록 느끼는 감정이 딱 이거였다.
내 집이 아니라 남의 집에 얹혀사는 기분.
그제야 내가 하고 있는 일이 조금 이상하게 느껴졌다.
나는 직접 코드를 만드는 사람이라기보다, AI에게 요구사항을 전달하고 AI가 만든 결과를 확인한 뒤 다시 다음 요구사항을 전달하는 사람이 되어가고 있었다.
어쩌면 나는 AI와 프로젝트 사이의 프록시가 되어버린 건 아닐까?
바이브 코딩은 독이 든 성배일까?
그럼 내가 개발자로서 성장하려면 바이브 코딩을 그만둬야 할까?
처음에는 그렇게 생각했다.
하지만 그것도 좋은 해결책 같지는 않았다.
다 같이 안 쓰는 거라면 몰라도, 나 혼자 이 좋은 걸 안 쓸 수도 없는 노릇이다.
그렇다고 AI가 만들어준 코드를 처음부터 끝까지 매번 꼼꼼하게 읽는 것도 현실적으로 쉽지 않다.
AI의 성능이 좋아질수록 내가 코드를 이해하는 속도와의 격차는 점점 벌어지고 있다.
그렇다면 이 문제를 어떻게 해결해야 할까?
나만 가지고 있는 문제는 아닐 것 같았다.
다른 개발자들은 이 문제를 어떻게 생각하고 있는지 궁금해졌다.
인지부채란 뭘까?
나와 같은 고민을 하고 있는 사람들이 있을까?
배우신 분들, 똑똑한 분들의 생각이 궁금해서 개발자 커뮤니티를 찾아봤다.
역시나 있었다.
인지부채(Cognitive Debt)
이미 AI를 사용하는 과정에서 발생하는 이런 문제를 설명하기 위해 사용되고 있는 표현이었다.
그리고 이 단어를 보고 나니 내가 느끼고 있던 문제가 꽤 명확하게 보였다.
내가 이해한 인지부채는 간단하게 말하면,
코드의 복잡도와 개발자의 이해도 사이에 생긴 격차다.
AI를 이용하면 코드는 빠르게 만들어진다.
기능이 추가되고, 파일이 늘어나고, 구조가 복잡해진다.
그런데 내가 그 속도를 따라가지 못하면 코드와 이해 사이에 점점 차이가 생긴다.
당장은 아무 문제가 없을 수도 있다.
기능이 잘 동작하고 테스트도 통과한다.
하지만 나중에 버그가 발생하거나 기능을 수정해야 하는 순간 문제가 나타난다.
"이 코드는 왜 이렇게 되어 있지?"
라는 질문부터 다시 시작해야 하기 때문이다.
결국 내가 나중에 지불해야 할 이해 비용이 생긴다.
기술부채와 비슷하다.
당장의 개발 속도를 위해 나중에 처리해야 할 비용을 남겨두는 것처럼, 바이브 코딩에서는 개발 속도를 얻는 대신 이해해야 할 비용을 뒤로 미뤄놓을 수 있다.
그렇다면 이 부채를 어떤 방식으로 어떻 갚아야 할까?
나를 위한 MCP 툴을 만들어 보자 CRDD
바이브 코딩을 할수록 인지부채가 쌓인다면, 이 부채를 효과적으로 갚으려면 어떻게 해야 할까?
누군가 문제는 인식에서부터 출발한다고 했다.
그렇다면 내가 지금 만들고 있는 프로젝트를 대상으로 내가 이 프로젝트를 얼마나 이해하고 있는지 측정해보면 어떨까?
단순히 "이 프로젝트는 Next.js로 만들어졌습니다." 같은 정보를 알려주는 것이 아니다.
실제로 내가 이 프로젝트의 중요한 부분을 이해하고 있는지를 확인하는 것이다.
먼저 프로젝트를 분석한다.
전체적인 구조를 파악하고, 각 기능과 코드가 어떤 역할을 하는지 정리한다.
그리고 내가 어떤 부분을 잘 알고 있고, 어떤 부분을 잘 모르는지 확인한다.
그다음 프로젝트에 대한 질문을 던진다.
단순한 프로그래밍 지식 문제가 아니다.
내 프로젝트의 코드를 실제로 이해하고 있는지를 확인하는 질문이다.
예를 들면 이런 것들이다.
- 이 프로젝트에서 이 API Route가 존재하는 이유는 무엇인가?
- 이 데이터를 이곳에 저장하는 이유는 무엇인가?
- 이 컴포넌트를 수정하면 어떤 기능에 영향을 줄 수 있는가?
- 왜 이 구조를 선택했으며, 다른 방법을 사용한다면 어떤 차이가 있는가?
틀렸다면 설명을 듣는다.
그리고 다시 질문을 받아본다.
내가 정말 이해했는지 확인하고, 필요하다면 다시 공부한다.
그 과정을 반복한다.
단순히 AI가 코드를 설명해주는 것이 아니라, 내가 직접 설명할 수 있는 상태를 만드는 것이다.
짱구를 굴려보다 보니, 이걸 MCP 툴로 만들어서 LLM과 연동시키면 좋을 것 같았다.
그래서 이름을 붙였다.
CRDD(Code-Recognition Debt Deductor)
이름은 거창하지만 목표는 거창하지 않다.
내가 AI를 사용해서 만든 프로젝트를 다시 AI에게 분석하게 하고, 그 프로젝트에 대한 나의 이해도를 측정하는 것이다.
그리고 이해하지 못하고 있는 부분을 찾아낸다.
그 부분을 공부하고, 다시 질문을 받아 검증한다.
그렇게 조금씩 인지부채를 줄여나가는 것이다.
처음에는 단순한 로컬 도구로 만들어볼 생각이다.
내 프로젝트의 Git Repository를 분석하고, 프로젝트 구조와 주요 코드의 관계를 파악한 다음 내가 어떤 부분을 이해하고 있는지 측정한다.
그리고 필요한 경우 프로젝트에 맞는 퀴즈나 질문을 만들어서 다시 검증한다.
일종의 AI 개발자를 위한 자기 점검 도구에 가깝다.
CRDD의 목표
이 프로젝트를 만든다고 해서 AI를 사용하지 않겠다는 생각은 없다.
오히려 반대다.
AI를 더 잘 사용하기 위해 만드는 프로젝트에 가깝다.
AI가 코드를 작성하는 것을 막고 싶은 것도 아니다.
AI가 만들어준 코드를 내가 얼마나 이해하고 있는지 확인하고, 모르는 부분을 찾아내고, 그걸 공부해서 다시 내 것으로 만드는 것.
그 과정을 자동화해보고 싶다.
결국 내가 원하는 건 하나다.
AI가 코드를 대신 작성하더라도, 그 코드가 내 프로젝트라는 사실만큼은 잃어버리지 않는 것.
일단은 내가 직접 쓰고 있는 프로젝트에 적용해볼 생각이다.
과연 내가 생각하는 것만큼 프로젝트를 이해하고 있는지,
AI에게 코드를 맡긴 대가로 얼마나 많은 인지부채가 쌓여 있는지,
그리고 실제로 그 부채를 줄일 수 있는지.
한번 직접 확인해보려고 한다.