Fable을 이기는 ‘짧은 목줄’ AI 코딩 방법
요약
AI 코딩 도구를 사용할 때 지나친 마이크로매니징(짧은 목줄)이 오히려 모델의 잠재력을 제한하고 개발자의 정신 모델 형성을 방해할 수 있다는 논쟁을 다룹니다. 설계 단계의 중요성과 AI 답변을 검토하는 과정 사이의 균형에 대해 다양한 관점을 제시합니다.
핵심 포인트
- 강한 모델일수록 미묘한 설계 논의를 통해 더 나은 코드를 작성할 수 있음
- 과도한 마이크로매니징은 모델의 창의적 기여를 차단할 위험이 있음
- AI에 의존할 경우 코드베이스에 대한 개발자의 정신 모델 구축이 어려워질 수 있음
- 계획 및 아키텍처 단계에서의 고수준 논의가 구현 단계의 감독보다 중요함
이 “짧은 목줄” 방식은 보조 도구라기보다 목발처럼 보이고, 처음부터 AI에 문제를 충분히 설명하지 않았거나 출력물을 검토·반복하지 않았다는 신호 같음
Fable 같은 강한 모델을 구현 단계에서 손잡고 끌고 가는 건 시간 낭비이자 Fable 낭비임. 강한 모델일수록 더 미묘한 설계 논의가 가능하고 예전보다 훨씬 나은 코드를 씀. 설계와 구현을 논의하고, 이상해 보이는 부분을 질문하고, AI 답변을 실제로 읽는 과정 자체가 더 나은 해법을 찾는 데 도움 됨
예전에 탐욕 알고리즘 풀이를 만들려다 Opus와 논의하는 과정에서 기존 MILP 라이브러리로 문제를 정확히 풀 수 있다는 제안을 받았고, MILP를 들어본 적도 없었지만 최종 구현은 혼자 했을 때보다 더 낫고 단순해졌음
강한 모델과 더 미묘한 논의가 가능하다고 하지만, Claude에게 이해 안 되는 작은 변경을 왜 했냐고 물었더니 코드 경로를 바탕으로 “제1원리부터 추론했다”고 답했음
그런데 동작하지 않았고, 그 제1원리 추론 단계를 설명해보라고 하자 실제로는 그냥 지어냈다고 답함. 그래서 모델과의 미묘한 논의라는 말은 믿기 어렵다
대체로 동의함
계획 단계에 충분히 투자했고 프로젝트의 기존 아키텍처와 관례가 탄탄하다면, 여기서 말하는 것만큼 구현 단계에 많은 감독이 필요하지 않을 수 있음
“초기 아이디어가 멍청했고 더 나은 방법이 있음을 발견할 수 있다”는 건 보통 계획과 아키텍처 단계에서 고수준으로 발견함
에이전트가 원치 않는 방향으로 “탈선”하는 문제도 예전만큼 나쁘지 않고, 영향 있는 변경에는 최소한의 테스트 커버리지가 있어야 함. 그 테스트가 단지 구현된 동작을 “고정”하는 수준이어도 됨. 마지막 검토 논의는 리뷰나 적대적 리뷰 에이전트가 찾은 것 이상을 확인할 좋은 기회임
정확히 어느 부분에 반대하는지 조금 헷갈림. AI 응답을 읽고 코드를 검토하는 건 결국 같은 방식으로 보임
MILP 예시는 이 접근법이 막을 일이 아니고, 계획 단계에서 드러났을 것임
결국 세부가 중요하고, 작업 시작 프롬프트를 어떻게 주느냐가 영향을 줌. 그래도 출력 확인, 모델이 하는 일에 관여, 왜 그렇게 만들려는지 캐묻는 과정은 반드시 필요함
글이 AI를 마이크로매니징하는 느낌임. 주니어 직원처럼 생각하면, 마이크로매니징을 통해 원하는 일을 원하는 방식대로 하게 만들 수는 있음
하지만 그 직원의 아이디어는 테이블에 올라오지 않고, 장기적으로 팀 전체에 이로울 수 있는 기여도 사라짐
이 방식으로 쓰고 있음
생성되는 모든 것을 이해하고 코드베이스에 대한 작업 지식을 계속 유지할 수 있게 해줌. 방향 전환도 쉽게 시킬 수 있음
사이드 프로젝트에서 2주 동안 이렇게 했지만 결국 코드베이스에 대한 정신 모델이 없는 상태가 됐음
직접 만들지 않고는 그 모델을 만들 방법이 없다고 더 확신하게 됨
안타깝게도 AI 이전에도 같은 문제를 겪었음
망각 곡선 때문에 내 정신 모델은 처음 만들던 기간보다 그리 오래 지속되지 않음. 어떻게 다시 구축할지는 아직 알아내지 못함
큰 프로젝트의 매니저라면 어떻게 모델을 만들까? 직무상 프로젝트 전체를 파악해야 하지만 실제로 코드를 많이 쓰거나 리뷰할 필요는 없는 상황에서 말임
모델에게 코드 설명을 요청하면 됨
잘 모르겠음. 가능은 하다고 보지만, 이해하지 못한 부분을 의도적으로 파고들어야 하고 그게 지침
다만 직접 작성했을 때처럼 “내가 직접 만들 수 있는 능력”은 잘 쌓이지 않는다는 데는 동의함
예를 들어 어떤 효과를 얻으려면 어떤 변경을 해야 하는지 알고, 실제로 변경하면 기대한 결과가 나오기 때문에 내 정신 모델이 작동한다는 건 앎. 하지만 비슷한 것을 처음부터 직접 만들라면 못 만들 것 같음. 접근법이 내 손이 닿지 않는 곳에 있는 느낌인데, 설명하기 어렵다
코드 리뷰는 나에게 잘 맞음
실제로 코딩할 줄 아는 사람은 중요한 일에 AI를 쓸 때 다 이렇게 쓰는 줄 알았음
내가 틀렸나? 요즘 다들 그냥 YOLO 모드로 돌리는 건가?
맞음. 신경 안 쓰는 노트북 하나를 준비해 Claude가 WSL 안에서 마음대로 만지게 해둠
funemployment의 재미임. 다시 일을 시작하면 꽤 흥미로운 변화가 될 듯함
지금은 실행시켜 두고, 맥주 마시면서 한 시간쯤 큰 방향의 비평과 자기점검/폐쇄 루프 피드백을 새로 세팅한 뒤, 다시 마음대로 돌리게 하는 식이라 단순함
“YOLO 모드”, 즉 “위험하게 권한 건너뛰기”를 쓰지 말라는 게 이걸 말하는 건가?
Claude를 bypass-permissions 말고 다른 방식으로 어떻게 쓰는지 궁금함. Claude가 쓸 수 있는 도구 목록을 오래 관리해봤지만, 결국 돌아와 보면 한 도구의 출력을 다른 도구로 파이프하려 했고 명시적으로 허용되지 않았다며 멈춰 있는 일이 반복됐음. 그냥 grep 같은 일이었는데도 멈추니 짜증났음
bypass-permissions에서는 “그냥 동작”함. 물론 기존 코드 분석과 변경 제안에만 쓰고, 뭔가 깨져도 그건 버전 관리가 있는 이유라고 봄
대체로 글쓴이에 동의함. 무엇보다 LLM이 하거나 말하는 어떤 것도 믿지 말라를 덧붙이고 싶음
오늘 Claude에게 3개 컴포넌트의 동작을 통일하라고 했고, 5번이나 시켰음. 매번 끝에 가면 여전히 맞지 않는 부분이 있었고 Claude는 그걸 합리화할 방법을 찾아냈음
물어보면 “제 책임입니다”라거나 “의도적인 선택이라고 생각했습니다”라고 답했지만, 먼저 무엇을 해야 할지 질문하거나 문제를 말한 적은 한 번도 없었음. 그러니 짧은 목줄을 잡고, 생각 과정을 보고, 헛짓을 바로잡아야 함. 오늘 Sonnet 5 기준이고, 내일은 더 나아질 수도 나빠질 수도 있음. 오늘 Claude에게 통하는 말투가 내일은 다른 결과를 줄 수 있음
“AI로 X 하는 법”류의 글에서 문제는 상황마다 전부 다르다는 것임. 예를 들어 Symfony 프로젝트를 3.1에서 8.1로 올리는 작업은 경로가 명확함
메이저 버전마다 작성된 마이그레이션 가이드를 따르고, 모든 라우트와 인증 흐름 등을 테스트하면 됨. 이 테스트도 직접 선별할 수 있고 어떤 것은 200, 어떤 것은 302를 반환할 수 있음
선택적으로 안전망을 먼저 작성해서 수동 테스트를 줄이고, 예를 들어 PHPStan 기준선 등을 둘 수도 있음
라우트가 종단 간 기능적으로 의도대로 동작하면 끝임. 여기에는 스냅샷 테스트도 쓸 수 있음
이런 경우 AI를 지켜볼 필요가 없음. 마지막에 코드를 리뷰할 수는 있지만, 중간중간 수동 승인할 필요는 없어서 안전 기능은 꺼둠
“AI로 X 하는 법”의 문제라기보다 인터넷 콘텐츠를 받아들이는 방식에 가까움
대부분은 하나의 관점에서 글을 쓰지만 실제 관점은 넓고, 한 상황에서 통하는 것이 다른 상황에는 통하지 않음. 소프트웨어 엔지니어링 전체가 결국 무엇을 어디에, 언제 적용할지 파악하고 나머지는 무시하려는 일에 가까움
많은 회사 블로그 글은 모든 경우에 통하는 은탄환이 있는 것처럼 믿게 만들지만 보통 사실이 아님
결국 늘 소프트웨어 엔지니어링에서 다뤄온 것처럼 “어떤 것은 어떤 상황에서 통한다”에 가깝고, 옳고 그름보다 상황별 실제 적용이 다를 뿐이며 정상임
rector는 써봤나?
AI는 주니어에서 중급 엔지니어 정도임. 그렇게 대하면 이 모든 편집증 없이도 바이브 코딩과 엄격한 엔지니어링의 장점을 모두 얻을 수 있음
처음부터 격리된 VM에서 Claude를 YOLO 모드로 돌렸음. 엔지니어에게 자기 노트북을 주는 것과 같음. Claude가 기능을 PR 가능한 지점까지 만들고, 나는 다른 엔지니어처럼 diff를 리뷰한 뒤 적절한 모양으로 다듬고 넘어감
미숙한 엔지니어도 같은 실수를 함. rm -rf도 본 적 있음, 루트에서 한 건 아니었지만. 모든 권한을 거부한 채 누군가를 마이크로매니징했다면 미쳐버렸을 것 같음
이 관점에 강하게 동의하고, 그래서 이 글이 더 이해가 안 됨. PR이 이미 관문 아닌가? 작업 공간 안에서 에이전트가 뭘 하든 말든, 기여가 git 저장소로 게이트되고 개발에 이상한 프로덕션 접근이 필요하지 않다면 신경 쓰지 않음
주니어/중급 엔지니어 비유에도 동의하지만 큰 단서가 있음. AI는 배우는 법을 모르는 주니어 엔지니어 같음
Memento의 주인공과 일하는 것 같음. 매일 LLM이 출근하면 지금까지의 작업에서 아무것도 배운 게 없고, 매일이 첫날임
물론 Memento 주인공처럼 작업 공간 곳곳에 포스트잇과 알림을 뿌려 도와줄 수는 있음. 노력하면 “학습”이라는 것에 가까워질 수 있는데, 이건 팀의 모든 소프트웨어 개발자에게 말 그대로 가장 중요한 특성임
하지만 쉽지 않고 도구도 아직 부족함. 내가 해본 최선은 Obsidian 같은 도구로 쓰는 “두 번째 뇌”에 가까웠음. 슬프게도 두 번째 뇌는 첫 번째 뇌의 대체물이 아니라고 봄. 솔직히 AI 에이전트처럼 배우고 성장하지 못하는 엔지니어라면, 내가 일해본 회사 어디서든 첫 달 뒤 해고됐을 것임
그래도 주요 AI 제공사나 누군가가 앞으로 이 부분을 개선할 거라고 꽤 낙관함. 좋은 메모리와, 문맥에 맞춰 기억을 더 잘 주입하는 잘 설계된 사고 시스템이 결합되고, 감독 없이 실제 학습을 포착할 수 있다면 불가능한 과제처럼 보이진 않음
이런 문제를 이미 누군가 풀었고 내가 뒤늦게 알아차리기만 하면 되는 상황이길 바라며 이런 글을 읽지만, 지금으로서는 에이전트를 설계하는 능력이 처음보다 조금 나아진 정도임
내 경험도 같음. 나는 아주 똑똑하고 빠른 인턴에 더 가깝다고 봄. 크게 될 게 보이고 여러 면에서 이미 나보다 훨씬 낫지만, 여전히 숙련자의 손길로 방향을 잡아줘야 함
내 경험칙은 AI를 위해 만드는 특수 프로세스가 사람에게도 타당해야 하며, 그렇지 않다면 가치가 없다는 것임. 좋은 명령줄 도구, 긴 명령 출력 자동 요약, Markdown 문서와 워크플로는 사람에게도 유용함
실수와 남용을 막으려면 마이크로매니징이 아니라 샌드박스와 범위 제한 권한을 써야 함
알아내고 싶은 건 AI 에이전트와의 좋은 페어 프로그래밍 워크플로임. 고성능 모델에게 큰 작업을 시킬 수 있고 그건 잘 됨. 저수준 모델을 IDE 보조로 쓸 수도 있고 그것도 잘 됨. 하지만 둘은 별도 워크플로임
정말 유용한 건 고성능 모델과 키보드를 주고받으며 함께 만드는 방식임. 다만 내 머신에서 완전 YOLO 모드로 돌리는 건 아니어야 함. 이 부분이 인간과 LLM의 차이임. 너무 빠르기 때문에 탈선할 때 키보드를 다시 낚아채기가 어려움
Claude에게 실제 노트북을 주면 Linux 블루투스 오디오 문제도 고칠 수 있음 ;)
어떤 VM/프로비저닝을 쓰고 있나?
“AI는 주니어에서 중급 엔지니어”라는 말은 이제 사실이 아니고, 그렇게 착각해봤자 도움이 안 됨
AI는 뭔지 정확히 아무도 모르지만 주니어나 중급 엔지니어는 아님. 도메인 맥락이 없고 5시간마다 기억 없이 깨어나는, 판잣집에 사는 원자력 스태프 엔지니어에 가까움
LLM은 여전히 다음 토큰 예측기임. 더 모호한 지시를 줘도 올바른 단계를 찾아낸다고 해서 지능이 있다는 뜻은 아님. 네가 모델 훈련에 쓰인 하네스와 같은 언어를 말하고 있다는 뜻임
그리고 거기에는 한계가 있음. 개념 증명 수준이나 단순 앱에 머물러 있다면 현재 모델이 여전히 얼마나 제한적인지 모를 수 있음. 그런 곳에서는 작업을 쪼개야지, 그럴듯한 단계를 나열하는 토큰 예측기를 믿으면 안 됨
어딘가에는 반드시 인간 루프가 있어야 함. 권한 건너뛰기를 시작하면 최선은 대박이지만, 더 가능성 높은 건 차선의 해법과 토큰 낭비임. 정말 무서운 건 모델이 지시를 무시하고 멍청한 짓을 해서 하루를 망치는 경우임
이건 CNC 기계처럼 날카로움. 유용하지 않은 건 아니지만 위험할 수 있음. 평행주차를 못 한다면 괴물 기계로 나무를 깎으려 하거나 비좁은 동네에 Ferrari를 세우려 들지 않는 편이 낫다
다음 토큰 예측은 알고리즘이 아니라 인터페이스임. “다음 토큰을 예측”하는 과정은 임의로 복잡하거나 단순할 수 있고, 주어진 작업을 수행하는 능력도 얼마든지 높거나 낮을 수 있음
LLM이 “토큰 예측기”라서 뭔가를 할 수 있다거나 할 수 없다고 말하는 건 범주 오류임. 인터페이스가 단단한 한계는 아님
“지능이 아니다”에서 지능을 어떻게 정의하는지 모르겠음
LLM에는 지능이 없다고 미리 정해두는 공리를 쓰지 않으면서, 언어 모델은 제외하고 인간은 포함하는 정의가 어떻게 가능한지 궁금함
그렇다면 너도 그냥 다음 단어를 말하는 사람임
LLM을 “다음 토큰 예측기”라고 부르는 건 완전히 환원적이고 불성실함. 기술적으로는 맞지만 너도 마찬가지임
보통 이 말로 뜻하는 건 “훈련 데이터, 즉 인터넷의 다음 토큰을 예측할 뿐”이라는 의미인데, 원시 모델에 대해서라면 사실일 수 있음. 하지만 모델은 사후 학습을 거치므로 이 설명조차 더는 맞지 않음
“지능이 아니다”라는 말은 유용하지도 않고, 내 생각엔 틀렸음. 네 지능 정의에 맞는지 누가 신경 쓰나. 여전히 인상적인 일을 해내고 있고, 네가 암시하는 것보다 훨씬 더 대단한 일도 함
어떤 기준을 넘으면 지능적이라고 부를 건가?
원글은 아직 2025년에 머물러 있는 느낌임
“AI가 여러 번 탈선하고 실제로 소프트웨어를 써볼 때야 알아차릴 것”이라고 하지만, 이제 그 AI가 직접 소프트웨어를 사용해 버그를 찾고 고칠 수 있으며 새 기능도 추진할 수 있음
에이전트가 원치 않는 일을 시작하는 일은 있지만 예전보다 훨씬 줄었고, 완전 자율 에이전트 쪽 논거는 약해지는 게 아니라 강해지고 있음
“사람이 코드베이스를 이해하는 건 인간적으로 불가능하다”는 말도 낡아 보임. 이제 인간이 코드베이스를 이해할 필요가 없어지고 AI가 이끌어가는 방향으로 가고 있다고 봄
AI 회사들은 이런 무모한 slopmaxxing을 밀어붙일 동기가 있음. 최종 결과는 네 비즈니스가 그들에게 완전히 의존하고, 제품 가치도 전부 그들에게서 나오게 되는 것임
많은 사람이 여기에 올라타고 있지만, 나는 어리석은 유행이라고 봄
맞음, 무언가를 이해한다는 건 너무 2025년식임
이 말은 엔터테인먼트나 미디어 같은 비핵심 소프트웨어에는 맞을 수 있음
하지만 보안 리스크가 큰 시스템에는 절대 맞지 않음. 은행, 항공, 국방 같은 분야에서는 AI가 분명 기여하겠지만, 인간 엔지니어링 이해와 독립적으로 움직이진 못함
효과적인 프로그래밍과 아키텍처에 대한 감각이 충분히 좋은 사람이라면, AI가 직접 소프트웨어를 사용해 버그를 찾고 기능을 만든다는 말에 동의하지 않을 것임 짧은 목줄 방식은 훈련 데이터 밖에서 작업할 때 좋은 결과를 보장하는 방법임. 평균보다 조금만 나은 프로그래머라도 LLM으로 빠르고 품질 좋은 개발을 보장하는 유일한 방법은 이 방식이라고 봄
인간이 더는 코드베이스를 이해할 필요가 없다는 말은, AI가 아직 처참하게 서툰 프로그래밍 세계를 모르는 데서 나오는 것 같음. 수동 메모리 관리가 있는 언어들에서 메모리 처리를 자주 망치는 걸 꾸준히 봤음. Valgrind 루프에 넣어두면 되는 정도로 단순하지 않음
완전 자율 에이전트 쪽 논거가 강해진다는 건 못 느끼겠음. 몇 주 전 Claude Code + Opus 4.8로 겪은 일임. 작업은 그리 복잡하지 않았고, 새 API 엔드포인트 4개와 클라이언트에서 웹소켓으로 스트리밍되는 이벤트였음
API 정의, 요청/응답 모델, 데이터베이스 스키마, 전체 흐름을 여러 번 반복하며 다듬었고, 모순 제거와 문서 수정을 많이 직접 했음. Opus는 계속 탈선했고 최종 문서는 500줄이 넘었음
API 통합 테스트도 다시 오가야 했음. AI가 문서에서 바로 테스트를 만들지 못해, 먼저 Given-When-Then 주석이 있는 자리표시자를 만들고 손으로 검토·수정한 다음, 두 번째 반복에서 테스트를 구현했음. 리뷰 후 수정한 실수가 많았음
구현 단계에서는 API 문서, 동작하는 테스트, 수정 차단 훅, 6개 이상의 “모범 사례” 스킬, “러버덕”과 “코드 단순화” 에이전트, 테스트·린터·컴파일 오류 확인용 스크립트를 제공했음. 계획, 실행, 리뷰와 여러 번의 수정을 거쳐 기능은 구현됐고 테스트도 모두 통과했음
코드 리뷰에서는 평균적으로 코드 20줄당 문제 하나를 찾았음. 코드 스타일은 제외하고도 Kubernetes 서비스에서 인메모리 세마포어 사용, 단일 요청 중 같은 레코드를 갱신하려고 DB 호출 8번 수행, 한 번에 한 컬럼씩 갱신, 트랜잭션 없는 읽기-수정-저장, 비즈니스 로직·복구·인가 실수가 있었음
결과는 거의 한 주 업무 시간, 토큰 비용 100달러 이상, 그리고 “이 노력이 가치 있었나?”라는 생각뿐이었음. 개발자 2명 팀을 두고 있는데, 방금 한 명의 PR을 리뷰했더니 80%가 슬롭이었음
비슷한 접근을 해봤지만 나에게는 잘 맞지 않았음. 속도 향상이 거의 없었거나 없었음. 생산성을 얻으려면 샌드박스 안에서 어느 정도 YOLO 모드가 필요하다고 봄
목표는 모델에게 가능한 한 많은 일을 외주화하면서, 그 결과를 이해하고 리뷰하는 데 필요한 노력을 최소화하는 것이어야 함
예를 들어 모델에게 버그 원인 찾기, X의 개념 증명 만들기, 무언가를 점진적으로 최적화하기, 가이드가 있는 잘 정의된 리팩터링 등을 맡기는 식임
사람들이 루프를 만든다고 말하는 것도 매우 비슷함. 모델이 하는 일을 최대화하고, 그것을 통제하기 위해 내가 해야 하는 일을 최소화하는 것임
글에 별 내용이 없었음
현재 유행하는 문구를 따라 하는 것뿐임
작년에는 “AI는 확률적 앵무새일 뿐”이었음
올해는 “AI가 코드를 쓸 수는 있지만, 인간이 여전히 리뷰해야 한다!”임. 물론 그 리뷰에도 AI를 씀
1년만 더 지나면 서사는 “코드 리뷰는 AI만 할 수 있고, AI의 리뷰를 리뷰할 수 있는 것도 AI뿐이다. 인간은 의미 있는 감독을 유지하기 위해 AI의 최종 의견만 읽으면 된다”가 될 것임 골대는 계속 움직이지만 확신은 절대 움직이지 않음
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기