제가 속한 개발팀은 최근 코딩을 돕기 위해 AI 도구를 도입했고, 몇 달 동안 Claude가 역대 최고의 도구라고 생각했지만, 저는 이것이 중요한 프로덕션 코드에는 유용하지 않다는 의견으로 돌아왔습니다.
제 주장은 기본적으로 이렇습니다. 아니면 모든 것을 '느낌대로' 코딩하는 것에 만족하거나 (그 경우 Claude는 모든 면에서 압도적입니다); 아니면 인간 수준의 품질 기준을 원한다면, Claude가 너무 많이 틀려서 직접 작성하는 것이 더 빠르다는 것입니다.
물론, 작업이 중요하지 않거나 단순히 결과만 원할 때, 또는 작업물이 매우 사람이 읽기 쉬울 필요가 없다면 Claude는 놀랍습니다. 그렇지 않다면, 고통을 감수해야 합니다...
제 팀은 생물정보학 소프트웨어를 개발하는데, 여기서 정확성(correctness), 가독성(readability), 일관성(consistency)이 가장 중요합니다. 저희의 주요 코드베이스는 개발자들이 잘 이해할 수 있어야 하며, 그렇지 않으면 사람들의 안녕에 실제적인 영향을 미칠 것입니다. 그리고 진심으로 노력하고, 계획을 세우고, 가이드라인 문서와 기술을 동원했음에도 불구하고, Claude는 이 기준들을 일관되게 충족하는 코드를 생성할 수 없습니다. 기본 수준이 너무 낮아서 차라리 제가 직접 작성하는 것이 나을 정도입니다.
제가 매일 Claude에게 수정해야 하는 것들의 예시:
- 설계 및 추상화(Design and abstractions). 모든 추상화 레벨에서 Claude는 인간처럼 설계하지 못하며, 정상적인 설계를 할 수 없기 때문에 지속적인 감시가 필요합니다. 심지어 하나의 함수의 시그니처 같은 낮은 레벨에서도 일관되게 제대로 처리할 수 없습니다.
- 명명 규칙(Naming). 이름에 필요한 정보 수준을 담고 있지 않은 경우가 많습니다. 그리고 표준 용어를 사용하기를 거부하고 이상한 전문 용어를 만들어내는 경향이 있습니다.
- 주석 및 문서화(Comments and docs). 정보 수준이 결코 정확하지 않으며, 작성 스타일도 끔찍합니다. 제가 전부 삭제하고 다시 작성해야 합니다.
- 오류 처리(Error handling). 종종 오류를 무시하거나 조용히 실패하는 코드를 작성합니다. 이것을 하지 않도록 하려면 엄청난 양의 프롬프팅이 필요합니다. 더 나쁜 점은 예측 불가능하다는 것입니다.
- 알고리즘 비효율성(Algorithmic inefficiency). 효율성과 성능에 대한 기본 주의력이 낮습니다.
Claude는 이상한 코드 흐름을 생성하여 같은 내용을 여러 번 재계산하며, 저는 그 코드를 이해하고 수정하는 데 시간을 낭비해야 합니다.
해결책을 대충 처리합니다. Claude가 가장 좋아하는 방식은 모든 것을 임시방편으로 고치는 것입니다. 진정으로 최적의 해결책을 찾기 위해 상황을 되돌아보고 재평가하라고 지속적으로 프롬프트 해야 합니다.
모든 것의 장황함(Verbosity). 이 점에 대해서는 우리 모두 알고 있습니다.
이제 사람들이 무슨 말을 할지 압니다! 저장소(repo)를 초기화하고, 계획 기능을 사용하고, 프롬프트를 구체적으로 작성하며, 스킬을 생성해야 한다고 말할 것입니다. 그리고 저는 그것이 성능을 향상시킨다고 말하겠습니다. 하지만 근본적인 문제가 해결된다고는 생각하지 않습니다. 왜냐하면 시작점이 너무 형편없고 수정 사항들이 일관성 있게 작동하지 않기 때문입니다:
만약 제가 변수 이름 지정과 같은 아주 세부적인 수준까지 계획해야 한다면, 직접 작성하는 것이 더 빠릅니다.
Claude는 너무 많은 시나리오에서 자주 틀려서, 고쳐야 할 것들로 이루어진 점점 커지는 잡동사니(patchwork)를 만듭니다. 어느 순간에는 너무 많고 비효율적이어서, 더 나은 기준선(baseline)이 해결책입니다.
Claude는 규칙을 일관성 있게 적용하지 못하고 지침 따르기를 금방 멈춥니다. 저는 높은 수준의 방법론부터 명시적인 행동까지 CLAUDE.md 파일에 지침을 작성하지만, Claude는 몇 번의 메시지 후에 기꺼이 그것을 잊어버립니다. 이 불일치성을 다루기가 정말 어렵습니다.
솔직히 말해서, 제가 Claude에게 가르쳐야 하는 것들에 대해서는 원하지 않습니다. null을 전달하는 대신 쓰레기 값(garbage values)을 전달하는 같은 기초적인 내용에 대해 매번 Claude를 교육하고 싶지 않습니다. 그 인지적 노력(cognitive effort)은 가치가 없습니다.
대부분의 경우, 저는 이 과정이 좌절스럽고 비효율적이며 결과 코드는 더 나쁘다고 느낍니다.
요약하자면, 저는 Claude의 유용성이 불행하게도 매우 양극화되어 있다고 생각합니다. 코드가 중요할수록 Claude는 저에게 덜 유용해졌으며, 이는 제가 이 도구에 기대하는 것과 정반대입니다.
엄청난 잠재력을 가지고 있음에도 불구하고 만연한 사소한 문제들로 인해 무력화된 제품을 보는 것은 안타깝습니다.
(참고로, 저는 Opus 4.8 버전을 사용해 왔습니다.)
Opus 5를 시도해봤는데 더 나쁘다는 것을 알았습니다.)
제출자: /u/adacomb
[링크] [댓글]