나는 코드의 대부분을 AI로 작성한다. 그래서 내가 그것을 이해하고 있는지 테스트하는 도구를 만들었다.
요약
AI가 작성한 코드를 단순히 배포하는 것을 넘어, 개발자가 코드를 진정으로 이해하고 있는지 검증하기 위한 CLI 도구 'OwnYourShip'을 소개합니다. 이 도구는 코드베이스를 스캔하여 개발자에게 퀴즈를 내고 이해도를 추적함으로써 실질적인 역량을 키우도록 돕습니다.
핵심 포인트
- AI 생성 코드에 대한 무조건적인 의존은 개발자의 이해도 저하를 초래함
- 설명할 수 없는 코드를 배포하는 것은 윤리적, 기술적 위험을 동반함
- OwnYourShip은 Claude API를 활용해 코드 로직에 대한 퀴즈를 생성함
- 단순 코드 생성 능력을 넘어 코드 이해력이 미래 개발자의 차별화 요소임
많은 개발자들이 겉으로 말하지 않는 사실 하나를 솔직하게 고백하겠습니다. 저는 코드의 대부분을 AI가 작성하게 합니다.
저는 현재 커리어 전환 단계에 있습니다. 8개월 전만 해도 저는 지역 농구 협회의 운영을 담당하고 있었습니다. 하지만 오늘날 저는 6개의 배포된 ML (Machine Learning, 머신러닝) 및 분석 프로젝트를 보유하고 있습니다. 이러한 속도는 제가 LLM (Large Language Models, 거대언어모델)에 크게 의존했기에 가능했습니다. 저는 원하는 것을 설명하고, 모델이 작성하면, 제가 검토하고, 반복하며, 배포합니다.
하지만 그 루프(loop) 과정 중 어딘가에서 저를 괴롭히는 무언가를 발견했습니다. 버그도 아니었고, 실패도 아니었습니다. 하나의 패턴이었습니다. 저는 Claude에게 무언가를 시키고, 초록색 체크 표시가 뜨는 것을 지켜보며, 그것을 _내가 해낸 작업_으로 머릿속에 저장하곤 했습니다.
하지만 정말 제가 해낸 것이 맞을까요? 테스트는 통과했습니다. 앱은 실행되었습니다. 하지만 만약 여러분이 저에게 그것이 실제로 어떻게 작동하는지 설명해 달라고 하거나, 코드 블록들이 서로 어떻게 상호작용하는지에 대한 뼈대만이라도 설명해 달라고 했다면, 저는 제 자신의 코드를 마치 낯선 사람의 코드처럼 읽고 있었을 것입니다.
그 지점에서 저는 스스로 선을 그었습니다. 그것이 어떻게 작동하는지 설명할 수 없다면, 무언가를 만들었다고 말할 수 없다. 배포하는 것과 소유하는 것은 다릅니다. 여기에는 실질적인 윤리적 측면이 있습니다. 이해하지 못하는 코드를 세상에 내놓고 그것에 대한 공로를 인정받는 것은, 자기 자신뿐만 아니라 여러분이 배포하는 것을 사용할 사람들에 대한 조용한 부정직함입니다.
또한 이는 상당히 위험합니다. 무언가가 어떻게 작동하는지, 그리고 어떻게 작동해야 하는지를 모른다면, LLM이 생성한 결과물이 효율적인지, 그리고 법적/윤리적 경계 내에 있는지 어떻게 알 수 있겠습니까?
실용적인 측면도 있습니다. AI는 이미 제가 혼자 할 수 있는 것 이상을 할 수 있습니다. 그 격차는 매일 더 커지고 있으며, 특히 이번 주에 Fable 5가 출시되면서 더욱 그러합니다. 이는 실제로 중요한 기술, 즉 제가 이 산업에 진입하기 위해 필요한 기술은 코드를 생성하는 것이 아니라는 것을 의미합니다. 그것은 생성된 것을 이해하고, 그것이 올바르게 수행되고 있는지 아는 것입니다. 역량(Capability)은 저렴합니다. 이제 이해력(Comprehension)이 차별화 요소입니다.
그래서 저는 저 자신을 그 기준에 맞추기 위해 도구를 만들었습니다.
OwnYourShip (oys)
OwnYourShip은 여러분의 코드베이스를 스캔하고 여러분 자신의 코드에 대해 퀴즈를 내는 CLI (Command Line Interface) 도구입니다.
워크플로우는 간단합니다:
- 프로젝트 디렉토리에서
oys를 실행합니다. - 도구가 코드베이스를 스캔하여 그 안에 무엇이 있는지 파악합니다.
- 여러분의 함수, 여러분의 로직, 여러분의 설계 결정(design decisions)에 관한 퀴즈 질문을 생성합니다.
- 여러분이 답합니다. 도구는 여러분이 실제로 이해하고 있는 것과, 이해하는 척하고 있는 것을 추적합니다.
이 도구는 로컬 FastAPI 서버와 통신하는 Python CLI이며, SQLite를 통해 시간이 지남에 따른 여러분의 진행 상황을 추적합니다. 질문 생성은 Claude (Anthropic의 API, 여러분의 개인 키 사용 - 퀴즈 대상이 되는 코드 스니펫(code snippets)을 제외하고는 아무것도 여러분의 기기를 벗어나지 않습니다)에서 실행됩니다. 퀴즈 모드는 '쉬움(Easy)'부터, 답변이 가장 취약했던 영역에 집중하는 '맞춤형 적응 모드(Tailored adaptive mode)'까지 제공됩니다.
이 이름은 곧 논지입니다: 설명할 수 없는 것은 배포(ship)해서는 안 된다.
이것을 만들며 배운 점
AI 보조 코딩의 책임감(accountability)에 관한 도구를 만들기 위해 제가 AI를 헤비하게 사용했다는 아이러니를 저도 잘 알고 있습니다. 하지만 그것이 바로 핵심입니다. 이 도구는 제가 이런 방식으로 일하기 때문에 존재하는 것이지, 그럼에도 불구하고 존재하는 것이 아닙니다. 저는 AI를 덜 사용하고 싶은 것이 아닙니다. 프로젝트를 만들어내려는 저의 추진력이 저의 성장을 조용히 대체하는 대신, 성장을 견인하기를 원할 뿐입니다.
몇 가지 배운 점은 다음과 같습니다:
격차는 실재하며, 조용히 찾아옵니다. 3번의 세션 전에 제가 "작성했던" 함수들에 대해 퀴즈가 나왔을 때, 정답률은 예상보다 낮았습니다. 초록색 체크 표시(Green ticks)는 이해도를 측정하지 못합니다. 솔직히 조금 창피했습니다.
설명하는 것은 검토(reviewing)와는 다른 기술입니다. AI의 출력을 읽으며 고개를 끄덕이는 것은 이해하는 것처럼 느껴집니다. 하지만 처음부터 설명을 생성하거나(텍스트 모드), 4개의 실행 가능한 객관식 옵션 중에서 골라내는 것(MC 모드)은 훨씬 더 효과적인 방법입니다.
해결책은 저렴합니다. 인터뷰 전에 저장소(repo)에 대해 10분 동안 퀴즈를 푸는 것이 코드를 한 시간 동안 다시 읽는 것보다 제 자신감을 높이는 데 더 도움이 됩니다.
솔직한 한계점
아직 초기 단계입니다. Python 스캐너가 가장 정확하며 (AST 기반), 다른 언어들은 현재로서는 가벼운 방식으로 처리됩니다. 질문의 품질은 코드베이스의 복잡성에 따라 달라집니다. README에 로드맵이 있습니다.
하지만 작동하며, 오픈 소스 (MIT)입니다. 만약 당신이 AI와 함께 개발하면서, 당신이 배포한 결과물과 당신이 실제로 이해하고 있는 것 사이의 미묘한 간극을 느껴본 적이 있다면 — 이 도구는 바로 당신을 위해 만들어졌습니다.
GitHub: https://github.com/JemHRice/ownyourship
제 코드에 대한 피드백, 이슈, 혹은 아주 냉혹한 질문이라도 진심으로 환영합니다. 그것이 이 프로젝트의 핵심 아이디어니까요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기