LLM 생성 코드를 수동으로 다시 입력하여 인지 부채를 방지하기 – Hacker News 토론에서 얻은 통찰
LLM 생성 코드를 수동으로 다시 입력하여 인지 부채를 방지하기
안커 세티는 개인 프로젝트에서 인지 부채를 피하기 위해 LLM에게 채팅에서 코드를 생성하도록 요청한 후, 모델이 파일을 직접 편집하는 대신 자신이 모든 줄을 수동으로 입력한다.
LLM과 함께 일할 때의 인지 부채 문제
LLM을 사용해 한 번에 전체 기능을 생성하면 저자가 만족하지 못하고 방향을 잃게 되며, AI가 생성한 풀 리퀘스트를 검토하는 것은 즐겁지 않다. 그는 산업 전반에 걸쳐 인지 부채가 쌓이고 있으며, 곧 갚아야 할 시기가 올 것이라고 우려한다.
나는 소프트웨어 산업이 매우 큰 인지 부채를 쌓고 있으며, 곧 그 부채를 갚아야 할 시기가 올 것이라고 걱정한다. 언젠가 우리는 디지털 인프라의 대부분이 어떻게 구성되는지 이해하지 못하게 될 것이다. 나는 개인적으로 산업 전체의 방향을 바꾸는 데는 실패할 수 있지만, 나는 자신이 세상에 내보내는 소프트웨어를 완전히 이해하고 있다는 것을 확신할 수는 있다. 그 외의 모든 것은 전문직의 부도덕함이다.
수동 재입력 워크플로우
저자는 LLM에게 채팅에서 제안된 편집 내용과 명령어만 보여주도록 명확히 지시하며, 리포지토리 파일을 직접 수정하지 않도록 한다.
이 프로젝트에 들어가는 모든 코드 줄을 이해하고 싶습니다. 제가 명시적으로 요청하지 않는 한, 프로젝트 파일을 생성하거나 편집하거나 이동하거나 이름을 바꾸거나 삭제하지 마세요. 대신, 제가 직접 수동으로 입력할 수 있도록 채팅에서 모든 제안된 편집 내용을 보여주세요.
제가 명시적으로 요청하지 않는 한, 프로젝트 파일을 수정하거나 종속성을 설치하거나 리포지토리 상태를 변경하는 명령어를 실행하지 마세요. 대신, 그 명령어를 채팅에 표시해 주세요. 그러면 제가 직접 실행하겠습니다.
저는 경험이 풍부한 개발자입니다. 명시적으로 요청하지 않는 한, 문법, API, 프로그래밍 개념, 구현 세부 사항에 대해 설명하지 마세요.
각 줄을 입력함으로써 기존 코드베이스에 코드가 어떻게 맞물리는지에 대한 정신적 모델을 구축할 수 있으며, 낯선 API를 검색하거나 환각 또는 나쁜 설계 선택을 감지할 수 있다.
저는 LLM이 생성한 코드를 에디터에 수동으로 한 줄씩 입력하면서, 그 코드가 어떻게 작동하고 기존 코드베이스에 어떻게 맞물리는지에 대한 정신적 모델을 구축합니다. 만약 어떤 API나 알고리즘이 이해되지 않으면, 멈추고 검색하거나 LLM에게 설명을 요청할 수 있습니다.
코드를 직접 입력함으로써 속도를 늦출 수 있으며, 이는 LLM이 만들어낸 환각이나 나쁜 설계 선택을 더 잘 감지할 가능성이 높아집니다. 코드를 입력하면서 정리하고, 재구조화하고, 주석을 추가하고, 일반적으로 제 취향에 맞게 조정할 수 있습니다.
이 워크플로우는 코드베이스에 공간적 지도를 만드는 효과도 있으며, 향후 변경이나 LLM에 대한 프롬프트 작성이 더 쉬워진다.
수동 입력의 이점
저자는 LLM에 완전히 위임하는 것보다 느리지만(10배보다는 약 2배의 속도 향상), 생산성보다는 깊은 이해를 더 중시한다.
LLM을 이렇게 사용하면, LLM을 전혀 사용하지 않는 것보다 빠르게 일할 수 있지만, 스스로 생각하게 해주는 기계를 사용하는 사람들보다는 여전히 느립니다. 10배 빠른 대신 아마도 2배 빠를 뿐입니다. 하지만 속도에서 잃는 것만큼, 코드에 대한 더 깊은 이해를 얻고 있습니다.
그는 이 관행을 프로그래밍을 배울 때 책이나 포럼의 예제를 수동으로 입력하라는 전통적인 조언과 비교한다.
LLM이 생성한 코드를 내 코드베이스에 수동으로 입력하는 것은 정확히 같은 학습 과정처럼 느껴집니다. LLM과 작업하는 가장 효율적인 방법은 아닐 수 있지만, 저는 생산성보다 이해를 더 중시합니다.
커뮤니티 반응
Hacker News의 댓글들은 지지에서 비판까지 다양한 견해를 제시했으며, 대안 전략도 제안했다.
지지 또는 유사한 관행
- @wahern: "어제 좋은 조언이었고, 오늘도 좋은 조언이며, 내일도 좋은 조언입니다. … 코드를 수동으로 입력하면 더 넓은 시각을 고려할 시간과 공간을 갖게 됩니다."
- @bandrami: "보조적으로, Stack Exchange 시절에는 내가 찾은 답변을 항상 수동으로 입력해서 내가 시스템에 무엇을 추가하고 있는지 이해했는지 확인했습니다."
- @andai: "제드 쇼 방법!"
- @FailMore: SmallDocs를 사용해 LLM이 생성한 코드와 연결을 유지한다고 언급함.
- @sltr: 타이핑이 지식 유지에 도움이 된다는 '생성 효과(generation effect)'를 근거로 제시함.
- @twoquestions: "지금 제가 Electron을 배우기 위해 하고 있는 일입니다. 저는 사실 Opus가 제가 원하는 애플리케이션을 작성하는 튜토리얼을 작성하게 했고, 그 과정에서 조각조각 수정하고 있습니다."
이 방법에 대한 비판
- @npras1: "수동으로 LLM 생성 코드를 다시 입력하는 것은 큰 부정입니다. 하지만 여전히 수동으로 코드를 입력하는 것은 좋습니다. 다만 LLM에게 맡기지 말고, 자신의 뇌가 생성한 코드여야 합니다."
- @estebarb: arXiv 논문을 인용함: "학생들이 이러한 출력물을 자신의 사고나 비판적 참여의 대체물로 의존할 때, 학습 과정은 본질적으로 손상됩니다. 진정한 학습은 의미의 능동적 구성, 지식의 통합, 콘텐츠에 대한 반성적 참여를 필요로 합니다."
- @f311a: "이건 재미없어 보입니다. 수동으로 코드를 작성하는 것보다는, 개인 프로젝트에서 수동으로 코딩하는 것이 더 좋습니다. 배우는 데 더 효과적입니다. 다시 입력하는 것은 학습에 비효율적입니다. 마치 미적분 문제를 다시 입력하는 것과 같아서, 그 과정에서 배우지 못합니다."
- @petcat: "이건 사람들이 자신의 전문적 업무나 프로그래밍 취미에 대해 창의적인 생각을 하려는 노력을 게을리하는 데서 비롯된 '색칠하기' 같은 끔찍한 직업입니다."
- @a2128: "제가 과거에 다른 사람의 과제를 복사하거나, 온라인에서 책 보고서를 복사하고, 정답지로 과제를 완성했던 사람으로서, 이 전략이 인지 부채를 축적할 뿐 아니라 방지하지 못한다는 것을 알려드립니다."
대안 제안
- @smegma2: "어떤 해결책으로 보이긴 하지만, 반대로 해보는 건 어때요? 코드의 틀과 일반적인 구조(클래스, 인터페이스, 함수 서명)를 먼저 작성한 후 LLM이 채워주게 하면 어떨까요?"
- @reacweb: "작은 프로젝트에서 LLM으로 코드를 생성한 후, 그것을 큰 프로젝트로 수동으로 복사하세요."
- @overthenexttwod: LLM에 사고를 위임하는 것은 스스로 코드를 작성하는 것보다 약한 정신적 모델을 만들어낸다고 주장하며, LLM을 생산성 향상 도구가 아니라 독립된 에이전트로 조종해야 한다고 제안함.
- @jruz: $20 플랜으로 내려가서 코드를 작성하지 않고 질문만 하도록 한다고 설명함.
결론
저자의 수동 재입력 방법은 지루한 작업에 LLM의 도움을 받으면서도 이해를 유지하려는 시도이다. Hacker News 토론에서는 이 기법이 전통적인 타이핑 학습의 현대적 해석으로 공감을 얻는 반면, 일부는 비효율적이거나 불필요하다고 보며, 대신 개인적으로 코드를 작성하고 LLM은 검토, 틀 잡기, 질문 응답에만 사용하는 것을 제안한다.
Sources
관련
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch