- 생성형 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임