vibe coding은 유지보수 불가능한 코드로 퇴화한다, 저자는 기업의 'NO-AI' 정책이 경쟁 우위가 될 것이라 예측
- 코드 유지보수성과 좋은 아키텍처는 측정 지표가 없고, 나쁜 설계의 효과는 몇 달에서 몇 년 뒤에나 드러나서 vibe coding 프로젝트가 통제 불가능한 상태로 퇴화함
- AI는 유지보수성이 무엇인지 학습된 적이 없음. 강화학습은 즉시 측정 가능한 보상 신호를 요구하는데 유지보수성에는 그런 함수가 없고, 학습 대상인 세상의 대부분 코드는 품질이 낮음
- SOTA 모델조차 함수 분리를 못 함. 큰 함수를 이해하려면 추출된 작은 함수 구현까지 읽어야 하는 식으로 쪼개고, 재사용 가능하고 의미를 분명히 하는 함수를 정의하는 일은 숙련이 필요한 예술임
- AI에 코드 쓰기와 읽기를 맡기는 개발자는 선택도 책임도 없어 숙련에 도달하지 못함. 실수는 AI가 저지르고 AI도 사람도 그 실수에서 배우지 않음
- 저자의 예측은 앞으로 기업이 "NO-AI" 정책을 경쟁 우위로 내세운다는 것. 소프트웨어 업계는 이미 규모의 자동화를 해왔고 LLM이 유일한 수단이 아니라는 반박도 함께 제시함
Hacker News opinions
인간이 쓴 코드도 똑같음. 다만 속도가 느려서 실수를 늦게 깨달을 뿐임. 패턴만 잡아주면 AI가 인간 팀보다 규칙을 더 잘 지킬 수도 있는데, 문제는 팀에서 제일 잘하는 엔지니어가 시간을 쪼개서 코어 패턴과 참고 문서를 만들어야 한다는 거임.
차이는 인간은 실패에서 배운다는 점임. LLM은 진짜로 학습하지 않아서 학습 컷오프 시점의 평균적인 코드, 아니면 다른 LLM이 만든 코드를 따라감.
인간 코드의 상한선이 더 높다는 게 저자 요점임. 대부분 코드베이스는 엉망이지만 안 그런 것도 있고, AI는 그 전부를 학습했으니 품질 기준이 평균 수준임. 모든 줄과 설계 결정을 리뷰할 거면 손으로 쓰는 속도랑 비슷해짐.
내 경험상 인간이 못 짠 코드는 과하게 복잡한 경우가 드문데 AI 코드는 거의 항상 과하게 복잡함. 진짜 문제는 복잡성이 버그를 덮어서, 에러가 나야 할 자리에서 몇 겹 아래 코드가 잘못된 값을 반환하는 것임.
속도가 느리면 반성할 시간이 있어서 실수를 일찍 알아채고 유지보수가 힘들어지는 시점에 방향을 고칠 수 있음. 다 엉망이 된 다음에 깨닫는 것과는 다름.
code rot은 AI만의 문제가 아님. Flash Player나 베데스다 엔진도 AI 이전에 이미 썩어 있었음. 값싼 개발자 고용, 높은 이직률, 외주, 무조건 출시가 원인이었고 AI는 거기 도달하는 속도만 빠르게 해줌.
인간은 코드가 왜 그렇게 짠 건지 기억이라도 하는데 LLM은 장기 기억이 없음. 1M 컨텍스트도 로컬 버그만 찾지 시스템 차원의 문제는 못 봄.
몇 년 된 기술에 시점 비판을 하는 것뿐임. 계속 개선되고 있음.
지금은 거의 정체된 듯. 컨텍스트 크기도 256k에서 1M으로 늘고 거기서 멈췄음.
새 모델이 나중에 싹 정리해줄 거라는 말을 자주 듣는데, 기술 부채를 갚으려면 만드는 것보다 좋은 모델이 필요함. 모델 개선이 멈추면 부채만 쌓임.
AI는 유지보수 가능한 소프트웨어를 잘 만듦. 계속 요구하고 첫 시도를 받아들이지 않고 피어리뷰를 걸면 됨. 인간 개발자랑 별로 다르지 않음.
너무 doom and gloom임. AI 쓰면서 자기 감각을 키우면 되는 건데. 매크로나 인스톨러를 탓하는 거랑 같음.
이미 대가가 왔음. 화면 속 이미지와 단어로 세상을 만들고 그걸 비추는 기계를 만들었는데, 우리 대부분이 그 둘을 구분하지 못함. 기계 속 유령은 우리 자신이고 그 유령은 빠르게 사라지고 있음.
이런 얘기는 이미 지겹도록 나왔고 새로움이 없음. 정작 설득해야 할 사람은 합리화로 현실을 방어하니 효과가 없음. 그래도 그 분노 자체는 공감됨.