Reducing the cognitive load of AI changes
AI가 만든 코드의 인지 부하 줄이기
AI가 낯설거나 어색한 추상화 이름을 붙이면 코드를 읽을 때마다 의미를 다시 파악해야 합니다. 글쓴이는 리뷰 전에 용어와 대안을 정리하게 한 뒤 원하는 이름으로 바꾸며, 그 결과 코드를 더 쉽게 검토한다고 설명합니다.
- 주제
에디터 노트
이 글은 AI 문제를 다루지만 진단의 절반은 AI 이전부터 있던 문제입니다. 낯선 추상화 이름이 코드를 볼 때마다 머릿속 재조회를 강제한다는 건 DDD가 말해온 공유 언어의 중요성과 같은 이야기입니다. LLM은 그저 새로운 혼란스러운 이름을 사람보다 쉽고 많이 만들 뿐입니다. 그래서 글쓴이의 해법이 재밌습니다. 리뷰 전에 AI에게 용어집 문서를 만들게 하고, 자신의 언어로 다시 지어 전체 치환하는 방식입니다. AI를 협력자로 두고 사투리를 번역하는 셈입니다. 다만 @mfk의 사례가 한 걸음 더 나갑니다. AI가 추정치를 실제 기록보다 믿기 시작하자, 이름에 estimate를 박아넣어 모델의 확신을 낮추려 했습니다. 이름은 읽는 사람의 문제가 아니라, 생성하는 모델의 믿음까지 건드는 거네요.
AI 요약
AI가 만든 코드를 많이 리뷰하다 보면 추상화 이름이 익숙한 표현과 다를 때가 있습니다. 예를 들어 LLM이 MutationIntent라고 부르는 개념을 글쓴이는 EditRequest라고 부르는 편이 자연스럽다고 느낍니다. 이름이 낯설면 코드를 볼 때마다 의미를 머릿속에서 다시 연결해야 합니다. 새 용어가 여러 개 생기고 서로 얽히면 이 부담이 쌓여 동작을 잘못 이해할 수도 있습니다.
리뷰 전에 용어를 정리합니다
글쓴이는 AI 변경 사항을 검토하기 전에 모델에게 추상 객체, 과정, 개념에 쓰인 독특하거나 맞춤형인 용어를 추려 임시 Markdown 파일로 만들게 합니다. 각 용어의 뜻과 선택 이유, 대체 후보도 함께 적게 합니다. 글쓴이가 용어를 확인하거나 직접 이름을 정하면 AI가 문서까지 포함해 전체 코드에서 이름을 바꿉니다. 글쓴이는 자신의 언어 습관에 가까운 코드가 되어 리뷰하기 한결 쉬워졌다고 말합니다.
Lobsters 반응
- @tclancy — 좋네요. 에이전트가
GLOSSARY.md파일을 함께 작성하고 참조하게 하면서 비슷한 데까지는 왔는데, 항목에 더 나은 이름을 붙일 생각은 못 했습니다.- @kornel — 용어집은 이름뿐 아니라 코드 품질에도 큰 도움이 됩니다. 각 요소의 책임도 설명할 수 있으니까요.
- @wrs — 공통된 개념 어휘는 프로그래밍 전반에 필수이며 AI에만 해당하지 않습니다. 예를 들어 Domain-Driven Design(DDD)의 핵심 특징이기도 합니다. 하지만 LLM은 사람보다 훨씬 쉽게 새롭고 혼란스러운 이름을 만들어내고, 그 이름도 대체로 더 나쁩니다. 명명 규칙을 통제하는 방법은 무엇이든 도움이 됩니다. 저는 설계 개요 문서에 용어집을 넣습니다.
- @landon — AI는 온갖 코드베이스를 뒤섞어 놓은 것 같습니다. 용어를 지어낸다기보다 먼 곳에서 가져오는 것 같아요. 회사에 막 입사한 사람과 일하는 느낌입니다. 매일 새로 배우는데, 이전 직장은 세상 모든 직장이었던 셈이죠.
- @wrs — LLM만 탓할 수는 없겠네요. 사람도
cookies같은 말을 만들었으니까요. 그래도 컴퓨터가 그런 말을 쓰면 덜 매력적으로 들립니다. Claude가minting으로 고유 ID를 만든다고 하기 전까지 저는 그런 표현을 들어본 적이 없습니다. 물론 제가 나이가 많아서 그럴 수도 있겠네요.no cap도 들어본 적은 없지만, 실제로 쓰는 말인 건 압니다.
- @mfk — 운동 기록용 작은 Android 앱을 vibe coding으로 만들었습니다. 운동 간 중량을 환산하는 중량 추정기가 들어 있습니다. 만들다 보니 AI가 추정기와 그 시뮬레이터를 실제 운동 기록보다 더 정확하다고 확신하기 시작했습니다. 수학적 이름을 쓰지 못하게 하고
estimated1RM이나bicepStrengthEstimate처럼 이름에estimate를 명시하도록 이름을 대대적으로 바꿨습니다. 그게 의도한 효과를 냈는지는 아직 판단하기 이르지만, 수학적 형식이 실제보다 더 확실하다는 쪽으로 모델의 가중치를 밀었을 수도 있다고 생각합니다.
원문: amoffat.github.io / 번역·요약: Trawling