쓰레기 코드 ☠️ 없애는 법
요약
AI가 생성하는 코드가 과도한 추상화와 불필요한 복잡성을 가지는 'Slop' 문제를 지적하며, 코드의 품질을 개선할 필요성을 강조합니다. 본 영상에서는 에이전트의 코드 품질을 향상시키고 응답을 간결하게 만드는 네 가지 실용적인 방법을 소개합니다.
핵심 포인트
- AI 생성 코드는 불필요한 복잡성(Slop)과 과도한 추상화를 포함할 수 있습니다.
- 코드 리뷰는 작성보다 어렵지만, AI의 결과물을 검증하는 과정이 필수적입니다.
- 답변 스타일을 제어하기 위해 '주의 집중 시간' 같은 마크다운 파일 모음을 활용할 수 있습니다.
- 핵심 답변 제시 후 간결한 요점을 제공하는 '주의 집중형 답변' 방식이 유용합니다.
Video: 쓰레기 코드 ☠️ 없애는 법
Channel: 노마드 코더 Nomad Coders
Duration: 10m 35s
Source: subtitle (auto, ko)
Transcript:
"코딩으로"라는 표현을 만들어낸 사람은 정작 자신이 만들어낸 코드는 마음에 들지 않는다고 합니다. 안드레 카르파티는 에이전트가 추상화를 과도하게 부풀리고, 코드 미관이 좋지 않으며 , 코드 블록을 여기저기 복사 붙여넣기하여 코드를 엉망으로 만든다고 말합니다. 그는 또한 모델이 당신을 대신하여 잘못된 가정을 하고 그것을 그대로 따라간다고 말합니다. 그들은 여기저기에 쓸모없는 코드를 남겨두고, 100줄이면 충분할 코드를 1,000줄씩 작성한다. 올해 AI를 활용한 코딩을 해보셨다면 , 그의 말이 맞다는 것을 아실 겁니다. 아주 사소한 것을 하나 요청했는데, 공장, 인터페이스, 설정 파일, 심지어 존재할 필요도 없었던 기능에 대한 테스트 코드 네 개까지 얻게 되었습니다 . 그러고 나서 당신은 그 모든 내용을 읽으면서 '이게 왜 필요할까?'라고 생각하게 되죠. 그래서 지난 한 주 동안 제 코드베이스들을 하나씩 살펴보면서 코드의 기울기를 조정하는 데 시간을 보냈습니다 . 우리는 인터넷을 뒤덮었던 저품질 AI 생성 기사, 이미지, 코드 등을 '슬롭(Slop)'이라고 부르기 시작했습니다 .
깨진 코드는 쉽게 만들어집니다. 찾아내면 고쳐야 해. Slop 코드가 컴파일됩니다. 테스트를 통과했고, 요청한 대로 어느 정도 작동합니다. 문제는 어쩌면 이 모든 것이 존재할 필요도 없었고, 그렇게 복잡할 필요도 없었을지도 모른다는 점입니다. 그러니 코드를 한 줄씩 꼼꼼히 읽어야 합니다. 그렇지 않으면 코드 때문에 불안감을 느끼고, 뭔가를 출시했는데 작동 방식이나 내용에 대해 완전히 확신하지 못하는 그런 기분을 감수해야 할 겁니다 . 그리고 그 코드를 작성하는 데 모델이 9초가 걸립니다 . 하지만 자신의 이름을 걸고 발표하려면 그 내용을 충분히 잘 이해해야 합니다. 코드 리뷰는 언제나 코드 작성보다 더 어렵습니다 . 글을 쓰다 보면, 쓰면서 이해하게 된다. 타이핑하는 동안 머릿속에 정신적 모델이 만들어집니다 . [음악] 인공지능이 작곡할 때는 그 단계가 전혀 일어나지 않아요. 그래서 이제 당신은 아무도 내리지 않은 결정을 역추적해야 합니다 . 그래서 오늘은 제가 에이전트의 코드 품질을 향상시키고 응답을 읽기 쉽게 만드는 데 사용하는 네 가지 방법을 보여드리겠습니다 .
첫 번째 운동은 2분 정도 걸리고, 효과는 즉시 느껴질 거예요. 그리고 마지막 방법은 당신의 에이전트가 자신 의 업무에 대한 진실을 말하도록 강요할 것입니다. AI는 덧셈기입니다. 기본값은 더 많음입니다. 더 많은 코드, 더 많은 단어, 더 많은 파일, 더 많은 추상화. 뭔가를 개선해달라고 부탁했는데, 오히려 관리해야 할 것들이 더 늘어났어요 . 버그에 대해 설명해달라고 요청했는데, 답변으로 장문의 텍스트가 쏟아져 나왔습니다. 그리고 이제 우리 모두 그런 '발톱' 같은 표현에 질렸을 거라고 생각해요 . 당신 말이 전적으로 맞습니다. 이 기능은 하중을 지탱합니다. X가 아니라 Y야. 벨트와 멜빵을 함께 착용하는 거지. 무슨 말인지 알겠죠? 이 문제를 해결하기 위해 저는 주의 집중 시간을 활용하고 있습니다. 이는 상담원이 어떻게 답변해야 하는지를 알려주는 마크다운 파일 모음입니다 . 클라우드 코드에서는 이러한 스타일을 출력 스타일로 설치합니다 . Codeex나 Open Code에서는 agents.m MD 파일에서 스타일 파일을 링크하기만 하면 됩니다.
설치 과정은 이게 전부입니다. 2 분밖에 안 걸려요. 그 안에는 몇 가지 스타일이 있습니다 . 스파르탄, 정말 솔직한 답변을 원한다면 [음악] 체크리스트를 활용한 상태 업데이트 요약과 제가 사용하는 '주의 집중형 답변' 방식이 있습니다. 먼저 핵심 답변을 제시하고, 그 뒤에 빠르게 훑어볼 수 있는 간략한 요점을 보여줍니다. 차이점을 보여드리겠습니다. 새로운 소셜 앱에 어떤 데이터베이스를 사용해야 할까요? PostQL일까요, MongoDB일까요? 라고 물었을 때, 이 기능을 사용하지 않으면 수백 단어에 달하는 답변을 받게 됩니다. 하지만 '주의 집중형 답변'을 사용하면 같은 질문에 400단어가 아닌 94단어로 줄어듭니다. 같은 정보이지만 몇 초 만에 읽을 수 있습니다. [음악] 이 기능을 활성화한 이후로 AI와의 계획 회의가 훨씬 더 효율적이 되었습니다. 저는 실행 계획서를 읽어도 끝까지 읽고 나서 지치지 않습니다. 그리고 그게 중요한 이유는 계획이야말로 코드가 되기 전에 오류를 잡아내는 곳이기 때문입니다.
주의 집중 시간이 인공지능의 대화 방식을 결정합니다. 자, 이제 코딩 방식을 수정해 봅시다. 카르파티의 불만을 기억하시나요? 잘못된 가정, 쓸모없는 코드, 100줄이면 충분한데 1000줄이나 되는 코드 . 누군가가 그 불만 사항들을 접수해서 파일로 만들었습니다. 이건 안드레 카르파티의 기술이라고 불리는데, 말 그대로 하나의 혈전이에요. MD 파일, 4개의 마찰이 포함된 마크다운 파일 하나. 이 프로젝트는 모든 사람이 같은 문제를 겪고 있기 때문에 GitHub에서 20만 개 이상의 별점을 받았습니다. 네 가지 규칙은 간단합니다. 첫째, 코딩하기 전에 생각하세요 . 섣불리 판단하지 마세요. 요청 내용이 모호한 경우, 자동으로 하나를 선택하는 대신 옵션을 제시하십시오. 두 번째, 단순함이 우선입니다. 문제를 해결하는 줄만 수정하세요 . [음악]을 기존 스타일에 맞추고 나머지는 모두 그대로 두세요. 넷째, 목표 지향적인 실행. 그리고 이것은 카르파스가 직접 자신의 말로 전하는 조언입니다. 그것에게 무엇을 해야 할지 지시하지 마세요.
성공 기준을 제시하세요. 로그인 버그를 수정하는 대신, 버그를 재현하는 테스트 코드를 작성하세요 . 모델들은 목표 지점에 도달할 때까지 반복적인 동작을 매우 잘하기 때문에, 아무것도 고장 나지 않았는지 확인하고 그대로 진행하세요. 그러니 그들이 실제로 확인할 수 있는 것을 제공하세요. 플러그인으로 설치 하거나 파일을 다운로드하여 프로젝트에 드롭할 수 있습니다. 하지만 마크다운 파일에는 다음과 같은 문제가 있습니다. 그것들은 단지 지침일 뿐이며, 모델이 음악을 작곡하기 전에 읽는 단어들입니다. 모델은 그것들을 무시할 수도 있습니다. 의도한 것은 아니지만, 컨텍스트가 커지고 세션이 복잡해질수록 모델은 지시를 따르는 능력이 떨어집니다. 그러므로 세 번째는 제안이 아니라 도구입니다. 이것은 ' 엉망진창 방지'라고 불리는 규칙 세트입니다. [음악] 이 규칙들은 자바스크립트와 타입스크립트용 인터프리터인 Oxlint에 대한 것입니다. llinter는 코드를 읽고 사용자가 지정한 규칙을 위반하는 모든 줄(음악)에 플래그를 표시하는 프로그램입니다 .
인공지능은 전혀 관련되지 않았습니다. 같은 코드에 대해 항상 같은 불만이 제기됩니다. llinter를 사용하면 원하는 규칙을 무엇이든 만들 수 있습니다. 코드에 콘솔 로그가 없습니다 . 예를 들어, 규칙을 설정했는데 llinter가 그 규칙을 발견할 때마다 경고음을 울린다면 어떨까요? Antislo는 코드 품질을 저하시키는 AI의 행동을 금지하는 규칙 집합입니다. 해당 파일들을 설치하고 에이전트가 린트 명령어를 실행하도록 설정하세요. 수정 사항이 있으면 수정하고, 린트를 다시 실행하고, 문제가 완전히 해결될 때까지 이 과정을 반복하십시오 . 이 모델은 마크다운 파일에 작성된 명령어를 무시할 수 있지만, 린트 명령이 실패한 경우는 무시할 수 없습니다 . 규칙 두 가지를 보여드리겠습니다 . 첫 번째는 조건부 객체 스프레드에 대한 반대 의견입니다. 인공지능이 좋아하는 일 중 하나죠. 타임아웃이 존재하는 경우에만 타임아웃을 추가합니다. 해당 규칙이 적용되면 에이전트는 다음과 같이 다시 작성해야 합니다 . 검토하기가 훨씬 쉽습니다.
두 번째 규칙은 객체를 매개변수로 받는 이 저장 함수처럼 모호한 매개변수를 사용하는 것입니다 . 좋아요, 그런데 어떤 물건이죠? 우리는 무엇을 절약하고 있는 걸까요? 이제 save 함수에 어떤 값이 전달되는지 이해하려면 전체 코드베이스를 읽어야 합니다. 다른 규칙이 이를 알려줍니다. 사용자를 저장하는 경우 , 그렇게 알려주세요. 수정된 내용은 다음과 같습니다. 이제 save 함수가 무엇을 기대하는지 알았고, 타입스크립트로도 확인할 수 있습니다. 역경사 설정을 하려면 규칙을 직접 복사 하거나 에이전트 스킬을 사용하여 자동으로 설정할 수 있습니다 . 이 규칙들은 보편적인 기준이 아니라, 클러스터 엔지니어인 저자 의 음악적 취향과 선호도를 반영한 것입니다 팀에 맞게 변경해야 합니다. 반법주의적인 관점에서는 판단의 여지가 줄어듭니다. 아니요, 더 깔끔한 코드를 작성해 주세요. 이진 게이트. 먼지는 검사에 통과하거나 통과하지 못합니다. 그게 다예요. 이제 이 규칙들을 다시 살펴보세요. 그들 모두는 같은 이유로 존재한다.
인공지능이 판단을 내렸는데, 그 결과가 마음에 들지 않았습니다. 특정 필드를 건너뛰는 방법, 매개변수를 입력하는 방법. 모든 규칙은 모델이 스스로 내린 결정을 수정하는 역할을 합니다. 하지만 인공지능이 더 나은 판단을 내리도록 애쓰는 대신 , 사전에 하나의 결정을 내려 나중에 수백 개의 결정을 줄여나간다면 어떨까요? 인공지능이 내리지 않는 모든 결정은 사용자가 검토하지 않는 결정입니다. 그리고 바로 그런 결정이 있습니다. 에이전트가 코드를 한 줄도 작성하기 전에 언어를 만들어내는 겁니다. 인공지능이 데이터를 그룹화하는 가장 선호하는 방식을 예로 들어보겠습니다. 수동으로 작성된 코드는 AI가 수많은 판단을 내리는 과정을 거칩니다. 누적기, 키 변경자, 복사, 반환 여부 등 각각의 판단은 미묘하게 잘못될 수 있으므로 Cotlin으로 작성된 모든 코드를 검토해야 합니다. 표준 라이브러리에는 이미 해당 기능에 대한 이름이 있으므로 판단은 더 이상 필요하지 않습니다. 연관 함수가 올바른 함수인지 아닌지만 확인하면 됩니다.
이것이 전체 검토입니다. 더 큰 코드도 있습니다. 데이터를 정의하는 한 줄짜리 코드인데, 이 한 줄에는 동등성 확인, 복사, 해시 코드, 컴파일러가 생성한 두 개의 문자열이 포함되어 있습니다. TypeScript에서는 AI가 이러한 헬퍼 함수를 수동으로 작성하는데, 이 모든 헬퍼 함수 역시 판단을 내리는 과정입니다. 동일성 판단에 어떤 필드가 포함되나요? 카피는 깊이 있는 내용을 담고 있나요, 아니면 피상적인가요? 인공지능이 결정했고, 이제 당신이 확인할 차례입니다. 코틀린에서는 아무도 결정을 내리지 못했다. 컴파일러는 모든 세션, 모든 코드베이스에서 매번 동일한 방식으로 음악을 생성했습니다. 명심하세요, 에이전트는 어제의 에이전트와도 의견이 일치하지 않지만, 컴파일러는 항상 자기 자신과 의견이 일치합니다. 솔직히 말해서, 과보호가 게으름을 없애는 건 아닙니다. 과도 하게 설계된 코딩 코드베이스도 문제없이 컴파일됩니다 이 영상에 나오는 모든 도구는 여전히 사용하겠지만, 언어가 인공지능으로부터 대신해주는 모든 판단은 [음악] 당신이 읽지 않아도 되는 한 줄이 될 것입니다 .
그렇게 쌓이면 큰 금액이 됩니다. 매일 모든 리뷰를 확인하세요 . 자, 만약 이 글을 읽고 대구 요리에 대해 궁금해지셨다면, 제가 좋은 소식을 하나 알려드리겠습니다. 포옹이 15주년을 맞이했으니 지금 바로 무료로 배울 수 있어요. 이를 기념하기 위해 코딩 교육 프로그램인 Codling의 개발사이자 Intelligj Idea를 만든 회사인 Jet Brains는 유료 코딩 강좌를 완전히 무료로 제공하기로 했습니다. 이 과정들은 프로젝트 기반으로 진행되므로 직접 해보면서 배우게 되며, 완전 초보자부터 숙련된 개발자까지 모든 수준의 학습자를 위한 내용이 포함되어 있습니다. 그리고 코틀린을 배우는 것은 생각보다 훨씬 더 큰 도움이 될 것입니다. 구글은 안드로이드 개발에 있어 이 언어를 권장 언어로 지정했습니다. 그래서 제가 코틀린이라고 하면, 많은 분들이 안드로이드 앱을 떠올리실 것 같습니다. 그건 사실이지만, 그게 전부는 아닙니다. Cotlin 멀티플랫폼을 사용하면 Android 앱을 빌드하는 데 사용하는 동일한 코드베이스로 Cotlin Native를 사용하여 네이티브로 컴파일된 iOS 앱도 빌드할 수 있습니다.
그리고 이는 모바일에만 국한되지 않습니다. 웹에서는 코딩을 통해 컴파일됩니다. 백엔드 측면에서 보면, 기존 Java 및 Spring 프로젝트에 완벽하게 통합됩니다. 아니면 Kater Jet Brain에서 제공하는 Cotlin 기반의 서버 구축 프레임워크를 사용하여 처음부터 서버를 직접 개발하는 방법도 있습니다 . 스프링이 필요 없습니다. 이건 단순한 마케팅 문구가 아닙니다. cotling을 사용하면 팀은 Java보다 최대 40% 적은 코드를 작성하고 개발 속도는 30~50% 빨라지는 것을 확인할 수 있습니다 . Google, Amazon, Meta, Uber와 같은 기업들은 이미 Cotlin을 대규모로 프로덕션 환경에서 사용하고 있습니다. 유지보수해야 할 코드 양을 줄이고, AI가 판단해야 할 부분도 줄여봅시다. 하지만 무료 강좌는 10월 9일까지밖에 이용할 수 없습니다. 설명란에 링크가 있습니다. 늦기 전에 얼른 가서 가져오세요. 자, 그럼 지금까지 우리가 어디까지 왔는지 정리해 볼까요? 주의 집중 시간이 상담원의 말투를 결정합니다.
카르파티 파일은 빌드량을 줄이도록 지시합니다. 안티는 음악에서 새어 나오는 것을 포착하고, 언어가 허용하는 것을 포착합니다. 그럼 이제 끝난 거죠? 아니요, 왜냐하면 이 중 어느 것도 , 그 어느 것도 가장 중요한 질문에 대한 답이 아니기 때문입니다 . 해당 코드가 실제로 작동하는 건가요? 코드는 깔끔하고, 타입 검사도 통과했고, div도 작고 보기 좋지만, 기능에는 여전히 문제가 있을 수 있습니다. 이제 마지막 두 가지를 말씀드리겠습니다. 에이전트의 어휘에서 특정 단어를 금지합니다 . 완료. 당신도 이런 순간을 알잖아요. [음악] 담당자가 말합니다. "완료됐습니다. 이제 모든 게 정상적으로 작동할 겁니다." 그리고 그렇지 않습니다 . 아무 문제도 없었어요. 아무것도 테스트되지 않았습니다. "완료"가 다음에 나올 가능성이 가장 높은 [음악] 단어였어요. 네 번째 도구는 완료 전 검증이라는 기술입니다. 이건 슈퍼파워즈의 일부인데, 아마 GitHub에서 가장 인기 있는 에이전트 [음악] 스킬 모음일 거예요. 저장소에서 이 스킬 하나만 가져오면 됩니다.
이 기술의 핵심은 하나의 규칙입니다. 청구에 앞서 증거를 제시해야 하며, 그 후에야 담당자가 완료, 확정 또는 통과 여부를 결정할 수 있습니다. 먼저 어떤 명령어가 이 주장을 입증하는지 알려줘야 합니다 . 둘째, 메모리에서 새로 실행하세요. 셋째, 전체 출력 내용과 종료 코드를 읽은 후에야 증거를 첨부하여 주장을 제기하십시오. 만약 [음악] 출력 결과가 주장을 뒷받침하지 못하면, 에이전트는 실제 상태를 명시해야 합니다. 이 스킬은 마법사 [음악]이라는 단어조차 금지하는데, 이는 ' 효과가 있을 것이다', '아마 통과할 것이다', ' 맞는 것 같다'와 같은 의미입니다. 저것들은 모두 같은 의미입니다. [음악] 확인 안 했어요. 그러니까 이 작업이 완료된 게 아니라, 이제 모든 게 제대로 작동해야 한다는 거죠. 당신은 이걸 얻을 수 있어요. 테스트 스위트를 실행하세요. 34명 중 34명 모두 합격. 모든 테스트를 통과했습니다. 에이전트에 성공 기준을 제시하고, 해당 기준을 실행하기 전에는 성공을 선언하지 못하도록 하세요.
[음악] AI는 덧셈 기계라는 것을 기억하세요. 이전에는 글쓰기가 비용이 많이 드는 부분이었기 때문에 괜찮았습니다 . 끝났어. 이제 코드 생성은 무료입니다. 읽는 데는 돈이 듭니다. 그것을 이해하는 데는 공짜가 없습니다. 향후 4년간 이를 유지하는 것은 확실히 음악적으로 공짜가 아닙니다. 비용은 사라지지 않았다. 글쓴이에서 검토자로 시점을 옮기기만 하면 됩니다. [음악] 그리고 그 사람은 바로 당신입니다. 자, 이것이 지금 우리가 해야 할 일입니다. 코드를 입력하지 않습니다 . 어떤 음악이 존재할 가치가 있는지를 결정하는 것 . 누군가는 여전히 생성된 500줄의 코드를 살펴보고 "이 중 30줄이 필요합니다"라고 말해야 합니다 . [음악] 이제 그게 당신의 임무입니다. 자, 그럼 제가 보여드린 네 가지 도구 중에서 어떤 걸 먼저 설치하실지 댓글로 알려주세요. [음악] 이 영상의 스폰서인 Jet Brains에 감사드립니다. 10월 9일 전에 진행되는 무료 포옹 강좌도 잊지 마세요. [음악] 링크는 아래 설명란에 있습니다.
다음 영상에서 만나요. 안녕.
AI 자동 생성 콘텐츠
본 콘텐츠는 YouTube 노마드 코더 (개발)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기