AI 코딩 도구를 잘못 사용하고 있습니다

채널 아이콘
Theo - t3․gg 구독자 439,000명

요약

이 영상에서는 코드 작성 자체가 소프트웨어 개발의 진짜 병목이 아니라고 지적합니다. 오히려 코드 리뷰, 테스트, 디버깅, 협업과 의사소통 같은 프로세스가 더 큰 장애물입니다. AI 코딩 도구는 프로토타입 제작과 반복 개선 속도를 획기적으로 높일 수 있지만, 전통적 개발 프로세스에 그대로 적용하면 오히려 부담만 늘어납니다. 따라서 AI를 도입하려면 프로세스를 재설계해 소수의 팀이 빠르게 프로토타입을 만들고 피드백을 반복하면서 진짜 가치 있는 기능을 찾아야 합니다.

주요 키워드

병목(bottleneck) 프로토타이핑(prototyping) 코드 리뷰 반복 개선(iterative improvement) 팀 이해 AI 코딩 툴 T3 스택 프로세스 재설계

하이라이트

  • 🔑 코드 작성이 병목이 아니다: 코드 리뷰, 지식 전수, 디버깅, 협업이 실제 병목 요인이다.
  • 🚀 AI 코딩 도구는 대형 코드베이스 검색과 프로토타입 제작에 강점을 발휘하지만, 전통적 프로세스에선 리뷰 부담만 늘린다.
  • ⚡️ 빠른 프로토타입 루프: PM·디자이너·개발자 3인이 수일 내에 데모를 제작해 사용자 피드백을 받는 방식을 제안한다.
  • 🌟 Throwaway code vs Production code: 임시 코드(프로토타입)와 프로덕션 코드는 목적이 다르므로 구분하여 활용해야 한다.
  • 📌 프로세스 재설계: Identify→Prototype→Feedback 반복 후 최소 스펙만 작성하고, 프로덕션 빌드를 진행해야 한다.
  • 🚀 T3 스택 사례: Twitch에서 GraphQL 대신 빠른 반복과 풀스택 타입 안전성을 살린 T3 스택으로 높은 생산성을 달성했다.
  • ⚡️ 팀 이해가 핵심 병목: AI로 코드 작성 비용은 낮아졌지만, 팀 전체의 이해와 공유 노력은 여전히 필수다.

용어 설명

Throwaway code

프로토타입이나 테스트용으로 빠르게 만들어 나중에 버려지는 임시 코드

Production code

실제 서비스 환경에서 유지보수·운영되는 핵심 코드

T3 스택

Turborepo, TypeScript, tRPC, Tailwind CSS 등을 조합해 빠르고 타입 안전한 애플리케이션을 만드는 스택

AI 에이전트

사용자 요청에 따라 코드를 생성하거나 자동화 작업을 수행하는 인공지능 도구

LLM(대형 언어 모델)

대규모 텍스트 데이터를 학습해 자연어와 코드를 생성하는 언어 모델

Prototype(프로토타입)

아이디어 검증을 위해 최소 기능만 구현한 초기 버전

Augment Code

대규모 코드베이스를 인덱싱해 빠른 코드 검색·생성을 돕는 AI 도구

[00:00:00] 코드 작성 vs 실제 출시

오늘날 우리는 AI 코딩 도구로 더 많은 코드를 생성하지만, 실제 제품에 적용되는 기능은 늘어나지 않습니다. 코드 작성이 개발 속도를 좌우하지 않으며, 더 근본적인 병목은 다른 단계에 있다는 의문으로 토론을 시작합니다.

AI 코딩 도구로 인해 많은 사람들이 몇 년 전보다 훨씬 더 많은 코드를 작성하고 있지만, 실제 제품에서 더 많은 기능이 출시되거나 혁신이 일어나는 것은 보이지 않는다.
갑자기 코드 작성을 기다릴 필요가 없어졌다면 더 많은 기능이 나와야 할 것 같지만, 가혹한 현실은 코드가 결코 병목이 아니었다는 것이다.
기능 출시와 애플리케이션 구축에는 AI로 생성할 수 없는 너무 많은 부분들이 있으며, 이런 것들은 AI로 인해 약간 나아질 수는 있지만 기대 수준에는 못 미친다.
모든 엔지니어가 PM이 될 것은 아니지만, 몇 년 후 엔지니어의 역할에 대한 깊은 고민이 필요하며, 이 주제를 탐구하기 전 스폰서 소개를 하겠다.
[00:01:40] 스폰서 소개: Augment Code

Augment Code는 대규모 코드베이스 인덱싱을 통해 파일 검색과 코드 생성을 빠르게 지원합니다. React 같은 오픈소스 프로젝트 전체를 짧은 시간에 인덱싱해 질문만으로 구현 세부 내용을 확인할 수 있다는 점을 강조합니다.

AI는 코드 작성에 뛰어나지만 큰 코드베이스에서는 컨텍스트 처리에 한계가 있다. Augment Code는 더 나은 컨텍스트를 제공하여 이 문제를 해결하며, 특히 거대한 오픈소스 프로젝트 탐색에 유용하다.
Augment AI 도구의 놀라운 속도와 성능을 소개합니다. 59만 라인의 React 코드베이스를 몇 초만에 완전히 인덱싱하고, 어떤 질문에도 즉시 답변할 수 있는 능력을 보여줍니다.
Augment의 우수성을 증명하는 사용자 후기들과 무료 시작 옵션을 소개하며, 대기업을 위한 AI 솔루션으로 추천합니다.
[00:03:05] 코드가 병목이 아니었던 이유

코드 리뷰, 지식 전수, 테스트, 디버깅, 그리고 팀 간 의사소통이 진짜 병목 요소입니다. LLM 덕분에 코드 작성 비용은 거의 제로에 가깝지만, 이해·검증 비용은 오히려 높아졌습니다.

소프트웨어 엔지니어링에서 코드 작성 자체는 병목이 아니었다고 강조합니다. 진짜 병목은 코드 리뷰, 지식 전수, 테스팅, 디버깅, 그리고 인간 간의 조정과 소통이었습니다.
LLM으로 코드 생성이 쉬워졌지만, 코드를 이해하고 테스트하고 신뢰하는 비용은 오히려 더 높아졌다고 지적합니다. 새로운 소프트웨어 추가의 한계 비용은 거의 제로에 가까워졌지만, 품질 보증 비용은 증가했습니다.
[00:04:00] Twitch에서의 속도 전략

가짜 마감일을 설정해 미리 구현을 끝내고, 남은 시간을 버그 수정·성능 개선·UI 다듬기에 활용했습니다. 이 전략으로 ModView 같은 주요 기능을 빠르게 출시하고 품질을 확보했습니다.

Twitch에서의 개인적 경험을 공유합니다. 마감을 맞춰야 할 때 호출받는 역할을 했으며, 실제 마감보다 2주-2달 앞선 가짜 마감을 설정해 여유 시간으로 제품을 완성도 높게 다듬는 전략을 사용했습니다.
화자가 ModView on Twitch 프로젝트를 성공적으로 완성했던 경험을 설명하며, 채팅 기능을 제외한 모든 부분이 잘 작동하는 커스터마이즈 가능한 위젯들을 자랑스럽게 소개한다.
런칭 준비를 위해 PM에게 일찍 데드라인을 요청하여 한 달 일찍 완성한 후, 남은 시간을 버그 수정과 성능 개선, 완성도 높이기에 투자했다고 설명한다.
[00:05:00] T3 스택 탄생과 반복 개선

GraphQL의 타입 안전성은 좋았지만 도입 비용이 컸습니다. 대신 소규모 스택을 빠르게 결합해 반복 가능하게 만든 T3 스택을 고안했고, 이를 통해 초기에 잘못된 가정을 빠르게 검증하며 개선했습니다.

화자는 자신의 특별한 능력이 빠른 출시를 위해 적절한 부분을 잘라내면서도 품질을 타협하지 않는 것이라고 설명하며, 이것이 자랑이 아닌 고유한 스킬이었다고 강조한다.
현재도 팀의 T3 채팅 계획을 볼 때 문제 영역을 단순화하고 성공 경로를 개선하기 위해 제거할 수 있는 부분을 찾는 방식으로 일한다고 설명한다.
GraphQL의 풀스택 타입 안정성이 트위치에서 큰 도움이 되었지만, 많은 인력이 필요한 점을 지적하며 T3 스택 개발의 동기를 설명한다.
[00:06:00] 전통적 프로세스의 문제점

문제 정의, 사용자 인터뷰, 디자인, PRD 작성, 프레젠테이션, 기술 스펙 작성, 구현, 출시까지 평균 6~18개월이 걸립니다. 안전 팀에서는 이 과정을 대폭 단축해 7개월 만에 주요 기능을 배포한 경험을 소개합니다.

T3 스택으로 빠른 출시가 가능해진 것이 좋은 앱을 만든 이유라고 설명하며, 완벽한 첫 시도가 아닌 빠른 제작과 사용자 피드백을 통한 반복 개선이 핵심이었다고 강조한다.
이러한 능력 덕분에 오랫동안 큰 이점을 누리며 컨설팅 업무도 했지만, 현재는 AI 에이전트가 자신이 하던 일의 많은 부분을 대체할 수 있어 이점이 줄어들었다고 느낀다고 토로한다.
AI 에이전트가 빠른 배포를 대신 처리해주어 기존 프로세스의 많은 단계들을 건너뛸 수 있다는 점을 설명하며, 트위치에서의 디자인 프로세스 사례를 소개합니다.
트위치의 제품 개발 프로세스 1-2단계로, 제품 매니저가 사용자 피드백이나 이벤트를 통해 문제를 식별하고, 해당 문제에 대해 사용자들과 심도있는 대화를 나누는 과정을 설명합니다.
[00:07:20] 프로토타입 기반 반복 루프

PM-디자이너-개발자 3인이 수일 내 프로토타입을 제작한 뒤 실제 사용자에게 검증합니다. 스펙과 회의 단계를 최소화하고 피드백을 반영해 제품 방향을 빠르게 바꿀 수 있는 워크플로우를 제안합니다.

3-4단계에서는 디자인팀과 협력하여 해결책의 모습을 구상하고, 5-30페이지 분량의 제품 제안 명세서를 작성한 후 PM과 경영진에게 각각 프레젠테이션하는 과정을 다룹니다.
개발자들이 인계받아 명세서를 검토하고 제품팀과 논의한 후 자신들만의 긴 명세서를 작성하지만, 이 전체 프로세스가 6-18개월이라는 매우 긴 시간이 걸린다는 문제점을 지적합니다.
[00:08:40] AI 코딩 도구의 맹점

AI로 빠르게 코드를 생성하면 리뷰·머지 부담과 비생산적 회의가 늘어납니다. 도구는 코드 작성만 가속화할 뿐, 프로세스 상위 단계에서 필요한 의사결정·협업·검증은 그대로 남습니다.

보안팀에서는 긴급성 때문에 이런 단계들을 건너뛰고 신속하게 문제를 해결했지만, 다른 조직에서는 문제 식별부터 해결책 문서 완성까지 몇 개월에서 몇 년이 걸렸다고 설명합니다.
보안팀에서는 대부분 이런 긴 프로세스를 거치지 않았고, 드물게 거쳤을 때는 기존 해결책을 처음부터 재검토하고 싶을 때였으며, Mod View를 예로 들어 기존 스트림 관리 도구들의 한계를 설명합니다.
트위치 모더레이션 도구의 문제점과 개선 필요성을 설명하며, 기존 도구들이 스트리머들이 필요로 하는 수준의 모더레이션에 부족했고, 실제로 도구 재개발에 7개월이 걸렸다고 언급
잘못된 제품 개발 프로세스의 문제점을 지적하며, 스펙 단계를 훨씬 넘어선 프로젝트들이 실제 사용자의 요구를 반영하지 못하고 결국 실패하는 사례들을 경험했다고 설명
[00:10:00] 프로토타입 vs 프로덕션 코드

임시 프로토타입 코드는 가설 검증과 학습을 위해 버려져야 하고, 프로덕션 코드는 유지보수·신뢰성 확보에 초점을 둡니다. 두 코드 유형을 목적에 맞게 구분하고 전환해야 효율이 높아집니다.

프로젝트가 엔지니어 배정, 티켓 생성, 마감일 설정까지 진행된 후에야 문제가 발견되고, 결국 제품이 출시되어도 실패해서 되돌려야 하는 악순환이 트위치에서 반복되었다고 토로
실제 사용자 문제를 해결하지 못하거나 오히려 사용자 경험을 악화시키는 기능들이 개발되는 것이 매우 흔한 일이었으며, 이는 개발 프로세스의 근본적인 문제라고 진단
이런 문제의 해결책으로 자신이 사용한 빠른 코딩 접근법을 소개하기 시작하며, 코드가 병목이 아니라는 점을 강조하고 PM들이 자신의 제품에 대한 관심을 인정했다고 설명
기존 엔지니어들과 다른 자신만의 접근 방식을 설명하며, PM과 디자이너가 문제를 식별한 후 빠르게 프로토타입을 구축하고 실제 사용자 피드백을 받아 제품을 개선하거나 포기하는 방법론을 제시
[00:11:40] AI 시대의 프로세스 재설계

AI를 도입하려면 Identify→Prototype→Feedback 반복 중심으로 프로세스를 재구성해야 합니다. 빠른 학습 루프를 통해 인사이트를 얻고, 스펙과 구현 단계에서는 핵심 부분만 다루며 팀 이해를 극대화합니다.

기존의 제품 개발 프로세스에서 많은 단계들이 제거될 수 있다고 설명합니다. 디자인 단계가 점진적 반복으로 대체되고, 제품 제안서나 스펙 문서 대신 실제 데모가 스펙 역할을 하게 됩니다.
전통적인 개발 핸드오버 과정이 사라지고, 처음부터 끝까지 같은 팀이 작업하게 됩니다. 이미 실제 구현을 해봤기 때문에 더 현실적이고 정확한 스펙을 작성할 수 있게 됩니다.
화자가 기존 프로세스에 대해 느꼈던 좌절감을 설명합니다. 며칠이면 증명할 수 있는 것들을 위해 긴 과정을 거치는 대신, 일찍 작업을 시작해서 실제 작동하는 버전을 먼저 만들어 보여줍니다.
[00:13:15] 결론과 제언

코드 작성 비용은 낮아졌지만 팀 이해와 협업 비용은 여전히 병목입니다. AI 툴은 프로토타이핑과 피드백 주기를 빠르게 만들어주므로, 이를 활용해 개발 프로세스를 근본적으로 재설계해야 진정한 생산성 향상을 이룰 수 있습니다.

빠른 개발 능력을 활용해 불필요한 프로세스를 건너뛰고 시간 낭비를 줄이는 방법을 찾았다고 설명합니다. 참조 버전이 있으면 모든 단계가 더 효율적이고 현실적이 됩니다.
기존의 선형적 개발 프로세스(연구→디자인→스펙→개발→출시→기도→폐기)와 대비되는 새로운 접근법을 제시합니다. 식별, 프로토타이핑, 피드백 수집을 반복하는 순환적 프로세스를 제안합니다.
피드백 루프 구축에 집중하는 것이 핵심이라고 강조합니다. 만족스러운 상태에 도달할 때까지 특정 단계를 넘어가지 않으며, 사용자와 디자이너, 다른 팀원들을 과정에 참여시키면 더욱 강력해집니다.
파트타임 작업을 통해 몇 달, 몇 년의 작업을 절약하고 나쁜 제품 출시를 방지할 수 있다는 점을 설명합니다.
AI 코딩 도구의 진정한 가치는 스펙 작성에 몇 년을 쓰는 대신 빠르게 프로토타입을 만들어 올바른 방향을 찾는 것이라고 강조합니다.
코드로 병목 현상을 해결할 수 있지만, 파이프라인 끝단이 아닌 초기 단계의 제품 문제 해결이 중요하다고 설명합니다.
AI 빌딩 도구를 활용해 실제 필요를 빠르게 파악하는 것이 강력한 접근법이라고 주장합니다.
Pedro의 기사를 인용하며 언어모델이 업무량을 제거하는 게 아니라 이동시킬 뿐이며, 리뷰와 유지보수 담당자에게 부담을 준다고 설명합니다.
AI 이전에도 프로토타입 단계에서는 불완전한 코드, 복사한 코드를 사용했으며, 목표는 코드 품질이 아닌 구축 가치 검증이었다고 개인 경험을 공유합니다.
임의의 패키지를 설치했다가 혼났던 경험을 예로 들며, 실제 사용 의도가 아닌 기능 검증이 목적이었다고 설명합니다.
AI 코딩 도구를 사용할 때 프로토타입은 실제 제품이 아닌 이해를 구축하기 위한 도구라고 설명합니다. 패키지 추가나 코드 리뷰에 대한 부담보다는 기능의 가치를 확인하는 것이 목적이라고 강조합니다.
개발 과정에서 예상치 못한 엣지 케이스와 부작용들이 자주 발생한다고 설명하며, 팀원들의 도움으로 문제를 해결했던 경험을 공유합니다. 프로토타입 작업에 깊이 빠져 번아웃이 올 때 다른 사람의 새로운 시각이 큰 도움이 되었다고 합니다.
이런 방식으로 개발하는 이유는 코드를 실제 프로덕션에 배포하기 위함이 아니라, 무엇을 만들고 있는지에 대한 이해를 구축하기 위함이라고 명확히 합니다. 전통적인 개발 파이프라인의 빌드 단계나 지라 티켓 처리를 대체하는 것이 아니라고 설명합니다.
AI 에이전트가 지라 티켓을 받아서 모든 것을 구현해주는 아이디어가 말이 안 되는 이유를 설명합니다. 코드 리뷰가 코드 작성보다 부담스럽고, 잘못된 스펙으로는 올바른 것을 구축하기 어렵다고 지적합니다.
개발 프로세스의 각 단계에서 실패 케이스가 발생할 수 있다고 설명합니다. 연구가 잘못된 결론에 도달하면 모든 하위 단계가 영향을 받는다고 하며, PM이 사용자 보이스의 무작위 요청을 바탕으로 잘못된 제안을 할 때의 문제점을 구체적으로 설명합니다.
디자인과 연구가 좋았어도 스펙 작성 단계에서 문제가 발생할 수 있다고 설명합니다. 사람들이 이해할 수 없는 방식으로 스펙을 작성하지만 당사자들은 그것을 모르고, 프레젠테이션을 듣고 완전히 이해했다고 생각해서 기술 스펙에 잘못된 가정들을 그대로 반영하게 된다고 합니다.
PM과 개발자 간의 소통 문제와 잘못된 가정이 기술 명세에 어떻게 반영되는지, 그리고 이로 인한 회의에서의 문제점들에 대해 설명합니다.
빌드 과정에서 발생할 수 있는 문제들과 리뷰 프로세스의 어려움, 그리고 최종적으로 제품이 실패했을 때의 결과에 대해 논의합니다.
제품 실패 후 팀 해고 대신 재조직을 통해 문제를 해결하려는 회사들의 잘못된 접근법과 그로 인한 개발자들의 어려움을 설명합니다.
단순히 빌드 단계를 빠르게 만드는 것이 전체 개발 프로세스에 도움이 되지 않는 이유와 AI의 진정한 가치에 대해 논의합니다.
AI가 빌드 과정을 초기 단계로 옮겨 올바른 개발 방향을 확인할 수 있게 해주는 장점을 설명하지만, 회사들이 기존 프로세스에 고집하는 것에 대한 우려를 표현합니다.
GitHub Spark와 Kira 같은 AI 코딩 도구들이 상세한 PRD 작성에 집중하는 문제점과, 바이브 코딩의 본질적 장점이 훼손되는 상황에 대해 비판합니다.
AI나 다른 개발자가 코드를 작성하게 하면 나중에 그 코드가 버려져도 기분 나쁘지 않다고 설명합니다. 평범한 개발자는 자신이 작성한 코드가 폐기되면 기분이 나쁘지만, AI가 작성한 경우나 코드가 버려지는 것을 좋아하는 개발자의 경우는 다릅니다.
하지만 이런 AI 코딩 접근법은 기존의 장점들을 제공하지 못하고 오히려 더 많은 단점만 가져온다고 비판합니다. 특히 제품 스펙의 경우 작성하는 것보다 읽는 것이 훨씬 더 어렵고 지루하다고 강조합니다.
긴 스펙 문서를 읽는 것이 얼마나 지루하고 힘든 일인지 설명하며, 이것이 코드 리뷰나 직접 코딩보다 훨씬 나쁘다고 말합니다. 차라리 프로토타입을 만들고 테스트하는 것을 선호한다고 합니다.
자신이 좋아하는 업무들을 나열합니다: 코드 작성, 대화, 새로운 아이디어 실험, 작동하지 않는 것들의 deprecation, 단순화 등입니다.
반대로 싫어하는 업무들을 나열합니다: 코드 리뷰, 긴 스펙 읽기, PM 설득, 10명 이상 참석하는 지루한 회의 등입니다. 코드 리뷰는 중요하지만 현재 팀에게 많은 리뷰 빚이 있어서 부담스럽다고 인정합니다.
만약 도구가 사람들로 하여금 싫어하는 일에 더 많은 시간을 쓰게 하고, 좋아하는 일에 더 적은 시간을 쓰게 한다면 그런 도구는 나쁘다고 주장합니다.
AWS의 AI 코딩 IDE인 Hero를 예로 들어 비판합니다. 이 도구는 코딩을 덜 하게 하고, 대화를 덜 하게 하며, 에디터에서 기다리는 시간만 늘립니다. 새로운 아이디어 실험도 제한하고, 단순화나 개선에 대한 인센티브도 제거한다고 설명합니다.
AI 도구들이 개발자들이 실제로 즐기는 창의적인 부분들을 제거하고, 대신 코드 검토와 스펙 읽기 같은 지루한 작업들로 대체하고 있다는 문제점을 지적합니다.
PM들이 AI 도구로 직접 개발할 수 있다고 착각하게 되어, 개발자의 전문적 조언을 무시하고 무리한 프로젝트를 추진하려는 경향이 생겼습니다.
코딩 시간이 줄어든 대신 의미 없는 회의 시간이 늘어났고, 이는 생산성 향상이 아닌 단순한 노력의 이동일 뿐이라고 비판합니다.
AI 도구의 혜택을 제대로 받으려면 기존 개발 프로세스를 근본적으로 재검토해야 하며, 현재의 접근 방식은 재미있는 부분을 죽이고 불필요한 텍스트 생성만 쉽게 만든다고 주장합니다.
타자기, 워드프로세서, AI 생성 도구의 도입에 따라 법률 문서의 길이가 급격히 증가한 역사적 사례를 통해, 도구가 쉬워질수록 결과물의 양은 늘어나지만 질은 반드시 개선되지 않는다는 점을 설명합니다.
더 많은 단어가 더 좋은 법률을 만들지 않듯이, 더 많은 코드가 더 나은 앱을 만드는 것은 아니라는 핵심 메시지를 전달합니다.
AI 도구들이 잘못된 부분을 더 쉽게 만들었다고 지적합니다. 많은 코드를 작성하는 것은 쉬워졌지만, 좋은 코드를 작성하는 것은 더 어려워졌으며, 이는 법률 작성과 유사한 문제라고 설명합니다.
AI가 생성한 코드를 단순히 리뷰만 하는 상황이 된다면 문제가 될 것이라고 경고합니다. 패턴이나 관행을 따르지 않는 거대한 코드 더미를 검토해야 하는 상황의 위험성을 강조합니다.
AI 도구로부터 혜택을 얻으려면 프로세스를 재검토해야 한다고 주장합니다. 코드 생산은 쉬워졌지만 검증은 더 복잡해졌으며, 이는 팀의 전체적인 속도를 오히려 느리게 만들 수 있다고 설명합니다.
개발자들의 복사-붙여넣기 습관을 언급하며, LLM이 이런 습관을 더욱 증폭시켰다고 분석합니다. 이는 결국 구글 검색과 스택오버플로우 복사-붙여넣기의 고도화된 버전이라고 비유합니다.
코드를 이해하는 것이 여전히 가장 어려운 부분이며, LLM이 코드 생산 시간은 줄였지만 추론, 버그 식별, 유지보수성 보장에 필요한 노력은 변하지 않았다고 강조합니다.
코드를 두 가지 유형으로 분류합니다: 일회용 코드(벤치마크 스크립트, 프로토타입)와 프로덕션 코드(핵심 인프라, 라이브러리, 메인 기능). 최근까지 이 두 유형 간의 비용 차이가 크지 않았다고 설명합니다.
화자는 코드를 두 가지 유형으로 구분하는 것이 중요하다고 설명합니다. 많은 개발자들이 작은 사이드 프로젝트까지도 Rust로 작성해야 한다고 주장했던 시기를 언급하며, 이는 두 코드 유형의 차이를 인식하지 못했기 때문이라고 분석합니다.
자신이 특별했던 이유는 두 코드 유형을 잘 구별할 수 있었기 때문이라고 말합니다. 언제 일회용 코드를 빠르게 작성할지, 그리고 그 중 어떤 부분을 프로덕션으로 옮겨야 할지를 판단하는 능력이 핵심이었다고 설명합니다.
실제 업무에서 두 측면을 빠르게 전환하며 작업했던 경험을 공유합니다. 일회용 코드로 데모를 만들고, 사용자와 반복 작업을 통해 필요한 기능을 파악한 후, 프로덕션 버전을 구축하는 방식으로 진행했다고 설명합니다.
코드를 GitHub 승인과 사용자 배포용으로만 사용하지 않았다고 강조합니다. 무엇을 구축할지 파악하고, 기술 구현을 테스트하며, 이메일 처리나 리포트 분석 등 다양한 용도로 활용했다고 설명합니다. 이때 코드 자체는 중요하지 않았고 리뷰도 필요 없었다고 덧붙입니다.
대부분의 엔지니어들은 이런 구별을 할 수 없거나 하려 하지 않는다고 지적합니다. FAANG 회사 직원들의 사이드 프로젝트 사례를 들며, 개인 할 일 목록을 위해 Facebook이나 Netflix 수준의 복잡한 스택을 구축하는 문제점을 언급합니다.
사람들이 두 코드 유형을 구별하지 못하는 것이 현실적인 문제라고 진단합니다. 이로 인해 AI 도구들이 많은 사람들을 혼란스럽게 할 것이라고 예측하며, Lovable 같은 도구를 예로 들어 설명합니다.
Lovable이 일회용 코드 영역에 속한다고 분류하면서, 대부분의 에이전트 코드 도구들도 마찬가지라고 설명합니다. 두 코드 유형을 구별하지 못하면 이런 도구들을 형편없고 쓸모없다고 판단하게 되지만, 실제로는 프로덕션 코드를 더 간단하고 좋게 만드는 방법으로 활용할 수 있다고 주장합니다.
AI 코딩 도구를 사용할 때 프로토타입용 코드와 프로덕션 코드의 목적이 다름을 강조합니다. 프로토타입 코드는 빠르게 문제를 파악하기 위한 것이고, 프로덕션 코드는 유지보수와 협업을 위한 것입니다.
팀워크에서 신뢰와 공유된 맥락이 여전히 중요하지만, AI가 코드를 너무 빨리 생성하면 품질 검증이 제대로 이루어지지 않아 문제가 될 수 있다고 경고합니다.
멘토링 과정에서 AI 도구를 잘못 사용하면 오히려 팀원들의 성장을 방해하고 코드 품질 문제를 야기할 수 있음을 구체적인 예시로 설명합니다.
버릴 코드와 프로덕션 코드를 구별하지 않으면 문제가 발생하며, LM이 강력하지만 기본적인 개발 원칙을 대체할 수는 없다고 정리합니다.
AI 도구의 진정한 가치는 개발자들이 예전에는 불가능했던 빠른 프로토타이핑을 가능하게 한다는 점입니다. 몇 개월 걸릴 일을 며칠에 해결할 수 있는 능력을 제공합니다.
딥테크가 아닌 일반적인 CRUD 애플리케이션의 경우 며칠 안에 사용 가능한 버전을 만들 수 있다고 주장하며, 프로덕션 개발 과정을 개선할 수 없다면 다른 사람에게 기회를 양보하라고 조언합니다.
6개월이 걸리는 건 프로토타입이 아니라고 강조하며, 진짜 프로토타입은 2-3주 정도로 만들어서 버려도 아깝지 않아야 한다고 설명합니다.
LLM이 명확한 사고나 신중한 설계를 대체하지 못한다고 언급하며, AI 도구의 한계를 인정해야 한다고 주장합니다.
프로덕션 코드에만 집중하는 주요 엔지니어와 새로운 아이디어를 테스트하고 싶어하는 CEO/PM 간의 갈등 상황을 가상의 슬랙 대화로 재현합니다.
이런 갈등이 실제로 매우 현실적이라고 설명하며, 러버블뿐만 아니라 다른 기술들에 대해서도 비슷한 반응이 나온다고 언급합니다.
주요 엔지니어가 자신의 관점에만 갇혀 있어서 PM의 진짜 니즈를 이해하지 못한다고 지적하며, 엔지니어는 기술 사양에만 관심이 있고 제품의 유용성은 이미 가정하고 있다고 분석합니다.
엔지니어들은 AI 도구의 가능성을 무시하지만, PM들은 다른 사람들이 이런 도구로 유용한 것들을 만드는 것을 보고 자신들의 문제도 해결할 수 있다고 깨닫게 됩니다. 이로 인해 서로 다른 관점을 가진 PM과 수석 엔지니어 사이에 적대적 관계가 형성될 수 있습니다.
Twitch에서의 경험을 통해 디자이너가 HTML과 JavaScript를 배워 Mod View 프로토타입을 만든 사례를 소개합니다. 실제로 작동하지 않지만 모더레이터들에게 보여줄 수 있는 데모를 만들어 피드백을 받을 수 있었습니다.
우수한 디자이너들이 AI 코딩 도구를 활용하면 더 반복적인 과정을 통해 올바른 해결책을 찾을 수 있습니다. 핵심은 다음 깨달음까지의 시간을 단축하고 통찰력을 최적화하는 것입니다.
가정에서 새로운 학습으로 가는 최단 경로를 찾는 것이 중요합니다. 사용자의 니즈나 기능의 작동 방식에 대한 가정을 빠르게 검증할 수 있는 방법을 모색해야 합니다.
AI 도구를 통해 더 많은 통찰과 '아하' 순간을 얻을 수 있다면 유용하지만, 단순히 과정을 빠르게 진행하는 데만 사용한다면 의미가 없습니다. 현재 많은 도구들이 '개발자 대체'로 홍보되고 있지만, 실제로는 사용자 니즈를 더 빠르게 파악하고 효과적으로 반복할 수 있게 해주는 도구로 접근해야 합니다.
AI 코딩 도구를 활용한 개발의 핵심은 더 빠른 반복과 피드백이다. 코드 작성 비용은 줄었지만, 팀이 함께 이해하는 비용은 여전히 병목지점이다.
거대한 스펙 문서의 문제점을 설명한다. 제품 리드, 디자인 리드, 기술 리드가 만든 방대한 스펙 중 실제로 좋고 올바른 부분은 극히 일부이고, 나머지는 버려야 할 내용이라고 지적한다.
스펙 대신 프로토타입 접근법을 제안한다. 작은 프로토타입은 비록 실패율이 높을 수 있지만, 빠른 시간 안에 아이디어의 타당성을 검증할 수 있고, 소통도 훨씬 쉬워진다.
프로토타입을 통한 반복적 개발 과정을 설명한다. 첫 번째 프로토타입의 좋은 부분을 확장하여 두 번째를 만들고, 실패를 통해 배운 교훈을 다음 버전에 적용하는 과정이다.
반복적 프로토타이핑을 통해 최종 제품이 원래 스펙보다 훨씬 작고 효율적이 되며, 이러한 접근법이 개발 업무를 더 재미있게 만든다고 강조한다.
Jira 티켓 작업은 재미없다고 주장하며, 새로운 시도와 팀 협업을 통한 실제 문제 해결이 훨씬 즐겁다고 강조합니다.
AI 도구들이 개발 과정의 각 단계를 훨씬 저렴하게 만들었다며, 20명이 9개월 걸릴 작업을 1명이 3일 만에 할 수 있다면 기존 방식은 비효율적이라고 비판합니다.
AI 도구 덕분에 더 많은 팀이 빠른 프로토타입을 만들 수 있게 되었고, 이를 통해 진짜 문제를 찾은 후 전문가들에게 넘겨 제대로 개발할 수 있다고 설명합니다.
적은 수의 사람들이 참여하면 소통이 더 원활해지고 이해도가 높아진다며, 3명이 이해하는 것이 20-30명이 이해하는 것보다 효율적이라고 주장합니다.
많은 사람들이 몇 년 전보다
훨씬 더 많은 코드를 작성하고 있다고
말하는 것은 공정하다고 생각합니다. 그리고
말 그대로 모든 것을 직접 타이핑한다는
뜻은 아닙니다. 저는 이 모든
멋진 바이브 코딩 도구들, 여러분이
많은 코드를 생성하고 작성하는 데
도움을 주는 AI 에이전트들에 대해 말하고 있습니다.
그렇다고 해서 더 많은 배포가
일어나고 있다고 느끼지는 않습니다.
사람들이 사이드 프로젝트로 만든 것들의
멋진 데모를 트위터에 더 많이 올리고 있나요?
그럴지도 모르겠습니다. 하지만 저는
실제 제품에서 더 많은 기능이
나오는 것을 보지 못하고 있습니다. 제가 매일
사용하는 것들에서 더 많은
혁신이 일어나는 것을 보지 못합니다.
오히려 그곳에서는 덜 일어나고 있는 것 같습니다.
그럼 무슨 일이 일어나고 있는 걸까요?
갑자기 코드가 완성되기를 기다릴 필요가 없다면
훨씬 더 많은 기능들이 나와야 하지 않을까요?
그럴 것이라고 생각하겠지만, 가혹한 현실은
코드가 결코 병목이 아니었다는 것입니다.
저는 한동안 이것에 대해 생각해왔습니다.
왜냐하면 저는 역사적으로 프로젝트가
뒤처질 때 마무리 라인까지
밀어붙이는 사람이었거든요. 그리고 저는
정말 멋진 글을 봤는데 그것이 저로 하여금
정말로 앉아서 여러분들과 함께 이 개념을
분해해보고 싶게 만들었습니다. 왜냐하면
코딩은, 우리가 시간을 보내고 싶어하고
작업하고 싶어하는 것이지만
실제로 우리가 배포하고자 하는 것을
늦추는 것은 아니기 때문입니다.
기능을 출시하고 애플리케이션을 구축하는 데는
AI로 생성할 수 없는 너무나 많은
부분들이 있습니다. 하루 중 몇 시간 동안
실제로 앉아서
코드를 작성하며 에디터에서 일어나는
일들이 아닌 것들 말입니다.
그리고 이런 것들은 AI 때문에 약간
나아질 수는 있지만, 실제로는 그렇지 않습니다.
확실히 여러분이 바라거나
인터넷에서 끊임없이 듣는 것들로부터
기대할 수 있는 수준은 아닙니다.
그것이 우리 모두가 PM이 될 것이라는 뜻일까요?
그렇지는 않습니다. 저는 이에 대해 깊이 들어가서
몇 년 후 엔지니어가 될 것에 대한
제 생각을 공유하려고 합니다.
이 미친 세상에는 너무 많은 일들이 일어나고 있습니다.
그리고 이 글이 정말 좋은
출발점인 것 같습니다.
들어가는 것이 흥미롭습니다만
만약 제가 엔지니어로서 일자리를 잃게 된다면
누군가는 제 청구서를 지불해야 합니다.
그래서 오늘의 스폰서로부터 간단히 한마디하고
바로 들어가겠습니다.
AI가 코드 작성에 정말 뛰어나다는 것은 분명하지만
큰 코드베이스에서 작업한다면 그것이
많은 양의 컨텍스트를 잘 처리하지 못한다는 것도
분명합니다. 코드베이스에서 올바른 파일을
찾으려고 시도하겠지만
그 다음에 무엇을 할까요? 종종
잘못된 일을 합니다. 오늘의 스폰서인
Augment Code를 사용하지 않는다면 말이죠.
캐치라인은 진부하지만, 정말로 말하는 그대로입니다.
더 나은 컨텍스트이고 그 결과는
훨씬 더 나은 코드입니다.
여러분을 위해 코드를 작성할 수 있지만
솔직히, 저는 주로 코드베이스에서 것들을 찾는 데
사용합니다. 왜냐하면 거대한 프로젝트들을
정말 잘 탐색할 수 있기 때문입니다.
특히 오픈 소스 프로젝트들을 말이죠.
그것이 제가 가장 좋아하는 남용 방법입니다.
저는 종종 React가 어떻게 작동하는지에 대한 질문이 있습니다. 그래서 여기에 전체 React 코드베이스가 있습니다. 59만 3천 줄의 코드
코드베이스입니다. 그런데 완전히
인덱싱되었어요. 몇 초만에
완료됐습니다. 이제 뭐든 물어보면
몇 초 안에 답을 받을 수 있어요. 이들은
실제로 용기 있게 UI에 타이머를
눈에 띄게 배치한 유일한 AI 에이전트예요.
너무 빨라서 가능한 거죠. 여전히
어떻게 이렇게 말도 안 되게
빠른지 모르겠어요. 그리고 보세요,
알아냈네요. 핵심 구현체와
별도의 서버 사이드 구현체를
찾아서 React 서버
컴포넌트에서 제대로 작동하도록
했어요. 이들이 별도의 가짜
스텁 처리된 uState를 가지고 있는지도
몰랐어요. 광고를 녹화하면서
새로운 걸 배우고 있어요. 그게 바로
Augment의 실력입니다. 제 말을 믿지 못하겠다면
사이트에 있는 후기들을
살펴보세요. 정말 놀라워요.
이렇게 많은 사람들이 사랑한다는
후기가 있어요. 그리고 제가 소개하는
스폰서 중에서도 가장 긍정적인
반응을 받고 있어요. 여기서 정말 멋진
것들을 소개하거든요. 지금 사용해보고
싶다면 무료로 시작할 수 있고,
AI 도입을 고려하는 대기업이라면
선택해야 할 회사입니다. 지금 확인해보세요.
link/augment에서요. 코드 작성이
병목이 된 적은 없었습니다. 수년간
코드 라인을 작성하는 것이
소프트웨어 엔지니어링의 병목이
아니라고 느껴왔어요. 실제 병목은
지금도 여전히 코드 리뷰,
멘토링과 페어링을 통한 지식 전수,
테스팅, 디버깅, 그리고
조정과 소통의 인적 오버헤드입니다.
산 정상에서 외쳐주세요. 정말 현실적이에요.
이 모든 것들이 티켓, 계획 회의,
애자일 의식들의 미로 속에 감싸여
있어요. 품질을 높이려고 만든 이런 프로세스들이
실제로는 코드 작성 자체보다
더 우리를 느리게 만들어요.
사고와 공통된 이해,
그리고 건전한 판단력이 필요하거든요. 이제 LLM으로
작동하는 코드를 그 어느 때보다
빠르게 생성할 수 있게 되면서
새로운 이야기가 나왔어요. 코드 작성이
병목이었고, 우리가 드디어 해결했다고요.
하지만 완전히 맞지는 않아요. 새로운
소프트웨어를 추가하는 한계 비용은
특히 LLM과 함께라면 거의 제로에
가까워지고 있어요. 하지만 코드를
이해하고, 테스트하고, 신뢰하는 비용은
그 어느 때보다 높아요. 벌써
정말 많은 생각이 드네요. 그리고
약간의 스토리 타임도 있어요. 과거에
몇 번 이야기한 적 있는데, 제가 여러
회사에서 맡았던 역할에 대해서요. Twitch에
있을 때 대부분은 마감을 맞춰야 할 때
호출받는 사람이었어요. 이런 일을 위한
역할이 많았는데, 그 중 하나는
매니저들에게 실제 마감보다
2주에서 2달 먼저인 가짜 마감을
달라고 하는 거였어요. 그래야 그 마감을
맞추고 나서 남은 시간으로
다듬는 작업을 할 수 있거든요.
그리고 받는 모든 마감이 진짜라고
스스로를 깊게 확신시키곤 했어요.
그리고 마감을 맞추고 나면 남은 시간을
써서 훨씬 멋지고 완성도 높게
만들어주곤 했죠. 그렇게 해서 최고의
릴리스들이 나왔어요. 제가 개인적으로
가장 좋아하는 것 중 하나인 Twitch의 ModView처럼요.
이런 식으로 좋은 상태로 나올 수 있었던 거죠.
재미있게도 채팅 기능이 그렇게 망가져 있는 것도
꽤 웃기네요. 나머지는 다 잘 작동하거든요.
정말 웃긴 일이에요. 왜냐하면 나머지는 모두 훌륭하게 작동하거든요.
우리가 만든 것에 대해 정말 자랑스러워요.
이런 다양한 위젯들을 만들어서
모든 세부사항을 보여주는데 완전히
커스터마이즈 가능하고 이동도 가능해요.
언제든지 UI에 넣었다 뺐다 할 수 있거든요.
이 모든 걸 런칭 첫날부터 준비하는 게
정말 재미있었어요. 왜냐하면 PM에게
데드라인을 한 달 일찍 잡아달라고 했거든요.
그래서 실제 출시 전 달 말에
이걸 완성하고 작동하게 만들어놨죠.
그리고 나서 한 달 내내
버그 수정하고, 성능 이슈 찾고,
완벽하게 다듬는 작업을 했어요.
이게 제가 한 일의 많은 부분이었죠.
제가 이 모든 얘기를 꺼내는 이유는
이게 생각하시는 만큼 저에게 도움이 되지 않았기 때문이에요.
이 말이 제가 얼마나 훌륭한 엔지니어인지
자랑하는 것처럼 들릴 수 있지만
그런 게 아니에요. 이건 그냥 제가 가진
이상한 고유 스킬이었어요.
빠른 출시를 위해 어떤 부분을 잘라낼지
찾아내는 이상한 능력이 있었거든요.
품질을 크게 타협하지 않으면서도
빠른 출시가 가능했어요. 보통은
적절한 모서리를 다듬는 방식으로요.
지금도 여전히 이런 식으로 일해요. 팀이
T3 채팅 관련 계획을 보여줄 때
우리가 제거할 수 있는 부분을 찾으려 해요
작업하는 문제 영역을 단순화해서
더 나은 성공 경로를 얻기 위해서요.
잘 작동하는 것들을 보면서
어떻게 하면 간단하고 유익한
버전을 만들어 더 나은 출시를
할 수 있을지 생각해보기도 해요.
GraphQL의 풀스택 타입 안정성 같은 것들은
제가 작업했던 팀들과 트위치에서의 개발 방식에
엄청난 도움이 되었어요.
GraphQL 쪽은 실제로
개발자와 사용자 모두에게 잘 작동하도록 만들기 위해
여러 사람으로 구성된 팀이 필요했기 때문에
반대편의 이익을 얻기 전에
많은 직원이 있어야 했죠.
다루기 가치가 있을 정도로요.
어떻게 하면 이런 이익과
그에 따라 오는 안전성과 민첩성을
GraphQL의 엄청난 투자 없이도
얻을 수 있을지 알아내고 싶었어요.
그래서 T3 스택이 탄생했죠.
이 부분들을 제대로 연결하는
방법을 찾아서 더 빨리 출시할 수 있게 되었어요.
우리가 만든 앱들이 그렇게 좋았던
큰 이유 중 하나죠. 제가 첫 시도에
완벽하게 만들었기 때문이 아니에요.
사실 정반대예요.
틀릴 수는 있지만 빠르게 만들고
사용자들의 피드백을 통한 반복 과정으로
빠르게 개선할 수 있었어요. 이런 방식으로 구축된
시스템에서는 확신을 가지고
변경사항을 만들기가 너무 쉬웠거든요.
이게 제가 생각하는 방식이에요. 이건 저에게
오랫동안 엄청난 이점을 줬어요.
컨설팅 일도 받게 되었고, 회사들의
빌드 파이프라인을 정리하고
실제 아키텍처를 어떻게 구성할지
다시 생각해보도록 도와줬어요. 하지만
이제는 이런 이점들이 훨씬 덜 실제적으로 느껴져요.
AI 에이전트를 사용해서 제가 예전에
하던 일의 많은 부분을 할 수 있거든요.
저는 들어와서 일이 어떻게 돌아가는지 파악하고
최선을 다해 단순화시키는 사람이었는데
빠른 배포를 다시 가능하게 만들 수 있습니다. AI 에이전트가
빠른 배포를 대신 처리해주고
많은 단계들을 건너뛸 수 있죠. 하지만
제가 정말 유용하다고 발견한
또 다른 측면이 있었습니다. 트위치에서의
디자인 프로세스를 살펴보면
이런 모습이었습니다. 1단계는 제품
매니저가 문제를 식별하는 것입니다. 이는
사용자 피드백을 검토하거나, 이벤트에 가서
사람들과 대화하거나,
트위치에 대해 깊이 생각하고
부족한 부분을 찾아
공백을 채우려고 시도하는 방식으로 이뤄집니다.
제품 매니저들이 해결해야 할 문제를
찾으려고 노력하는 것은 매우 일반적이었습니다.
그것이 바로 그들의 업무였거든요. 2단계는
그 문제에 대해 사용자들과 많은 대화를 나누는 것입니다.
공정하게 말하자면, 많은 PM들이
이 단계를 건너뛰곤 했지만, 건너뛰지 않았을 때는
정말 좋았습니다. 그래야
문제가 실제로 무엇인지, 무엇을
해결해야 하는지에 대한 더 많은 정보를 얻을 수 있었거든요.
3단계는 디자인팀과 협력하여 해결책이
어떤 모습일지 파악하는 것이었습니다. 문자 그대로의 의미와
정신적인 의미 모두에서 말이죠.
디자인과 PM 시간을 투자해서
어떤 모습이 될지 보여주는 데 집중했습니다.
때로는 목업이나 앱의 가짜 버전을 만들기도 했지만,
이것이 어떤 느낌이어야 하고
어떻게 작동해야 하는지 깊이 파악하려고 노력했습니다.
그다음 4단계는
제품 제안 명세서였습니다. 이것은
제품에 대한 그들의 비전이었습니다.
목업이 포함되어 있었고, 그들이
생각하는 내용을 문서화한 5페이지에서
30페이지 분량이었습니다. 그런 다음
해당 명세서에 대한 프레젠테이션을 진행했습니다.
PM들에게는 별도의 프레젠테이션을 해서
승인을 받고, 그다음에는
일반 팀이나 그들이 속한 조직에
프레젠테이션을 해서
경영진 등의 승인을 받았습니다.
그리고 나서 개발자들이 인계받아 거의 같은 일을 반복했습니다.
개발자들은 명세서를 살펴보고
필요한 것이 무엇인지 파악한 다음, 제품팀과
사용자들과 논의한 내용에 대해
대화하고, 그다음 자신들만의
매우 긴 명세서를 작성했습니다.
하지만 여기에는 문제가 있었습니다.
이 프로세스는 너무 오래 걸렸어요.
1단계에서 8단계까지, 전체 스펙트럼을
처음부터 끝까지 진행하는 데 6개월에서 18개월이 걸렸습니다.
물론 더 긴급한
문제가 있으면 훨씬 빠르게 진행했습니다.
제가 보안팀에 있었을 때처럼
이런 단계들을 많이 건너뛰곤 했는데,
중요하지 않아서가 아니라
정말 중요했기 때문이었습니다.
보안 문제는 존재를 알게 되는 즉시
최대한 빨리 해결해야 했거든요.
하지만 다른 조직에서는 문제가 식별된 후부터
해결책을 위한 문서가 작업할 준비가 될 때까지
몇 개월, 심지어 몇 년이 걸리기도 했습니다.
하지만 앞서 언급했듯이 제가
이전에 있었던 보안팀에서는
이런 프로세스를 거의 하지 않았습니다.
드물게 했던 경우는
이미 작동하는 해결책이 있었지만
처음부터 다시 생각해보고 싶을 때였습니다.
다시 말해서, Mod View 같은 경우
트위치에서 스트림을 관리할 수 있는
해결책들이 있었지만, 그 해결책들은
스트리머들이 해야 하는
관리 유형에 비해 우리가 원하는 만큼 깊이 있지 않았습니다.
모더레이터들은 정말 열심히 일합니다.
지금 도움을 주고 있는 모든 모드분들께 감사드립니다.
이런 도구들은
재검토가 필요했고, 우리도 그걸 알고 있었습니다.
그래서 우리는 가서 다시 생각했습니다. 그런데도
결정을 내린 후 실제로 출시하기까지 7개월이 걸렸습니다.
시작하는 데만 18개월이 아니라 말이죠.
이게 정말 고통스러워진 부분은
제가 이런 프로젝트들을 마주했을 때였습니다.
프로덕트의 스펙 발표를 훨씬 지나쳐서
이 정도까지 만들어진 프로젝트들을요.
그런데 저한테는 아주 명백했습니다.
이 프로덕트는 엉망일 거라는 게 말이죠.
왜냐하면 저는 실제로 스트리머들과 대화하고
크리에이터 세계를 신경 썼거든요.
그런데 프로덕트가 여기까지 와서
쓰레기가 된다는 사실이
저에게는 무서웠습니다. 어떻게 이렇게 깊숙이 들어와서도
이 과정에서 깨닫지 못할 수 있을까요?
아무도 실제로 원하지 않는 것이라는 걸
심지어 사용자들에게는
퇴보가 될 수도 있다는 걸 말이죠. 더 나쁜 건
프로젝트가 여기까지 와서
엔지니어들이 배정되고
지라 티켓이 몇 달에서 몇 년 미리 만들어지고
그러고 나서 마감일이 설정되는데
그 마감일은 맞춰지지 않을 거고
그러면 그들이 저에게 물어봅니다.
그들은 여기까지 와서 그제서야
저에게 이걸 구해달라고 요청하는데
제가 들어가서 이건 나쁜 아이디어라고 말하면
한바탕 논쟁이 벌어지고
그러고도 그들은 그냥 가서 출시해버리죠.
그러면 프로덕트는 엉망이 되고
결국 되돌려야 합니다.
이런 일이 트위치에서 근무하는 동안 여러 번 일어났는데
특히 트위치 마지막 팀에서 마지막 시간에
더욱 그랬습니다.
아무도 깨닫지 못한 채 그렇게 오랜 시간이 갈 수 있다는 사실이
그들이 만들고 있는 프로덕트가
어떤 실제 사용자의 실제 문제도 해결하지 못한다는 걸
그리고 실수라는 걸, 아니면
더 나아가 중요한 사용자들에게
퇴보를 일으킬 수 있다는 걸 말이죠.
이건 아주 흔한 일이었는데, 새로운 기능이
사이트나 앱을 훨씬 더 나쁘게 만드는 것
그들이 본래 도우려고 했던
사용자들에게 말이죠. 정말 흔한 일이었어요.
그럼 제가 왜 이 모든 얘기를 하는 걸까요?
병목이 코드가 아니라는 걸
강조하기 위해서일까요? 아니요, 사실은
그 반대입니다. 제가 빠른 코딩을 사용해서
우리의 막힘을 해결한 방법 중 하나를 보여드리고 싶습니다.
운 좋게도 몇몇 PM들이 깨달았습니다.
제가 프로덕트를 많이 신경 쓴다는 걸 말이죠.
솔직히 말하면, 대부분의 엔지니어는 그렇지 않거든요.
그게 대부분 엔지니어가 일하는 방식이 아닙니다.
그들은 자신의 코드를 작성하고
주어진 티켓을 닫고 싶어 합니다.
그럼 제가 다르게 한 것을 소개하겠습니다.
PM들과 디자이너들이,
저는 트위치 경력의 상당 부분에서
디자인과 아주 가깝게 일했고
그들은 이 단계에서 저를 끌어들이는 걸 좋아했습니다.
프로덕트 매니저가 문제를 식별합니다.
PM이 디자이너와 테오를 불러서 그에 대해 논의합니다.
1.6 테오가 이것이 무엇을 의미하는지 대략적인 아이디어를 가지고
3일에서 2주 만에 그걸 구축합니다.
1.7 PM이 테오 버전을 실제 사용자들에게 보여줘서
피드백을 받습니다. 그리고 1.8
훨씬 더 나은 제안을 작성하거나
해당 피드백을 바탕으로 아이디어를 완전히 없애버립니다.
이제 이런 방식으로 해봤으니까
대신에, 얼마나 많은 단계를 없앨 수 있는지 보겠습니다.
우리가 제거할 수 있는 것들 말이죠.
제거할 수 있습니다. 그 단계는 없어졌죠. 이제
디자인 단계도 어느 정도 사라졌습니다
왜냐하면 점진적으로 반복하고 있거든요
계속 앞뒤로 반복하면서요. 좋은
피드백 루프가 모든 과정에 있습니다. 제품
제안서나 스펙도 더 이상 필요 없어요.
스펙은 보통 그냥 데모가 됩니다.
우리가 만든 것이 바로 스펙이에요. 아마도
한 페이지 분량의 문서를 만들어서
우리가 이것을 하는 이유를 설명하죠. 발표자료도
더 이상 필요 없습니다.
데모 앱의 영상을 보내면서 말하죠
우리가 만든 것을 보세요. 얼마나 유용한지
보시죠. 개발자가 인수받는다? 인수받을 개발자가 없어요
우리가 처음부터 끝까지 있었거든요.
이제 그들이 할 일이 아무것도 없습니다.
우리는 그냥 앱을 재구축하고
우리가 얻은 모든 학습 내용을 적용하거나
정말로 스펙을 작성하길 원한다면
솔직히 가끔 그런 일이 생기는데
갑자기 우리는 실제로
좋고 현실적인 스펙을 작성할 수 있게 됩니다
모든 문제점들을 알고 있거든요
이미 그 빌어먹을 걸 만들어봤으니까요.
냉혹한 현실은 제가 정말 좌절했다는 겁니다
우리가 이 전체 과정을 거쳐가면서
제가 며칠만에 명백히 틀렸다고 증명할 수 있는
것들에 대해 말이죠. 그래서 저는
아주 일찍부터 작업을 시작했고
우리가 과정을 부분적으로라도 진행할 때쯤이면
손을 들고 말할 수 있었습니다. '이봐요
이것의 작동하는 버전이 있어요
이 모든 과정을 거치기 전에
테스트해볼 수 있어요.' 그리고 만약 당신이
'아니야, 우리는 과정을 먼저 거쳐야 해'
라고 말하는 사람이라면
당신은 빌어먹을 바보처럼 보입니다
왜냐하면 실제로 빌어먹을 바보거든요.
제가 이것을 보여드리는 이유는
빠르게 만들 수 있는 제 능력을 활용해서
수많은 과정을 건너뛰고
모든 것을 훨씬 더 합리적으로 만들고
무엇보다 중요하게는 시간 낭비를
크게 줄이는 방법을 찾았기 때문입니다.
우리가 여전히 이 모든 단계를 거친다 해도
그 단계들이 훨씬 더 효율적이고
우리가 만드는 것에 대해 훨씬 더 현실적입니다
참조 버전이 있거든요. 그리고
확실하지 않은 것이 있으면
참조 버전을 업데이트하고
사용자들이 어떻게 반응하는지 보고
그에 따라 우리의 과정과 계획을
업데이트할 수 있습니다. 기존 과정이
연구, 디자인, 스펙 작성, 개발, 출시, 기도하기
보통 이렇게 되죠. 아, 그 뒤에 또 다른 단계가 있어요
폐기하기. 형편없었거든요.
이것이 과정이 되는 대신
저는 매우 다른 것을 추진했습니다.
제 과정은 식별하기
프로토타입 만들기, 피드백 수집
좋아질 때까지 반복하기
스펙 작성, 하지만 실제로는 그냥 짧은 목록을 작성하거나
어떻게 만들지 적어두는 것이죠
맞나요? 베타 버전 만들기, 피드백 수집하기
훌륭해질 때까지 5번으로 돌아가기. 그리고 이것이
저에게는 큰 차이점입니다. 저는
피드백 루프를 구축하는 아이디어에 집중했어요
그냥 피드백 루프를 만들고
우리가 좋아하는 상태가 될 때까지는
특정 단계를 넘어가지 않는 것이죠. 이 루프는
특히 당신이 사용자와 디자이너
그리고 다른 사람들을 이 과정에 참여시키면
매우 강력합니다. 엔지니어 한 명
디자이너 한 명, PM 한 명이 모두
이런 파트타임 작업이 몇 달, 심지어 몇 년의 작업을 줄여줄 수 있고
잠재적으로 7명의 엔지니어로 나쁜 제품을
개발하고 출시하는 것을
이 부분을 먼저 하는 것만으로도 막을 수 있습니다.
그리고 이 모든 AI 코드와 바이브 코딩에서
제가 기대하는 것 중 하나는
사람들이 이런 방식으로 먼저 구축할 수 있다는
작은 희망의 빛입니다. 스펙에 몇 년을 쓰고
나서 며칠 만에 만드는 대신
올바른 것을 만드는 데 며칠을 쓸 수 있고
더 중요한 것은 잘못된 것을 만드는 데 며칠을 써서
올바른 것이 무엇인지 알아낼 수 있다는 것입니다.
더 중요한 건 잘못된 것을 며칠 만들어보면서
올바른 것이 무엇인지 파악하고
며칠 더 재사양화하면
이를 파악한 후에는
일이 훨씬 순조롭게 진행됩니다.
그래서 저는 코드를 사용해 병목이 되는
다른 문제들도 해결할 수 있다고 믿습니다.
다만 파이프라인 끝단이 병목이라고 생각하지는 않습니다.
이 과정에는 엄청나게 많은 병목이 있습니다.
각각의 단계마다 사람이 다양한 일을 해야 하고
언제 다음 단계로 넘어갈지 결정해야 합니다.
이는 엄청나게 많은 중단점이 있다는 뜻이고
여기 아래쪽 부분을 더 빠르게 만드는 것은
이것을 빠르게 하는 것은 큰 도움이 되지 않습니다.
제가 아무리 빨랐어도
여기 아래를 빠르게 한다고 해서
체인 훨씬 앞단에 존재하는
제품 문제들은 해결되지 않았기 때문입니다.
이런 AI 빌딩 도구들을 사용해
반복하고 프로토타입을 만들어서
실제로 필요한 것이 무엇인지를
상당히 빠르게 파악할 수 있다면
이는 정말 강력합니다.
다시 기사로 돌아가서 Pedro가
뭐라고 하는지 보겠습니다.
그가 제게 이런 얘기를 하도록
영감을 줬거든요. 언어모델은 업무량을 이동시키지 제거하지 않습니다.
네, 클로드 같은 도구들이 초기
구현을 빠르게 해줄 수 있습니다.
하지만 결과적으로는 시스템을 통해
더 많은 코드가 흘러가게 되고
리뷰하고 통합하고
유지보수해야 하는 사람들에게
더 많은 압박이 가해집니다.
특히 작성자가 자신이 제출한 것을
완전히 이해하고 있는지 불분명할 때
이는 더욱 명확해집니다. 생성된 코드는
낯선 패턴을 도입하거나 기존 관례를 깨뜨리고
엣지 케이스나 명확하지 않은
의도하지 않은 부작용을 일으킵니다.
또 다른 핫테이크인데, 이런 것들은
AI가 나오기 전에도 제가 하던 일입니다.
프로토타입 단계에서 작업할 때
저는 이런 것들에 대해 괜찮았고
종종 이런 것들을 마주칠 거라고 예상했습니다.
제가 제출한 코드를 완전히 이해하지 못해도 괜찮았습니다.
절반은 문제를 해결하기 위해
다른 곳에서 복사한 것들이었습니다.
목표는 좋은 코드를 제출해서
프로덕션에 배포하는 게 아니었습니다.
이것이 구축할 가치가 있는지
알아내는 것이었습니다.
결코 코드 품질이 목표가 아니라 누군가 앞에 놓고
보여주는 것이 목표였습니다.
생성된 코드가 낯선 패턴을 도입하거나
기존 관례를 깨뜨린다고요? 오 맨,
제가 임의의 패키지를 설치해서
다른 사람한테 혼났던 횟수를 생각해보면
"네, 저는 실제로 그 패키지를 쓸 계획이 없었어요.
저는 이 기능이
구축할 가치가 있는지 알아내려고 했을 뿐이에요."
기능이 구축할 가치가 있는지, 그리고 이
패키지가 그 작업을 더 쉽게 만들어주는지 확인하는 거예요.
코드 리뷰하는 걸 싫어한다고 해서 죄송하지만,
어차피 머지할 것도 아니거든요.
그냥 조용히 하세요. 그리고 물론
예상치 못한 엣지 케이스와 부작용들이
명확하지 않게 나타나죠. 특히 그런 상황을
얼마나 많이 겪었는지 말로 다 할 수가 없어요.
그리고 우리 팀에게 정말 큰 감사를 표하고 싶어요.
특히 제가 안전팀에 있을 때,
때로는 이런 스펙이나
기술 프로토타입 작업을 하면서 각 부분들이
어떻게 결합되는지에 정말 집중하느라
프로토타입 작업에 너무 깊이 빠져서
끔찍한 엣지 케이스에 부딪히고
해결하지 못해서 만들고 있던 것에
번아웃이 오기 시작하면,
다른 사람이 새로운 시각으로 와서
제 엉망인 코드를 다 살펴보고
각 부분들이 제대로 결합되지 않는
방식을 파악해서
한 시간 만에 고쳐버리곤 했어요.
네, 저도 이 모든 것을 경험했어요. AI 없이도
이런 방식으로 구축할 때 정말로
겪는 일이었어요.
하지만 이런 방식으로 구축하는 목적과
제가 괜찮다고 생각하는 이유는
이 코드를 머지해서 프로덕션에
배포할 거라고 기대해서가 아니에요.
우리가 실제로 무엇을 만들고 있는지에 대한
이해를 구축하려고 하기 때문이에요.
이것은 전통적인 파이프라인의
빌드 단계를 대체하기 위한 것이 아니에요.
지라 이후에 하는 작업이 아니에요.
이것이 바로 리니어나 지라 티켓을 받아서
모든 걸 구현해주는 아이디어를 중심으로
구축된 모든 AI 에이전트들이
전혀 말이 안 되는 이유예요.
코드 리뷰가 코드를 작성하는 것보다
절반 정도는 더 부담스럽거든요.
일단 스펙이 나오면
그것을 구축하는 건 쉬워요. 하지만
잘못된 스펙을 작성했다면 올바른 것을
구축하기는 쉽지 않아요.
이런 각 단계마다
실패 케이스가 있다고 생각하면
이렇게 생각해볼 수 있어요.
연구가 잘못된 결론에 도달하면
아래 모든 것들이 망가지게 되죠.
저도 이런 걸 많이 봤어요.
PM이 사용자 보이스에서 무작위 요청을 보고
말도 안 되는 것을 구축하자고 제안하면
그것이 디자인팀에 넘겨지죠.
그리고 디자인팀은 PM보다 사용자에 대해
더 안다고 가정하지 않아요. 그래서 PM이 와서
이걸 해야 한다고 하면
그냥 그대로 해버리죠. 그러면 이제
실패한 스펙에 맞춰서 뭔가를
디자인하게 되거나, 스펙은 좋았어도
사용자에게 말이 안 되는 것을
디자인하게 되는데, 우리는 여기
맨 아래까지 가야만 그걸 알 수 있어요.
그리고 나서 그들이 스펙을 작성하죠.
디자인과 연구는 좋았을 수도 있지만
스펙이 사람들이 실제로
이해할 수 없는 방식으로 이야기하고 있는데
그들은 그걸 모르죠. 계획을 듣고
프레젠테이션을 들으면서
이게 정확히 무엇이 될지
완전히 이해했다고 생각하고
가서 기술 스펙을 작성하는데, 그것이
그 잘못된 가정들을 그대로 가져가죠.
그 잘못된 가정들을 그대로 가져와서
PM이 기술 명세를 이해하지 못한다고 말해요.
그래서 PM이 기술 명세 계획 회의에 나타나면
그들의 눈이 멍해져요
소프트웨어 개발 쪽에는 관심이 없으니까요.
그래서 명세에 대한 잘못된 가정들을
들어도
아예 눈치채지도 못해요.
하지만 그 모든 게 잘 진행돼서
빌드를 시작한다고 해도, 만약
제대로 조화되지 않거나
실제로는
해결하려는 문제를 해결하지 못하는
방식으로 빌드하고 있다면? 그걸 알아차리는 데
얼마나 걸릴까요? 아마 리뷰 과정에서
많은 것들이 막힐 거예요.
개발자들이 다른 개발자들의 코드를 리뷰하는데
왜 그걸 하는지 모르면
이미 잘못된 가정이
들어있을 수도 있는 명세를
확인하러 가죠.
그리고 마침내 출시해요.
이게 사용자들이 원하는 건지 기도하죠.
그런데 맨 처음 리서치 단계에서
했던 것들이
잘못된 가정이었다는 걸 깨닫죠.
그러면 전체 제품을 죽이고
팀을 해고해야 해요. 팀들이
특정 제품을 중심으로 구성됐는데
그게 실수였거든요.
하지만 팀을 해고하지는 않죠.
대신 재조직을 하고
갑자기 저는 C 레벨 개발자들에게
React 코드 쓰는 법을
가르쳐야 하는 상황이 돼요.
회사가 실수를 인정할 용기가 없었거든요.
여기서 실제 경험을 토로하는 건 절대 아니에요.
그래서, 이 빌드 단계를 빠르게 만드는 건
전혀 도움이 안 돼요. 완전히
동의해요. 이걸 빠르게 만들려고 한다면
아무 도움이 안 되죠. 왜냐하면
리뷰 과정을 더 느리고
어렵고 잠재적으로 더 위험하게 만들거든요.
이 단계가 실패할 가능성을 높여요.
그리고 똑같이, 아니 그보다
더 느린 위쪽 부분들은 전혀 도와주지 못하죠.
AI가 빌드를 도와주는 장점은
여기 4단계에 있던 빌드를
1단계의 일부로 옮겨서
올바른 일을 하고 있는지 확인할 수 있다는 거예요.
그리고 이걸 제대로 활용한다면
정말 대단한 성과죠. 하지만 저는 회사들이
이 과정에 너무 고집스럽게
매달리려고 하는 게 걱정돼요.
이런 멋진 바이브 코딩 도구들에서
많이 본 것처럼, 저는 방금
GitHub Spark에 대한 비디오를 찍었는데 바로
PRD를 하는 혼란에 부딪혔어요.
정확히 무엇을 빌드할지
자세히 설명하는 거죠. 또는 얼마 전에
Kira로 했던 것들을 보면
여기서 뭘 하려고 했는지의 완전한 혼란을
볼 수 있어요. 아마 명세를 삭제했을 거예요.
다루기 싫었거든요.
맞아요, 그랬어요. 그래서
명세를 삭제했는데, 그게
수천 줄의 마크다운을 써서
무엇을 하고 싶고
어떻게 생각하고 싶은지 설명했었어요.
여기 상위 부분들을 바이브 코딩하고 있는 거예요.
이건 오히려 더 나쁘다고 주장하고 싶어요.
바이브 코딩의 멋진 점 중 하나는
버리는 것에 대해 나쁘게 느끼지 않는다는 것입니다. 만약
평범한 개발자가 정말 초기에 빌드하고,
제품이 안 좋다는 걸 깨닫고 폐기한다면,
그들은 정말 기분 나쁠 거예요. 하지만 AI가
하게 하거나 저같은 사람이 하게 하면,
저는 제 코드가 버려지는 걸 좋아해요.
더 말이 되는 것으로 교체되거나
말이 안 되기 때문에 deprecate되는
것을 알면 기분이 좋습니다. 저는
그런 바이브를 좋아해요. 하지만 이 부분을
코딩 아웃한다고 해서 그런 장점들을
얻을 수 있는 건 아니고, 오히려 더 많은
단점들만 생깁니다. 정말 별로예요.
이건 우리 모두 동의할 수 있을 것 같은데,
이런 제품 스펙의 어려운 부분은
실제로 작성하는 것도 아닙니다. 그런 걸
작성하는 것은 그렇게 어렵지 않아요.
진짜 문제는 억지로 앉아서
그걸 읽는 것이 세상에서 가장 끔찍한 일이라는 것입니다.
그리고 이게 제 ADHD 때문인지는 모르겠지만,
틀렸다면 채팅으로 말해주세요.
하지만 그냥 거기 앉아서
이런 스펙들을 읽어나가는 것이
세상에서 가장 최악입니다. 코드 리뷰보다 훨씬 나쁘고,
더 중요하게는 직접 코딩하는 것보다
훨씬 더 나쁩니다. 그리고 저는
프로토타입과 데모를 만들고
이런 것들을 직접 테스트하는 것을
거기 앉아서 스펙을 읽으면서
흥미를 잃지 않으려고 애쓰고
실제 문제를 찾으려고 하는 것보다
훨씬 더 선호합니다. 개인적으로
제가 좋아하는 것들은 그런
일반적인 마인드셋에 맞습니다. 저는 코드를 좋아해요.
대화도 좋아하고, 새로운 아이디어와
솔루션을 가지고 놀아보는 것도 좋아합니다.
그리고 개인적으로는 작동하지 않는
것들을 deprecate하는 것도 좋아해요.
또한 가능한 곳에서는 단순화하는 것도요.
이런 것들은 모두 제가 좋아하는 일들입니다.
그리고 여기는 제가 좋아하지 않는 것들이에요.
코드 리뷰, 긴 스펙 읽기,
PM에게 8개월에서 12개월간
계획해온 프로젝트를 끝내라고
설득하는 것,
10명 이상이 참석하는 회의에 앉아있는 것
- 지루해서 아무도 주의를 기울이지 않는
그런 회의들 말이에요. 저는 이런 것들이 싫어요.
사실 코드 리뷰는 어느 정도 좋아해요.
코드 리뷰를 좋아해야 한다고 말해야겠네요.
아무도 정말 사랑하지는 않지만,
그래도 중요한 과정이고 지금 팀에게
리뷰를 너무 많이 빚져서
말 그대로 속이 메스꺼워요.
하지만 여기서 요점은, 도입하는 툴이
사람들이 이 부분에 시간을 쓰기 더 쉽게 만들고
이 부분에 시간을 쓰기 더 어렵게 만든다면,
그러면 그 툴들은
정말 별로라는 겁니다. 그러니까
AWS의 AI 코딩 IDE인 Hero 같은 걸 보면,
그것은 제가 코딩을 덜 하게 만들어요.
다른 사람들과도 덜 대화하게 하죠.
왜냐하면 저는 그냥 에디터에서
일이 끝나기를 기다리고 있으니까요.
새로운 아이디어를 가지고 놀기 더 쉽게
해주지도 않아요. 왜냐하면 모든 것이
그것이 생성하는 거대한 마크다운
파일들에 구워져 있어야 하거든요.
그것이 반드시 deprecation을
더 쉽게 하거나 어렵게 하는 것도 아니에요.
거기서는 그냥 noop 같은 건데,
하지만 당신은 뭔가를 제거하거나
단순화할 인센티브가 전혀 없어요.
그냥 AI가 일하게 놔둘 뿐이죠. 그래서 그것은
하위 부분에 대한 인센티브를 제거하고
상위 부분을 더 이상 할 수 없게 만듭니다.
이런 것들을 대체하고 있어요.
제가 싫어하는 부분은 무엇일까요?
훨씬 많은 코드를 검토해야 한다는 거죠.
에디터에서 절반의 시간을
스펙 읽기에 보내야 합니다.
저는 스펙 읽기를 피하려고
에디터에 오는 건데, 왜 그걸 제 일로 만드나요?
PM들이 프로젝트를 끝내도록
설득하는 데도 도움이 안 됩니다.
이제 그들은 이 도구를 사용해서
직접 만들 수 있다고 확신하거든요.
제가 나쁜 아이디어라고 말하면
'그냥 Cursor 써서 빨리 만들어보고
그러면 어떻게 느끼는지 보자'고 해요.
그리고 이제 코딩에 시간을 쓰지 않으니까
쓸데없는 회의에 앉아서
많은 사람들과 보낼 시간이 훨씬 많아졌죠.
네, 제가 가진 문제는
이런 도구들이 우리가 실제로 즐기는 부분,
실제로 재미있게 할 수 있는 것들,
그리고 그 과정에서 잠재적으로
제품을 개선할 수 있는 것들을 빼앗고
우리가 실제로 즐기지 않는
것들로 대체한다는 거예요.
그리고 우리를 더 생산적으로 만드는 방식이 아니라
단순히 노력을 다른 곳으로 옮기는 방식으로요.
에디터에서 직접 손으로 코드를 작성하는 것을
코드를 검토하는 것으로 대체했습니다.
프로토타입 만들기를
AI가 거대한 스펙을 작성하도록 하는 것으로 대체했어요.
이건 좋지 않은 거래입니다.
이런 도구들로부터 혜택을 받으려면
맨 위로 올라가서 우리의 프로세스를
다시 생각해야 합니다.
기존 프로세스는 이런 새 도구들과
잘 맞지 않습니다.
사실상 재미있는 부분들을 죽이고
별로인 부분들을 훨씬 쉽게 만들어서
너무 많은 텍스트를 생성하게 만들죠.
그런데 이 차트를 오래전에 봤는데,
지금 찾고 싶지 않으니까 그냥 넘어갈게요.
하지만 그 차트는 정말 웃긴 곡선이었는데
몇 개의 포인트가 있었어요.
단어 수로만 세면 평균적인 법률의 길이가
상대적으로 짧았던 시점들이 있었고
시간이 지나면서 꽤 의미있게
급증하기 시작했고, 그러다가 갑자기
다시 급증했습니다. 그리고 최근에는
훨씬 더 심하게 급증했어요.
이런 급증 시점들은 이해가 되는 것들이었습니다.
첫 번째는 타자기의 도입이었어요.
갑자기 법률이 훨씬 길어지기
시작했고, 정말 빠르게 늘어났죠.
그다음에는 복사 붙여넣기가 가능한
워드 프로세서가 나왔습니다.
복사 붙여넣기나 법률이 없던 시절이
있었는데, 그 일을 하는 건
생각도 하기 싫어요.
하지만 지금 AI 생성으로 인해
법률의 길이가 급증하고 있습니다.
어떤 것을 하기 훨씬 쉽게 만들면
결국 그것이 훨씬 많아지거든요.
하지만 문제가 그 것의 양이 아니라
질이라면, 이건 나쁘다는 거죠.
미국이나 다른 곳의 법률 문제는
법률에 충분한 단어가 없다는 게 아니에요.
더 많은 단어가 더 좋은 법률을
만든다는 데 모두 동의할 수 있기를 바랍니다.
더 많은 코드가 더 나은 앱과 같지 않다는 것도
마찬가지로 동의할 수 있을 거예요. 사실 저는
종종 그 반대를 의미합니다. 여기엔
역상관관계가 있어요. 그리고 이러한
새로운 기술들은 잘못된 부분을
더 쉽게 만들었습니다. 많은 글을
쓰는 것은 쉽게 만들었지만
좋은 법률을 작성하는 것은 더 쉽게 만들지 못했어요. 그 결과
좋은 법률을 통과시키기가 더 어려워졌습니다
왜냐하면 이제 핵심에 도달하기 전에
훨씬 더 많은 헛소리를 파악해야 하거든요.
그리고 만약 우리가 AI 코드로 그렇게 된다면
우린 망할 겁니다. 만약 정말로
우리 일이 이제 그냥 코드 리뷰하는 것이라면
패턴이나 관행을 따르지 않는
거대한 쓰레기 더미를 말이죠
다른 누군가가 우리에게 가서
헛소리를 생성하라고 했다는 이유로요
그건 정말 최악일 겁니다. 그래서 우리는
이런 것들로부터 혜택을 얻고 싶다면
우리의 프로세스를 다시 생각해야 합니다. 우리는
코드는 생산하기가 더
간단하지만 검증하기는 더
복잡한 상황에 처하게 됩니다. 이는
팀이 전체적으로 더 빨리 움직이게 만든다고
반드시 말할 수는 없어요. 절대 그렇습니다.
아마 우리를 더 느리게 만들 겁니다. 리뷰 프로세스,
스펙 프로세스, 이 모든 것이
처리해야 할 코드가 더 많다면 더 느려질 겁니다.
새로운 도전은 아닙니다.
개발자들은 오랫동안
복사붙여넣기 엔지니어링에 대해 농담해왔지만
LLM이 가능하게 하는 속도와 규모는
그런 복사붙여넣기 습관을 증폭시켰습니다.
완전히 동의합니다. 모든 LLM과
백엔드 에이전트, 이런 것들이
Google로 Stack Overflow를 검색하고
스테로이드를 맞은 코드 복사붙여넣기라고 말할 수 있어요.
코드를 이해하는 것은 여전히 어려운 부분입니다.
가장 큰 비용은 코드를 이해하는 것이지
작성하는 것이 아닙니다. 완전히 동의합니다.
LLM은 코드를 생산하는 데 걸리는 시간을 줄였지만
동작에 대해 추론하고
미묘한 버그를 식별하거나
장기적인 유지보수성을 보장하는 데 필요한
노력의 양은 바뀌지 않았습니다. 이런 작업은
리뷰어들이 생성된 코드와
직접 작성된 코드를 구별하는 데 어려움을 겪거나
특정 솔루션이 선택된 이유를
이해하지 못할 때 더욱 어려워질 수 있습니다.
완전히 동의합니다. 그리고 다시
제가 앞서 했던 요점을 강조하자면
거의 두 가지 종류의 코드가 있는 것처럼 느껴집니다
일회용 코드와 프로덕션 코드가요.
여기서 목표는 왼쪽에는
제품이 무엇인지 알아내는 것이나
그것이 작동할지 여부를 알아내는 것이 목표이고
모든 것이 사라져도 상관없는 경우이고
오른쪽은 오랫동안
유지보수될 것으로 예상되는 코드이며
더 오랫동안 해야 할 일을
계속 수행해야 하는 코드입니다.
일회용 코드는
벤치마크를 위한 제 허접한 스크립트나
샌드박스 또는 어떤 새로운
기능을 위한 프로토타입 같은 것들입니다.
반면 프로덕션 코드 측면은
메인 제품을 위한 핵심 인프라나
수백만 개의 앱을 지원하는 Rust 라이브러리나
12명의 개발자가 구축하는 새로운 기능입니다.
문제는 최근까지
이 두 가지 사이의 비용 차이가
그렇게 크지 않았다는 것입니다. 이제
왼쪽의 것들은 구축하기 매우 쉽고 오른쪽의 것들은
구축하기 쉽다는 것이 명백해 보입니다
오른쪽은 그렇지 않다는 걸 알 수 있죠. 하지만 우리는 아직도
사람들이 진심으로
모든 것을 Rust로 작성해야 한다고
말하던 시대의 여파에 있습니다. 작은 사이드 프로젝트까지도 말이에요.
사람들이 이 두 가지
코드 유형 사이의 차이를 전혀
인식하지 못했기 때문이죠. 저를 특별하게 만든 것은
이 둘을 구별하는 데 능숙했다는 점이었습니다.
언제 일회용 코드를 작성하는 것이
최선인지 아는 것, 이 부분을 정말 빠르게 작성하고
그런 다음
어떤 부분을 프로덕션화해서
다른 쪽으로 가져갈지 파악하는 것이었죠.
저는 작업하고 있는 프로젝트에서 이 두
측면 사이를 빠르게 전환했습니다.
일회용 코드 쪽에서 데모를 만들었죠.
사용자들과 반복 작업을 하고
그들이 실제로
원하는 기능이 무엇인지 파악했습니다. 그런 다음 더
프로덕션 버전을 구축하고
어떤 이상한 기술적 문제에 부딪히면
다시 돌아가서 다른
기술 구현을 프로토타입했습니다. 저는 코드를
다른 사람이 승인하기 위해
GitHub에 올리는 것으로만 사용하지 않았습니다.
그리고 사용자에게 배포하지도 않았어요. 저는 코드를
다른 많은 용도로도 사용했습니다. 저는
무엇을 구축할지 파악하는 데 사용했습니다. 저는
다른
기술 구현을 테스트하는 데 사용했습니다. 저는
이메일을 처리해서 어떤
보고서를 더 자주 받고 있는지 파악하는 데 사용했습니다. 저는
코드 자체가 중요하지 않은
모든 종류의 일에 사용했고
아무도 리뷰하기를 원하지 않았습니다.
그게 요점이 아니었거든요. 만약
코드에서 리뷰할 가치가 있는 것이 있다면
저는 그것을 복사해서 붙여넣어
실제 PR이나 어딘가의 gist에 넣고
팀에게 보내서 보게 했습니다.
하지만 이런 구별은
많은 엔지니어들이 할 수 있거나 하려고 하는 것이 아니었습니다.
대부분의 엔지니어들은
무엇을 하든 상관없이
같은 방식으로 코드를 작성하기 때문입니다. 제가 얼마나 많은
FAANG 회사에서 일하는 사람들의
사이드 프로젝트를 봤는지 말할 수 없어요. 그리고 이런 FAANG 인턴들이
사이드 프로젝트를 할 때
Facebook이나
Netflix의 스택과 동등한 것을 개인 할 일 목록을 위해
구축하고 있습니다. 그리고 사람들이 이것들을 구별하지 못하고
다른 부분에서
작동하는 패턴을 찾지 못하고
각 쪽에서 배우지 못하는 것은
매우 현실적인 문제입니다. 그리고 결과적으로
이런 AI 도구들이 많은 사람들을 혼란스럽게 할 것입니다.
왜냐하면 만약 여러분이
Lovable 같은 것을 보고 있는데
일회용 코드와 프로덕션 코드가
같은 것이라고 생각하고
같은 방식으로 작성한다면, 솔직히 말해서 Lovable은
일회용 코드 쪽에 속합니다.
대부분의 에이전트 코드 도구들이 그렇듯이. 만약
그것이 이런 것들을 하기 위해 만들어진 곳인데
여러분이 머릿속에서 이 둘을
의미 있게 구별하지 않는다면, 여러분은 이것을
나쁘고 이것을 좋다고 보게 됩니다. 다른 목적을 위한
다른 가치가 아니라요. 이제 여러분은
이것을 형편없고 쓸모없는 도구로 봅니다. 하지만
만약 여러분이 이것을
프로덕션 코드를 더 간단하고 좋게 만드는 방법으로 생각한다면
실제 것을 작성하는
같은 방식으로 프로토타입을 만들 필요가 없기 때문입니다.
여러분도 이런 도구들로부터 많은
혜택을 얻기 시작할 거예요. 제가 여기서
정말 강조하고 싶은 점은, 러버블 같은
도구에서 여러분이 작성한 코드나
제가 프로토타입 단계에서 작성한
코드를 팀에게 리뷰를 위해
던져준다면, 팀원들이 여러분을
싫어하게 될 거라는 거예요. 왜냐하면
그 코드는 리뷰를 위해 작성된 게
아니거든요. 그 코드는 읽히기 위해
작성된 게 아니라, 뭔가를 알아내기
위해 작성된 거예요. 반면 이 코드는
유지보수를 위한 거고, 이 코드는
문제를 해결하기 위한 거죠. 보통은
지식 격차라는 문제를 말이에요. 팀은
여전히 신뢰와 공유된 맥락에
의존합니다. 맞아요. 소프트웨어
엔지니어링은 항상 협력적이었어요.
공유된 이해, 정렬, 멘토링에
의존하죠. 하지만 코드가 논의되거나
리뷰될 수 있는 속도보다 빠르게
생성될 때, 팀은 품질이 보장되는
게 아니라 당연히 있을 거라고
가정하는 모드로 빠질 위험이
있어요. 그러면 리뷰어와 멘토에게
스트레스가 생기고, 더 미묘한
방식으로 속도가 느려질 가능성이
있죠. 이 부분도 완전히 동의해요.
멘티가 코드베이스를 따라잡을
때쯤이면, 누군가 PR을 올려서
기존에 있던 모든 걸 파괴해버렸기
때문에 절반이 바뀌어 있을 거라면,
행운을 빌어요. AI가 생성해주면
더 오래 걸릴 일을
그냥 해결할 수 있다고 생각해서
이 사람을 멘토링할 올바른 마인드셋이
없다면, 당신은 망한 거예요.
멘티가 AI로 뭔가를 생성했는데
그게 당신이 보통 AI로 생성하는
코드와 똑같아 보여서 머지를
눌렀는데 실제로는 작동하지 않는다면,
당신은 망한 거예요. 이런 문제들은
우리가 버릴 코드와 프로덕션
코드를 구별하지 않을 때 발생합니다.
이 글의 마지막 포인트는
LM이 강력하지만 기본기를 고쳐주지는
않는다는 거예요. 더 빠른 프로토타이핑,
스캐폴딩, 자동화에는 진짜 가치가
있어요. 오, 봐라. 끝에서 완전히
일치하네요. 그럴 줄 알았어요.
네, 제가 흥미롭게 생각하는
점은 예전에는 대부분의 개발자들이
버릴 버전을 훨씬 빠르게
만들 능력이 없었다는 거예요.
솔직히 말해서 트위치에서 제
팀원들에게 이 기능이 작동하는지
확인하기 위해 뭔가를 만들어보라고
하고, 프로덕션 준비 버전은
9개월이 걸릴 것 같다고 하면서,
우리가 가지고 놀 수 있는 데모
버전은 얼마나 빨리 만들 수
있냐고 물으면, 아마 2-3개월
정도라고 할 거예요. 하지만 그걸
2-3일에 할 수 있어요. 딥테크
베팅 같은 게 아닌 이상, 며칠
안에 사용 가능한 버전을 만들
수 없는 제품은 거의 없어요.
하지만 여러분의 쓰레기 CRUD 앱은
그런 경우가 아니에요. 그만
가짜짓 하세요. 만약 여러분이
프로덕션 프로세스를 몇 개월에서
몇 개월로 줄이는 게 최선이라고
정말로 생각한다면, 더 빨리
프로토타입을 만드는 데 6개월이 걸린다면,
그건 프로토타입이 아니에요. 그걸
프로토타입이라고 부르면 안 됩니다.
6개월간의 작업을 버리는 게
너무 아까울 테니까요. 제가 2주 동안
데모 버전을 만들거나 3일 동안
데모 버전을 만들어서 전체를
버린다고 해도, 저는 전혀
신경 안 써요. 그게 바로 핵심이거든요.
우리는 여전히 교훈을 얻었으니까요.
저자의 말처럼, LLM은 명확한
사고, 신중한 검토, 사려 깊은
설계의 필요성을 없애주지 않습니다.
그런 건 우리가 무엇을 만들지
파악한 후의 문제예요. AI가 그런
부분들을 대체해주지는 않아요.
하지만 여기서 이 격차를 인정하지
못한다면, 정말 바보처럼 들립니다.
제가 자주 보는 문제가 이거거든요.
프로덕션 코드 쪽에 인생을 걸고 있는
사람이 있어요. 주요 엔지니어라고 해봅시다.
어떤 임원이나 PM이 이 주요
엔지니어에게 가서... 가짜 슬랙
대화를 만들어볼게요. CEO: 안녕,
주요 엔지니어님, 러버블로 새로운
아이디어를 테스트할 수 있을까요? 안 좋은 기능을
그만 만들기 위해 유용할 것 같은데. ㅋㅋ
주요 엔지니어: CEO님, 진심이세요?
감정적 코딩 헛소리가 저희
최고급 개발팀보다 낫다고 생각하세요?
제가 Azure 인증을 받았다는 걸
상기시켜 드려야 하나요? 지난주에
애자일 수업도 훌륭하게 들었는데요.
더 뭘 원하세요? 이게 바로
문제예요. 이 CEO나... 사실 CEO가
아니라고 해봅시다. 그냥 일반적인
PM이 이렇게 말하고, 그 제품
관리자는 정말로 어떤 기능이 좋은
아이디어인지 나쁜 아이디어인지를
더 일찍 파악하고 싶어해요. 무의미한
일들에 너무 많은 시간을 낭비하는 게
지겨웠거든요. 제가 이걸 비꼬게
만들었지만, 이건 정말 현실적인
일이에요. 실제로는 이렇게
보일 겁니다. '3개월 미만으로 만든
것에서 의미 있는 정보를 얻을 수
있다고 생각하지 않아요. 러버블은
개발자가 아닌 사람들이 개인 앱을
만드는 용도지, 실제 업무용이 아니에요.'
저는 PM들로부터 이런 메시지를
본 적이 있어요. 이런 일이 정말
일어나지 않는다고 생각한다면, 이걸 보세요.
'러버블'이라는 단어를 다른 걸로
바꿀 수도 있어요. Electron이나
React나 JavaScript나 Supabase나
Convex나 우리가 여기서 얘기하길
좋아하는 기술들 중 아무거나요.
그러면 이런 사람들이 항상 보내는
아주 현실적인 메시지라는 걸
깨달을 거예요. 러버블이 그런
것들 중 하나라는 사실이 제 말의
의미를 보여줍니다. 여기서 핵심은
주요 엔지니어가 자신의 관점 밖에서
생각하지 못한다는 거예요. 그들에게
의미 있는 정보는 '제품이 유용한가?'가
아니에요. 그들이 이 지점에서
말하는 건 훨씬 다릅니다. 그들이
말하는 의미 있는 정보는 '기술
사양이 작동하는가?'예요. 그들은
제품이 이미 작동한다고 가정해요.
PM이 어떤 상황에 있는지 듣지
못해요. 그들이 생각할 수 있는 건
만들면서 그것을 어떻게 만들지
그들은 그런 경로와 가능성을
완전히 무시할 것입니다. 하지만 PM은
다른 사람들이 이 도구로
유용한 것들을 만드는 걸 보게 됩니다.
그들이 해결하고 싶어하는
문제들을 이런 도구들로
충분히 해결할 수 있다는 걸 깨닫게 됩니다.
그들은 서로 다른 말을 하고 있어서
깊은 좌절감을 느끼게 될 거예요.
바로 이렇게 적대적인 관계가 생기는 겁니다.
저는 이런 종류의 대화가
앞으로 정말 많이 일어날 거라고
확신하고, PM들과 수석 엔지니어들이
엄청 많이 싸우게 될 거라고 생각합니다.
왜냐하면 이쪽 사람들은 프로토타입의 가치를
전혀 보지 못하고, 저쪽 사람들은
수석 엔지니어가 여기서 생각하는 게
기술적인 세부사항이지
그 기능이 만들 가치가 있는지 없는지가
아니라는 걸 이해하지 못하거든요.
제가 Twitch에서 가장 멋진 순간 중 하나는
제 디자이너가 갑자기
HTML과 JavaScript에 대한
무작위 질문들을 저에게 하기 시작했을 때였어요.
정말 혼란스러웠는데 왜냐하면
그건 그녀의 역할과는 전혀 상관이 없었고
우리가 Twitch에서 사용하는 것들에 대한
질문도 아니었거든요. 그래서
그녀가 뭘 하고 있는지 물어봤어요.
그녀가 스크린샷을 보내줬는데
알고 보니 Mod View의
프로토타입 버전을 만들려고 하고 있었어요.
보기에는 정말 매력적이었지만
실제로는 전혀 작동하지 않았어요.
실제 데이터도 사용하지 않았고요. 그냥
데모용 데모였어요. 이게 어떨지
보여주는 용도로 만든 거였죠.
그래서 그걸 모더레이터들 앞에 놓고
이게 어떻게 보이는지, 얼마나 유용한지
물어볼 수 있게요. 제가 함께 일한
최고의 디자이너 중 한 명인
아이리스 같은 사람이라면 이런 도구들로
엄청난 도움을 받을 거예요.
PR을 많이 올리게 되어서가 아니라
훨씬 더 반복적인 과정을 통해
올바른 것이 무엇인지 알아낼 수 있기 때문이죠.
이게 제가 강조하고 싶은 핵심입니다.
다음 깨달음까지의 시간을 개선하는 것은 정말 좋은 일입니다.
우리는 통찰력을 최적화해야 합니다.
가정에서 새로운 학습으로 얼마나 빨리 갈 수 있을까요?
사용자가 어떤 것을 원한다는 가정이 있다면
그들이 정말 원하는지 알아내는
가장 짧은 경로는 무엇일까요?
이 버튼이 이런 식으로 작동해야 한다고 생각한다면
정말 그래야 하는지 알아내는
가장 짧은 경로는 무엇일까요?
다음 학습, 다음 통찰, 다음 이해,
전에는 이해하지 못했던 것을
이해하게 되는 다음 순간으로
얼마나 빨리 갈 수 있을까요?
이런 도구들을 사용해서 더 많은 통찰을 얻고
우리가 뭔가를 알아낼 때 더 많은
'아하' 순간을 가질 수 있다면
그들은 유용합니다. 하지만 그 과정에서
아무런 통찰도 얻지 못하고
스피드런을 하는 데만 사용한다면 최악이죠.
이런 도구들 중 많은 수가
이런 방식으로 홍보되지 않는다고 생각해요.
이런 도구들은 '개발자들이 느려요.
그들을 대체하고 더 빠르게 만드세요'라고
홍보되고 있어요. '우리 사용자가 원하는 걸
더 빨리 알아낼 수 있어요. 더 효과적으로
더 효과적으로 할 수 있습니다. 더 빠른
반복 루프를 만들고 더 빠른 피드백을
받을 수 있죠. 이것이 바로 마법입니다.
코드 작성 비용은 확실히 떨어졌지만,
팀이 함께 이해하는 비용은
그대로입니다. 그게 여전히
병목지점이에요. 그렇지 않은 척
하지 맙시다. 완전히 동의합니다.
팀의 이해는 대부분의 경우에
엄청난 병목지점입니다. 여기서 제가
강조하고 싶은 추가 포인트는 이겁니다.
거대한 스펙이 있다고 해봅시다. 이
사각형이 스펙이라고 하죠. 그리고 이건
주로 제품 리드, 디자인 리드,
기술 리드가 함께 만든 것으로
여기 들어갈 모든 요소들을
구상한 겁니다. 관대하게 말해서, 아마
이 정도만이, 실제로
좋고 올바를 겁니다. 그리고 나머지,
이 상자에 남아있는 부분은
버려야 할 쓰레기입니다.
저는 여기서 비율이 종종
훨씬 더 나쁘다고 주장합니다. 제가
스펙을 읽고, 전체 팀이
스펙에 동의했는데, 실제로 우리가
배포한 것은 스펙과 전혀 달랐던
경우가 얼마나 많은지 모릅니다.
스펙이 나빴고 많은
잘못된 가정이 있었기 때문이죠.
스펙 대신에 프로토타입을 만들고,
이런 거대한 것 대신
프로토타입이 이렇게
작은 것이라면 어떨까요? 그리고 비율이
훨씬 더 나쁠 수도 있어요. 프로토타입이
좋은 것보다 나쁜 것이 더 많을 수도 있죠. 하지만
여기서 좋은 통찰을 얻습니다. 아마
전체 프로토타입이 나빠서 이
아이디어 자체가 처음부터 나빴다는
통찰을 얻을 수도 있어요. 이 부분을
만드는 데 훨씬 적은 시간이 걸립니다.
그리고 훨씬 간단한 이걸
만들면 소통도 더 쉬워집니다.
2-3명이 작은 프로토타입에 대해
소통하는 것이 20명 이상이
거대한 스펙에 대해 이야기하는 것보다
훨씬 쉽거든요. 그리고
뭔가를 배우고 발견할
가능성이 이런 방식으로 시작할 때
훨씬 높아집니다. 아마 그 다음에
두 번째 프로토타입을 만들어서
좋은 부분들을 가져와 확장할 겁니다.
그러면 좋은 부분이 더 많아지고
조금 더 큰 것을 만들지만
나쁜 부분도 더 많아집니다. 그리고
좋은 부분들로 또 다른
프로토타입을 만드는데, 좋은 부분들이
더 작아졌어요. 잘못된 가정 때문에
망가졌고 이제 나쁜 부분이
엄청 많아졌습니다. 하지만
나쁜 부분들이 좋은 이유는 많은
교훈을 얻었기 때문입니다. 이제
이 모든 나쁜 부분들을 영원히
버리고 다시는 하지 않을 수 있어요.
그리고 다음 버전은 두 배로
커지고, 훨씬 더 좋아지며, 여전히
거친 부분이 있지만 그게 무엇인지
정확히 알고 있습니다. 그리고 얼마 전에
배운 많은 교훈들이 여기에
적용됩니다. 그런 것들을
다듬어내면 여러분이 만드는
제품이 다른 스펙이 제안했던 것보다
훨씬 작다는 것을 알게 됩니다. 그리고
채팅에서 사람들이 말하듯이, 이것은 또한
Jira 티켓에 시달리는 건 재미없어요.
그렇다고 말하면 믿지 않을 거예요.
새로운 걸 시도하고, 새로운 솔루션으로 놀아보고,
팀과 함께 반복 작업하면서
실제 문제를 해결하려고 시도하는 게
훨씬 재미있어요.
그리고 이런 툴들이 각각의 단계를
예전보다 훨씬 저렴하게 만들어 줘요.
만약 팀이 이걸 만드는데 3개월이 걸리고
저걸 만드는데 9개월이 걸린다면
망설이는 걸 이해할 수 있어요.
하지만 20명의 개발자가 9개월 걸려서 이걸 만드는데
개발자 1명이 3일 만에 이걸 만들 수 있다면
아직도 이런 식으로 처음부터 만들고 있다면 정말 바보죠
제품이 실제로 필요한지도 모르는 상황에서 말이에요.
정말 멍청한 일이에요.
그래서 저는 이런 AI 도구들에 흥미가 있어요.
제가 생각하는 방식은
갑자기 훨씬 더 많은 팀들이
프로토타입을 훨씬 빠르게 만들고
집중적으로 반복 작업을 해서
진짜 해결하고 싶은 문제를 찾은 다음
전통적인 방식으로
제품 리드나 PM, 수석 엔지니어들에게 넘겨서
제대로 스펙을 짜고 올바른 방식으로 개발하는 거예요.
하지만 그 과정에서 훨씬 적은 부분들만 있다면
훨씬 더 잘 소통할 수 있고
모든 사람이 훨씬 더 잘 이해할 수 있어요.
3명이 이걸 이해하려고 하는 것이
20명에서 30명이 이걸 이해하려고 하는 것보다
항상 더 좋은 경험이 될 거예요.
이건 꽤 명백한 일이라고 생각해요.
이 글을 써준 Pedro에게 큰 박수를 보냅니다.
정말 훌륭했고
한동안 제가 가장 좋아했던 토론 중 하나를 영감을 줬어요.
이걸 공유해 주셔서 감사합니다.
정말 고마워요
그리고 이것에 대해 반응할 수 있게 해주셔서도 감사해요.
정말 좋았습니다.
아직 안 봤다면 그의 블로그를 확인해 보시고
트위터에서 팔로우도 해주세요.
이 토론을 봐주신 모든 분들 감사합니다.
정말 재미있었어요.
확실히 털어놓고 싶은 것들이 있었거든요.
여러분들이 어떻게 생각하시는지 궁금해요.
이게 좋은 내용이었나요?
잘못된 방향이었나요?
프로토타입과 더 전통적인
프로덕션용 개발 사이의 구분이
이상하다고 생각하시나요?
여러분의 생각을 알려주세요.