1P by GN⁺ | ★ favorite | 댓글 1개
  • 생성형 AI로 프로젝트를 완성해도 요청한 사람과 실제 제작 주체가 다르다면, ‘내가 만들었다’는 성취감을 얻기 어려움
  • 프롬프트에는 비전·판단·소통·기술이 필요하지만, 직접 만드는 기술보다는 다른 존재에게 제작을 맡기는 기술에 가까움
  • 직접 작성한 177줄짜리 스페인어 플래시카드 시스템은 Claude보다 약 50배 오래 걸렸지만, AI가 만든 어떤 코드보다 큰 자부심을 줌
  • 컴파일러·어셈블러·망치는 제작자의 도구로 느껴지는 반면, 인간 언어에 응답하는 AI는 지시받는 사람처럼 보여 도구와 대리 제작자의 경계를 흐림
  • AI를 통한 생성도 창작 행위일 수 있지만, 결과물을 완성하는 것과 직접 만드는 것은 개인적 충족감에서 같지 않으며 그 경계도 명확히 규정하기 어려움

AI 개발이 바꾸는 성취감

  • 생성형 AI와 LLM을 사용하는 개발자는 상반된 변화를 함께 경험함
    • 손으로 코딩하는 장인정신, 저수준 문제 해결, 재미를 잃을 수 있음
    • 고수준 문제 해결이 늘고, 미뤄 둔 프로젝트를 완성하며 새로운 재미를 얻을 수도 있음
  • 이런 득실을 넘어, AI가 대신 완성한 결과물을 자신이 만들었다고 느낄 수 있는가가 핵심 고민임
  • 1980년대 마이크로컴퓨터 시대부터 코딩하고 업계에서 20년간 일했으며 현재 컴퓨터과학을 가르치는 개발자의 경험에서 출발함
    • AI 유토피아와 파멸 척도에서 스스로를 65% 파멸 쪽으로 평가함
    • Claude Code를 사용하면서 직접 코딩도 병행함

AI 결과물로 꾸민 ‘다재다능함’

  • 도입부에는 직접 만든 것처럼 보이는 여러 결과물이 등장함
    • 전투 장면을 담은 SF 소설 The Vorrkai Interval
    • 파스텔 색상의 목판화 Mirrors of the Machine
    • 새로 지은 삼나무 현관 데크
    • Rust로 작성한 TUI 어드벤처 로그라이크 코드
  • 실제로 소설·그림·코드는 AI가 생성했고, 데크는 돈을 받은 숙련공들이 시공함
  • 본인이 맡은 역할은 제작을 시작하고 요구사항을 전달하는 것이었기에, 이 결과물들을 자신이 만들었다고 말하기는 불편함

‘내가 만들었다’고 말하기 어려운 이유

  • 다른 사람이 시공한 데크는 “내가 설치했다”보다 “설치하게 했다”고 구분하는 편이 정확하다고 봄
  • Claude가 생성한 코드 역시 “내가 만들었다”가 아니라 “나를 위해 만들게 했다”고 표현함
    • 고용 관계가 아닌 AI 생성물에 자신의 이름으로 MIT 라이선스를 붙이는 것도 불편해 Unlicense를 사용함
  • 관리자로 일할 때도 “내가 제품을 만들었다”가 아니라 “우리 팀이 만들었다”고 말하며, LLM을 관리했다면 “내 에이전트들이 만들었다”고 표현함
  • 프로젝트를 끝내는 일 자체는 좋지만, 자신이 시작한 프로젝트를 타인이 완성하면 직접 제작할 때보다 충족감이 훨씬 적음
  • 잃게 되는 것은 코딩 기술이나 문제 해결의 재미뿐 아니라 무언가를 직접 만드는 경험

손으로 만든 177줄짜리 플래시카드

  • 아내가 스프레드시트에 원하는 단어를 넣어 플래시카드로 볼 수 있는 단순한 스페인어 학습 시스템을 요청함
  • 구현은 직접 맡고 Claude에는 코드를 생성하지 말라고 지시했으며, Google Sheets에서 데이터를 가져오는 가장 쉬운 방법 같은 기초 정보만 질문함
    • Google Sheets의 CSV 엔드포인트를 사용함
    • JavaScript 112줄, CSS 33줄, HTML 32줄로 총 4개 파일과 177줄을 작성함
  • Claude가 만들 때보다 약 50배 오래 걸렸지만, 자신의 이름을 붙이고 직접 만들었다고 말할 수 있음
  • 규모가 크거나 획기적인 코드는 아니어도 Claude가 작성한 어떤 코드보다 훨씬 큰 자부심을 느낌
  • 요구를 시작한 아내가 자신이 플래시카드 시스템을 작성했다고 말하지 않듯, 요청자가 곧 제작자는 아님

프롬프트 작성이라는 별도의 기술

  • 효과적인 프롬프트에는 분명한 인간의 기여가 필요함
    • 비전을 적용해야 함
    • 결과를 판단해야 함
    • 의사소통과 프롬프트 작성 능력을 갖춰야 함
  • 모든 프롬프트와 AI 사용자의 효율이 같지는 않으므로 프롬프팅에도 중요한 기술이 존재함
  • 다만 이는 직접 제작하는 능력보다 원하는 것을 효과적으로 만들어 달라고 요청하는 능력에 가까움
  • 소프트웨어 프롬프팅 역시 직접 소프트웨어를 만드는 행위보다는 다른 존재에게 제작을 맡기는 일처럼 느껴짐

컴파일러와 AI 사이의 회색지대

  • C나 Rust 프로그램을 작성할 때 실제로 실행되는 기계어까지 직접 쓰지는 않지만, 여전히 자신이 프로그램을 작성했다고 느낌
  • C 코드에서 기계어로의 변환은 수학적으로 정밀한 과정에 가깝지만 몇 가지 의문이 남음
    • Clang과 GCC가 서로 다른 명령어를 생성하므로 결과가 엄밀히 하나로 결정되지는 않음
    • 플랫폼마다 기계어가 달라도 C 코드는 이식 가능함
    • Linux에서만 빌드했더라도 Windows에서 실행되는 프로그램을 자신이 작성했다고 볼 수 있음
  • Claude에 재귀 Fibonacci C 프로그램을 x86_64 Linux 어셈블리로 변환하도록 요청하자 빌드하고 실행할 수 있는 코드가 생성됨
    • 출력은 0: 0부터 9: 34까지 올바른 Fibonacci 수열을 보여 줌
    • 종료 상태 0을 설정하는 데 XOR도 사용함
  • 원본 C 코드를 직접 작성했기 때문에, 어셈블리를 Claude가 생성했어도 그 프로그램은 자신이 썼다고 느낌
  • 어셈블리에서 기계어로의 변환은 엄격하고 비지능적인 과정이어서, 못을 박을 때 망치를 쓰는 것처럼 제작 행위를 빼앗지 않는 도구 사용으로 받아들임

도구와 대리 제작자를 가르는 기준

  • 직접 하는 일에는 C 코드를 작성해 실행하기, 망치로 못 박기, 어셈블러로 어셈블리를 기계어로 바꾸기가 포함됨
  • 지시를 내려 타인에게 맡기는 일에는 소프트웨어 작성, 데크 시공, 그림 제작이 들어감
  • ChatGPT가 생성한 그림을 자신이 그렸다고 느끼지는 않지만, 망치나 컴파일러에는 무언가를 대신 해달라고 부탁한다는 감각이 없음
  • Claude에 C 코드 컴파일을 요청한 사례는 두 범주에 걸쳐 있음
    • 직접 쓴 C 코드를 실행한 것으로 볼 수 있음
    • AI에 소프트웨어 작성을 요청한 것으로도 볼 수 있음
    • 같은 결과를 영어 요구사항만으로 생성하게 할 수도 있음
  • AI는 부정확한 인간 언어를 이해하고 인간처럼 응답하므로, 컴파일러나 망치보다 관리자와 부하 직원의 관계처럼 느껴질 수 있음
  • AI가 내장된 망치에 못을 박으라고 부탁한다면 창작 과정에는 참여했더라도 자신이 직접 망치질했다고 말하기 어려움
  • 회색지대를 살펴볼수록 AI에 제작을 맡기는 일도 창작 행위일 수 있다는 생각은 강해지지만, 직접 만들었다고 부를 수 있는 경계는 여전히 불분명함

결과물에 실제로 투입한 기여

  • SF 장면에는 영웅과 두 난민이 적의 레이저 공격에 갇혔다가 탈출구를 찾는 세 문단과 소설 제목을 생성하라는 프롬프트를 사용함
  • 그림에는 서로 마주 보고 컴퓨터에 집중하는 두 마법사풍 해커를 목판화와 파스텔 색상으로 만들고, 양쪽에 상반되면서 보완적인 색을 쓰라고 요구함
  • 게임에는 Ultima I과 유사한 판타지 TUI 게임을 요청함
    • 맵 셀당 3×3 문자, 화면당 7×7 맵 셀, 물 애니메이션을 요구함
    • Perlin noise 기반 절차적 세계, 무작위로 움직이는 사전 정의 몬스터, D&D풍 능력치를 포함함
    • 직업 없는 일반 플레이어를 사용하고 Rust와 Ratatui로 구현하며 UI와 게임 로직을 분리하도록 요구함
  • 목공 작업에는 “현관 데크를 교체해 달라”고 요청했지만, 도입부 사진에 필요한 나무 조각의 못 하나는 실제로 직접 박음
  • 글에 사용한 em dash는 의도적으로 선택했으며 Vim digraph는 ^K-M

댓글과 토론

Hacker News 의견들
  • LLM으로 코드 한 줄 직접 쓰지 않았더라도 내가 만든 결과물에 자부심을 느낄 수 있음
    훌륭한 프로그래머라고 자랑할 생각은 없지만, 코딩은 애초에 완제품을 만들기 위한 수단이었음
    정원을 직접 시공하지 않고 조경 회사를 고용했어도 내가 구상한 정원에서 만족감을 느낄 수 있는 것과 같음
    바이브 코딩으로 만든 기타 타브 편집기는 다른 소프트웨어에 없는 기능으로 실제 문제를 해결하며, 직장·가족·취미를 병행하면서 AI 없이는 결코 만들지 못했을 것임

    • 지난주 식당에서 양상추를 빼고 양파를 추가해 주문한 치즈버거도, 내 요청 없이는 존재하지 않았으니 내가 “만들었다”고 할 수 있는지 의문임
      땅콩버터 젤리 샌드위치처럼 창의성 없이 직접 작업한 경우도 만들었다고 하며, 원형 톱처럼 수작업을 대신하는 도구를 써도 마찬가지임
      하지만 웹에서 Articulated dragon.stl을 내려받아 출력 버튼만 누른 것과 직접 설계해 출력한 것은 다름
      CNC와 3D 프린터의 운용에도 수작업과 다른 지식과 기술이 필요하지만, 도구가 쉬워질수록 경계는 흐려짐
      명확한 선은 없더라도 “새 도구는 부정행위라며 전부 손으로 만들기”와 “샌드위치를 주문하고 기다리기” 사이 어딘가에 있음
    • “내가 없었다면 존재하지 않았을 것”이라는 논리는 성립하기 어려움
      프로젝트를 다른 사람에게 위임했다면 관리하거나 일부를 설계했다고는 할 수 있어도 직접 수행했다고 공을 가져가기는 어려움
      실제 제작을 하지 않았더라도 문제 해결을 위한 방향과 비전을 제시한 일에는 충분히 자부심을 느낄 수 있음
    • “내가 만들었다”는 표현은 직접 손을 더러운 점토에 넣는 행위를 위해 남겨둔 개념이며, 결과만 얻는 다른 접근과는 고유한 차이가 있음
    • making은 적극적으로 직접 만드는 의미가 강하고, producing은 감독하고 조율하는 의미가 더 강함
      게임 개발에서 프로듀서들과 일하기 시작하면서 이 차이가 더 선명해졌음
    • LLM으로 만든 것이지, 직접 만든 것은 아님
  • 최근 Claude로 주요 부분을 작성한 사이드 프로젝트들이 원하는 기능을 수행했는데도 이상할 만큼 결과물과 단절된 느낌이 들었고, 여가 시간에 AI를 어떻게 써야 할지 고민하게 됐음
    컴파일러는 정밀한 명령에 결정론적이고 일관된 결과를 내지만, Claude는 코드보다 덜 정밀한 지시를 추론해 매번 다른 결과와 요청하지 않은 동작까지 넣으며 사용자를 대신해 결정함
    대규모 Markdown 명세나 상세한 테스트로 엄격히 지시할 수 있지만, 그 정도로 작성할 시간이라면 직접 코딩하는 것과 차이가 크지 않을 수 있음
    AI는 막힌 문제를 해결하거나 개념을 개인화해 설명할 때 훌륭하지만, 결정을 맡기는 순간 창작보다 결과를 우선하게 됨
    창작 자체를 사랑해 만드는 사이드 프로젝트는 제품보다 예술에 가까우므로, AI는 제품에는 어울려도 예술에는 어울리지 않을 수 있음

  • 기술 분야에는 세부 사항을 좋아하는 사람과 시스템을 좋아하는 사람이 있으며, 시스템 지향형은 LLM을 재미있고 만족스럽게 느끼는 반면 세부 지향형은 정반대로 느낄 수 있음
    신경망 이전 컴퓨터 비전으로 유명했던 지인은 과거에는 수많은 일을 처음으로 해결했지만, 이제 소프트웨어 개발 대부분이 이미 아는 것들을 조립하는 작업이라 지루하다고 했음
    LLM은 이런 흐름을 더 가속하는 듯함

    • 기술보다 수학을 좋아하며, 키보드도 만지지 않고 문제를 간단한 방정식으로 환원하거나 알고리즘을 설계하는 일을 특히 즐김
      LLM으로 스크립트를 쏟아내는 것은 앱이 정답이라고 할 때까지 스도쿠에 숫자를 무작위로 넣는 것과 비슷하게 느껴짐
    • Andrej Karpathy도 “LLM 코딩은 주로 코딩을 좋아했던 엔지니어와 주로 무언가를 만드는 일을 좋아했던 엔지니어를 갈라놓을 것”이라고 표현했음
    • 시스템 지향형으로서, 마법처럼 생겨나 때로는 이해하기 어려운 구성 요소의 조합이 어떻게 흥미롭고 즐거운 결과로 이어지는지 세부 지향형에게 전달하기 어려움
    • 품질을 중시하는 사람이라면, 일부 환경에서 LLM이 품질에 대한 마지막 헌신마저 수량과 속도를 위해 희생하는 모습에 실망할 수도 있음
  • Hacker News에서 LLM이 생성한 제출물을 보고 싶지 않음
    성공적인 제품이 아니더라도 인간의 독창성이 실제로 적용되는 모습을 보는 것이 즐거움이었음
    컴퓨터끼리 두는 체스를 보지 않는 것처럼 AI가 만든 소프트웨어와 예술을 쉽게 구분해 피할 방법이 필요함

  • 차이는 입력의 변화가 출력의 관찰 가능한 동작에 어떤 영향을 주는지 추론할 수 있는 정도에 있음
    컴파일러가 만든 실행 파일이 의도대로 동작하지 않는다면 99.99%는 내 책임이며, 소스 코드로 결과를 예측하고 오동작도 분석할 수 있음
    바이브 코딩 프로그램과 생성 프롬프트 사이에는 이와 비교할 만한 관계가 성립하지 않음

    • 신뢰도가 99.99%인 LLM이라도 다시 내가 직접 만드는 상태로 돌아가지는 않을 것임
      완전자율 잔디깎이 로봇이 정확히 작업했다면 로봇이 잔디를 깎은 것이지만, 내가 타서 운전하거나 조이스틱으로 조종했다면 내가 깎은 것임
      어디를 깎을지 결정하는 주체가 누구인지가 소유감을 좌우함
    • 무언가를 직접 만들면 결과가 왜 그런 형태가 되었는지 구체적으로 이해하고 고유한 판단 기준도 갖게 됨
      바이브 코딩 프로젝트에도 들인 관심과 이해의 깊이에 비례해 서로 다른 수준의 소유감을 느낌
    • 핵심은 과정에 대한 주도권과 결과에 대한 주도권의 차이로 보임
      어떤 사람은 과정을 시작할 시점과 결과의 좋고 나쁨만 정하지만, 실제로 판단할 역량이 부족해 제작자가 하위 요소들을 모두 잘 처리했으리라 믿기도 함
      컴파일러는 프로그램을 거의 항상 올바른 바이너리로 만들고 실패하면 명확히 알리지만, 알고리즘의 정확성은 사용자의 책임이라 경계가 분명함
      반면 LLM의 책임 경계는 불분명하고, 프롬프트에 명시하지 않은 모든 요소를 안정적으로 처리하지 못함
      전문 화가에게 Batman을 그려 달라고 했다면 발가락이나 팔 개수까지 검사할 필요가 없는 인간 협업과도 다름
  • 더 빠르다는 이유로 LLM을 쓰면서 예전 같은 즐거움을 얻지 못하게 됐음
    속도가 재미보다 항상 우선할 필요는 없으며, 직접 쓰는 일을 “비효율적”이라고 여기지 않고 다시 집중하는 법을 배워야 함
    13살 때 한밤중에 코딩하던 감각을 되찾고 싶으며, Beej의 글은 늘 인상적임

    • 기타리스트 Steve Vai는 배우고 직접 행하는 과정이 존엄성과 자존감을 준다고 했음
      글·코드·음악을 프롬프트만으로 만들면 바로 그 과정이 사라짐
  • 약 두 달 동안 술 마시는 것 외에는 TV조차 보기 싫었지만, 몇 주째 금주하면서 창작 의욕이 조금씩 돌아오는 듯함
    직접 카메라와 소형 자율주행 로봇을 설계·제작해 왔고, 차 안에서 굴러 고장 난 카메라도 마침내 수리했음
    빈티지 C 마운트 렌즈마다 영상을 만들다가 흥미를 잃어 렌즈 상자와 장식품이 된 카메라만 남았지만, 이 하드웨어 프로젝트들 덕분에 소프트웨어 엔지니어 일자리 두 곳을 얻었음
    Claude Code가 코드를 생성한 프로젝트를 두고 “내가 만들었다”고 하면 존중이 즉시 줄어드는 편이지만, 결국 돈과 자유가 핵심이며 나도 자유를 확보한 뒤 좋아하는 일을 하고 싶음

    • 자신을 너무 몰아붙이지 않는 편이 좋음
      아직 확인하지 않았다면 ADHD나 다른 요인의 가능성도 살펴볼 만함
      인간은 기계가 아니라 복잡한 생물학적 존재이므로, 자신의 특성을 이해하면 올바른 방향으로 다시 움직이는 데 큰 도움이 됨
  • 최근 AI에게 맡긴 작업은 대략적인 세부 사항조차 기억하기 어려운 반면, 수년 전 작성한 10만 줄 이상의 코드베이스는 지금도 머릿속에서 대체로 따라갈 수 있음

    • 10년 전 협업한 프로젝트를 보면 누가 어느 부분을 작성했는지, 어디에 함정이 있었고 무엇 때문에 고생했는지 실제 작업 장면을 기억하지 못해도 구분할 수 있음
      하지만 불과 2주 전 AI와 만든 프로젝트는 “누군가 프롬프트를 쓰자 코드가 나왔다”는 흐릿한 덩어리로 남음
  • OSU 학생 시절 실용적인 시스템 프로그래밍을 독학하면서 매일 Beej's Guide to Network Programming을 참고했음
    비싼 대학보다 이 무료 웹사이트가 훨씬 유용하다고 아쉬워했는데, 이제 Beej가 OSU에서 가르친다니 멋진 순환이며 훌륭한 채용임

    • 내년에는 소프트웨어 공학 과목 두 개를 맡아 기존 내용을 사실상 버리고 새로 구성할 예정임
      시스템 수준 설계, 적극적인 AI 활용, 더 큰 프로젝트와 팀에 초점을 맞추려 함
      코딩 학습은 여전히 필수지만, 과거에는 현업에서 익혔던 소프트웨어 공학 역량을 이제 교육 초반에 더 많이 배치해야 함
      LLM의 등장이 15년쯤 늦었어도 괜찮았겠다는 생각은 듦
  • Le Corbusier와 Frank Lloyd Wright는 건물을 직접 짓지 않고 설계했지만 그 건물은 의심 없이 그들의 작품으로 인정됨
    Steve Jobs도 회로 기판을 설계하거나 코딩하지 않았지만 Mac, iPod, iPhone을 만들었고, 르네상스 화가들도 도제들이 작업하는 공방을 운영했음
    소프트웨어 창작은 코드 작성 이상으로 시장과 필요를 이해하고, 마케팅과 문구를 만들며, 무엇을 만들고 버릴지 정하고 최종 형태를 구상하는 일임
    Wright의 집을 지은 장인들은 지붕·벽·폭포를 자신이 만들었다고 자랑할 수 있지만 집 전체는 분명 Wright의 것임
    지금의 탄식은 정당한 기술 독점 상실의 두려움에 가까움
    수제 가구가 IKEA로 대체된 뒤 숙련 목공예가들이 고급 시장에 집중한 것처럼 변할 수 있지만, 프로그래밍 고객은 주로 기업이고 합격 기준이 “작동하는가”라는 이분법이라는 차이가 있음