AI 코드와 소프트웨어 장인정신
(alexwennerberg.com)- AI가 생성한 저품질 콘텐츠인 '슬롭(slop)' 이 인터넷 전반에 확산되면서, 음악·영상·텍스트뿐 아니라 소프트웨어 영역에서도 유사한 현상이 나타나고 있음
- 콘텐츠 생산이 참여도와 수익 극대화만을 목표로 최적화에 집중하며, 장인 정신이나 창의성은 사라지는 추세
- 대형 기술기업의 품질 저하와 기술 퇴화는 AI의 등장 이전부터 진행되어 왔으며, 좁은 역할 분업이 엔지니어의 숙련과 사고력을 약화시킴
- AI 에이전트는 잘 정의된 반복 작업에는 유용하지만, 거짓말을 하고 코드를 제대로 이해하지 못하며 나쁜 코드를 생성하는 근본적 한계가 존재함
- 19세기 Arts and Crafts 운동처럼 소프트웨어에서도 초기 컴퓨팅의 아이디어를 복원하고 인간 중심의 장인 정신을 되살려야 할 시점임
AI 슬롭의 확산과 기술(technique) 개념
- AI 모델 공개 이후 오디오·비디오·텍스트 전반에서 ‘slop’이라 불리는 저품질 AI 콘텐츠가 급증
- 쓰레기 콘텐츠는 늘 존재했지만, AI로 인해 생성에 필요한 노동이 수십 배 이상 감소
- 분별력이 없거나 분별이 중요하지 않은 작업에서는 AI가 인간의 손을 대체하기에 충분한 수준 도달
- Jacques Ellul의 'technique' 개념: 활동을 측정 가능하고 정의된 목표를 향한 효율적 수단의 집합으로 환원하는 사고방식
- Instagram 릴스, YouTube 영상, 블로그 포스트는 최소 노력으로 최대 참여를 끌어내면 ‘좋은’ 결과물로 간주
- 지표와 성과에 대한 집착이 장인정신, 아름다움, 즐거움 같은 무형의 가치를 잠식함
음악 플랫폼 비교: Bandcamp vs Spotify
-
Bandcamp: 전체 앨범 중심과 개인 큐레이션에 집중
- 2010~2020년대 인디 음악 붐을 뒷받침하며 Car Seat Headrest, Mitski, Alex G, Phoebe Bridgers 등 아티스트 부상
- 음악 자체를 목표로 삼는 플랫폼으로서 AI 생성 음악을 금지
-
Spotify: 플레이리스트와 알고리듬 추천에 기반한 모델
- 음악 그 자체보다 지표 최적화에 초점
- 밋밋하고 알고리듬에 맞춰진 뮤직(muzak) 확산
- 장인정신이 고려되지 않는 환경에서 AI는 인간이 만든 음악보다 '수익 극대화' 측면에서 훨씬 유리한 콘텐츠를 대량 생산함
소프트웨어 업계의 품질 저하 현상
- AI 등장 이전부터 이미 많은 소프트웨어가 전반적으로 낮은 품질 상태에 놓여 있었음
- 대형 기술 기업의 소프트웨어 엔지니어링은 ‘배관 작업(plumbing)’ 에 가깝게 변질
- 여러 시스템을 연결해 데이터가 흐르게 만드는 역할에 그침
- Richard Hamming이 말한 ‘위대한 작업’, 즉 인류에 대한 선물을 만든다는 개념은 오늘날 기술 산업에서는 지나치게 이상적으로 받아들여짐
- 다수의 대형 소프트웨어 시스템이 비대하고, 설계가 조악하며, 문서화가 부족한 상태
- 사용자는 플랫폼이 점점 악화되는 ‘enshittification(품질 저하화)’ 과정에서 이용당하지 않기 위해 끊임없이 방어적 태세에 놓임
- Jonathan Blow의 강연 소프트웨어 문명의 붕괴 방지 에서 제시된 관점에 공감
- 전문 엔지니어와 대형 소프트웨어 기업이 일을 제대로 수행하는 방법 자체를 잊어버린 상태
-
비경쟁적 독점 구조로 인해 시장 압력에서 보호받으며
- 소프트웨어 관행은 느슨해지고
- 조직은 비대해지며
- 전반적인 품질은 크게 저하
- 빅테크 엔지니어는 대규모 조직 안에서 극히 제한된 역할만 수행
- 폭넓은 엔지니어링 역량과 장인정신이 자연스럽게 쇠퇴
인적 자본과 분업의 문제
- 기업이나 사회가 컴퓨터로 무엇을 해낼 수 있는지는 인적 자본, 즉 폭넓은 기술을 갖춘 엔지니어를 얼마나 길러내는가에 달려 있음
- 대형 기술 기업의 극단적인 분업 구조는
- 특정 영역에만 익숙한 협소한 기술 인력을 양산
- 현재의 빅테크 조직 구조 안에서만 기능할 수 있는 인력으로 고착
AI가 소프트웨어 엔지니어링에 위협이 된다는 두 가지 현상이 나타남
- 1. AI 에이전트가 전문 소프트웨어 엔지니어링을 위협한다는 현실적 인식
- 역할이 반복적이고 범위가 좁은 저품질 소프트웨어 생산으로 축소된 엔지니어에게
- AI는 실제로 상당히 효과적인 대체재로 작동
- 2. AI 에이전트의 능력에 대한 과도한 일반화
- AI가 소프트웨어 엔지니어링의 ‘대부분, 어쩌면 전부’ 를 수행할 수 있다는 주장
- 인간 언어를 코드로 바꾸는 컴파일러와 같다 는 비유
AI 에이전트의 근본적 한계
- 위와 같은 주장이 성립하려면 소프트웨어가 무엇인지에 대한 극도로 편협한 관점이 전제됨
- AI 생성 음악이 음악을 단순히 소비 지표로만 바라보는 시각을 요구하는 것과 동일
- 소프트웨어를 목적 달성을 위한 도구로만 보고, “충분히 좋으면 된다” 는 태도
- AI 에이전트를 직접 실험해본 결과, 분명히 유용한 면은 있으나 뚜렷한 한계가 존재
- 사실이 아닌 내용을 그럴듯하게 말하고, 맥락을 제대로 이해하지 못하며, 품질이 낮은 코드를 자주 생성
- 일부 영역에서는 개선이 이어질 수 있으나, 음악이나 텍스트와 마찬가지로 구조적인 한계가 분명함
- AI 에이전트는 자율적인 사고를 갖지 않으며, 사용자가 무엇을 원하는지 스스로 파악하지 못함
- 가장 잘 작동하는 경우는 문제가 명확하게 정의된 요청일 때
- 예: “유닛 테스트 작성”, “이 형태의 DB 함수 구현”
- 능력을 일반화하려는 시도는 대체로 실패
- 새롭기는 하지만 유지·이해·확장이 어려운 괴물 같은 코드를 만들어내는 경우가 많음
“바이브 코딩(Vibe Coding)”의 문제점
- 초기에는 인상적으로 보이지만, 시간이 지나며 고유한 결함이 두드러짐
- 불필요하게 장황한 코드와 무성의한 스타일
- 구조는 단순하지만 평면적이고 미적으로 빈약한 디자인
- 반복적으로 드러나는 특유의 흔적이 점점 거슬리게 느껴짐
- 문제가 발생하면 디버깅 과정이 좌절을 낳는 반복 작업으로 변함
- 다른 영상을 보거나 SNS를 넘기며 무심코 코딩하다가
- “버그가 있다, 다시 고쳐달라”는 요청을 에이전트에 계속 반복
- AI 생성 코드에서 자주 보이는 특징
- 과도하게 패딩된 버튼
- 일관성 없는 간격과 색상
- 전반적인 미적 평면성
- 존재 이유가 불분명한 UI 요소
- 모든 요소에 불필요한 레이블과 설명을 덧붙이는 경향
소프트웨어 산업의 체계적 문제와 장인 정신의 필요성
- 대부분의 코드가 그다지 좋지 않다는 점은 부인하기 어렵고, 특히 대기업 환경에서 두드러짐
- AI를 활용하면 품질이 낮은 소프트웨어를 더 빠르고 더 효율적으로 계속 생산할 수 있음
- 그러나 AI는 소프트웨어 산업이 안고 있는 핵심적인 체계 문제를 해결하지 못함
- 근본 문제는 대규모 환경에서 소프트웨어를 잘 만드는 방법 자체가 아직 정립되지 않았다는 점
- 이 문제를 풀기 위해서는 자동화가 아니라 장인 정신과 인간의 비판적 사고가 요구됨
Arts and Crafts 운동과 소프트웨어의 유사성
- 제2차 산업혁명 시기의 Arts and Crafts 운동에 주목
-
John Ruskin과 William Morris는 기계와 산업 생산의 놀라운 능력이 개인 장인을 밀어내던 시대에 대응
- 산업 생산을 무조건 진보로 보지 않고, 그것이 만들어내는 결과물과 노동 조건에 고유한 ‘스타일’ 이 존재한다고 인식
- 노동자가 점점 거대한 산업 기계의 부속품으로 전락하고 있음을 비판
- 기계가 할 수 없는 영역이 분명히 존재하며, 그것은 당시에도 지금도 변하지 않았다고 지적
- 영감의 원천으로 중세 장인 정신의 회복을 지향
소프트웨어에서 요구되는 유사한 전환
- 소프트웨어 분야에서도 비슷한 전환과 운동이 필요
- 초기 컴퓨팅 방식과 사유를 다시 연구하고 복원할 필요
- 주류에서 외면받았지만 사라지지 않은 아이디어들의 풍부한 보물창고가 존재
- 오늘날의 소프트웨어와는 다른 방식으로 인상적이고 아름다웠던 프로젝트들
- 현재는 기술 발전의 매우 좁은 가지, 즉 C/Unix에서 Javascript/웹으로 이어진 경로 위에 머물러 있음
- 그 밖에도 탐색할 영역은 훨씬 넓음
- 조금만 비전통적인 방향으로 나아가도 AI의 도움은 거의 사라짐
- Claude에게 Forth 작성을 시도했으나 방해에 가까운 결과를 경험
- 출발점으로 Permacomputing 위키를 추천
AI 코드 시대의 전망
- AI 코드는 저품질 대량 생산 소프트웨어를 더욱 흔하게 만들 가능성이 있음
- 동시에 장인 정신과 창의적 표현을 회복하려는 엔지니어에게는 새로운 공간을 열어줄 수도 있음
- 비관적이지는 않음: 장인 정신은 희소해질수록 그 자체로 더 큰 가치를 갖게 됨
- 주류 소프트웨어가 한계를 드러내고, 소프트웨어 품질 저하가 이어지며, 정치적 문제의식으로 중앙집중 구조의 가치가 재검토되는 시점
- 실험적이고, 인간이 만들고, 인간 규모로 운영되는 소프트웨어가 주변부에서 빛날 좋은 순간임
Hacker News 의견들
-
Jacques Ellul의 사상을 언급한 부분이 마음에 듦
기술적 ‘진보’의 본질은 효율성을 최고의 가치로 승격시키는 데 있다는 점을 다시 생각하게 됨
이 가치가 거의 도전받지 않은 채 받아들여진 것이 흥미로움. 하지만 여전히 다른 선택이 가능하다고 믿음- 효율성은 주주 수익을 극대화하는 최선의 방법조차 아님
효율성은 본질적으로 적응력과 회복력을 희생시키는 특성이 있음 - 효율성은 측정하기 쉬움. 그리고 측정 가능한 것이 곧 목표가 되어버림
반면 장인정신, 세심함, 경이로움은 측정하기 어려움. 내가 쓰는 지표는 실제 사람들의 이메일인데, 이는 불규칙하고 예측 불가함
- 효율성은 주주 수익을 극대화하는 최선의 방법조차 아님
-
코딩 에이전트를 통해서도 고품질 코드를 만들 수 있다고 생각함
한 번의 프롬프트로 끝나는 게 아니라, 계획–구현–검증–리뷰의 조율된 과정이 필요함
결국 여전히 엔지니어링 작업이며, 도구만 달라진 것임. 수동 톱과 전기톱의 차이처럼 결과는 같지만 과정이 다름- 현실적으로 LLM이 만든 코드는 수작업 코드와 거의 같지 않음. 품질이 몇 배로 떨어짐
- 때로는 그냥 내가 직접 쓰는 게 더 빠름
- 직접 그런 과정을 경험했는지, 참고할 만한 리소스가 있는지 궁금함
- 실제 한계는 지연 시간과 추론 비용임. 전체 계획–검증 루프는 토큰을 많이 소모하고 흐름을 끊음
- “고품질 코드”가 구체적으로 어떤 모습인지, 그리고 “코드가 중요하다”는 말의 의미가 궁금함
-
엔터프라이즈 소프트웨어는 특히 사용하지 않는 관리자에게 팔리기 때문에 품질이 나쁨
반면 소비자용 소프트웨어는 사용자가 직접 선택하므로 더 친절함
자기 자신을 위해 코드를 쓸 때는 필요한 기능만 구현하므로 엉성하지만 잘 작동함
코딩 에이전트는 프로젝트를 세척하는 고압 세척기처럼 쓸 수 있음. 예술은 아니지만 만족스러움
다만 섬세한 코드에는 쓰면 안 됨. 하지만 대부분의 웹앱은 테스트가 잘 되어 있고, 이제는 수작업으로 할 이유가 거의 없음- 엔터프라이즈 소프트웨어가 나쁜 또 다른 이유는 고객이 각자 요구를 밀어붙이기 때문임
그 결과 불필요한 기능과 토글이 넘쳐남 - 관리자와 직원의 목표가 다름
관리자는 데이터 정확성을 원하지만, 직원은 입력이 귀찮다고 불평함
통합 예산이 없거나 단기 계약이라 CRM 연동도 못 하는 경우가 많음 - 소비자용 소프트웨어는 종종 참여 극대화에 최적화되어 실제 가치나 기능성이 떨어짐
반면 엔터프라이즈 소프트웨어는 지불자와 사용자의 인센티브 불일치 때문에 이상한 워크플로로 왜곡됨
- 엔터프라이즈 소프트웨어가 나쁜 또 다른 이유는 고객이 각자 요구를 밀어붙이기 때문임
-
대부분의 소프트웨어 엔지니어는 AI 이전에도 장인정신보다는 급여와 효율에 집중했음
그래서 AI가 만들어내는 코드도 그저 그런 코드일 뿐임 -
AI가 장인정신을 되살리는 게 아니라, 오히려 마지막 흔적을 없앨 것이라는 생각임
- 새로운 기술은 기존 기술이나 장인정신을 없애지 않음. 단지 사용자와 용도를 바꿀 뿐임
전동 공구가 수공예 목공을 없애지 않았듯, AI도 그럴 것임
미래에는 “IDE 사람들”과 “에이전트 프롬프트 사람들”이 공존할 것임 - “장인정신이 이미 사라지고 있다”는 전제 자체가 과도한 비관론임
- 새로운 기술은 기존 기술이나 장인정신을 없애지 않음. 단지 사용자와 용도를 바꿀 뿐임
-
Forth 언급이 반가움. 자주 사용함
LLM이 생성한 Forth 코드는 C를 번역한 듯한 나쁜 스타일임
표준 Forth는 짧고 명확해야 하지만, LLM은 중첩된 조건문으로 가득 찬 긴 코드를 만듦 -
요즘 Turing’s Cathedral을 읽고 있음
전후 미국의 공학적 장인정신을 새삼 깨닫게 됨
지금은 모든 걸 당연하게 여기며 진짜 엔지니어링이 어떤 것이었는지 잊은 듯함 -
대부분의 코드가 원래 형편없었음
결과 중심 문화 속에서 품질은 뒷전이 되었고, 버그는 사업 비용의 일부가 되었음
AI는 이런 환경에 완벽히 들어맞음. 이미 낮은 수준의 코드 문화 속에서 번성하고 있음- 이는 오프쇼어링의 다음 단계임. 기업은 장인정신보다 문제 해결만 원함
- 나 역시 에이전트를 거부하는 입장이지만, “모든 코드가 형편없다”는 업계 분위기가 싫음
-
AI를 활용해 더 나은 소프트웨어를 만들 수 있다고 생각함
AI가 생성한 코드에도 디자인, 패턴, 베스트 프랙티스를 반영할 수 있음
이는 전통적인 기타 제작과 현대적 CNC 기반 기타 제작의 차이와 비슷함
Ulrich Teuffel의 기타 제작 영상을 보면 기술과 예술이 공존함
물론 장인정신은 비싸기 때문에 대부분은 산업 생산품을 선택함- 하지만 CNC는 사람이 직접 프로그래밍하지만, LLM은 확률적 도구임
대규모 프로젝트에 적용 중이지만, 장기적 결과는 아직 미지수임 - 나는 목재와 금속 퍼즐 장인으로, LLM을 설계 보조 도구로 씀
예전엔 직접 작성하던 알고리즘을 이제는 에이전트에게 맡김
수동 밀링 대신 CNC를 쓰듯, 기술 스택을 발전시켜 더 높은 품질의 작품을 만듦 - 글의 논리가 도구 선택과 제품 품질을 혼동함
AI로 나쁜 소프트웨어를 싸게 만들 수 있다면 괜찮음
중요한 건 좋은 소프트웨어의 비율이 늘어나는가임. AI는 그 가능성을 높임
- 하지만 CNC는 사람이 직접 프로그래밍하지만, LLM은 확률적 도구임
-
AI는 소프트웨어를 ‘충분히 괜찮은’ 수준으로 최적화하는 환경에서 번성함
훌륭한 엔지니어를 대체하기보다, 이미 기계적이고 지표 중심적인 산업 현실을 드러내고 있음
대량 생산된 코드가 흔해질수록, 인간의 판단력과 미적 감각이 진짜 희소 자원이 될 것임