거대 코드베이스, 완벽 이해는 필수일까?

by DD
17시간 전
조회수 0

대규모 코드베이스에서는 부분적 이해만으로도 충분히 작업 가능하다는 주장임

Peter Naur의 '프로그래밍은 이론 구축' 관점에 반박하며, 코드베이스 재구축의 현실적 어려움을 지적함

LLM은 이론 구축을 방해하지만, 부분적 이론을 빠르게 구축하고 활용하는 데 도움을 줄 수 있음

코드베이스 이론 유지는 여러 가치 중 하나이며, 때로는 속도나 규정 준수를 위해 희생될 수 있음

Peter Naur의 '이론 구축' 관점의 한계

커뮤니티에서는 Peter Naur의 '프로그래밍은 이론 구축' 관점이 현대의 수천만 라인 코드베이스 현실과 맞지 않다고 지적합니다. 특히 수천 개의 엣지 케이스(Edge Cases)를 가진 대규모 시스템은 처음부터 재구축하는 것이 불가능하며, 점진적 개선이 유일한 현실적 대안임을 강조합니다. 이는 기존 코드베이스의 점진적 마이그레이션(Incremental Migration)이 성공적인 재작성의 핵심임을 시사합니다.

부분적 이해와 LLM의 역할

글에서는 LLM이 코드베이스에 대한 상세한 정신적 이론 구축을 어렵게 만들지만, 부분적 이론을 빠르게 구축하고 이를 효과적으로 활용하는 데 도움을 줄 수 있다고 분석합니다. 이는 LLM이 코드 이해의 보조 도구로서 기능할 수 있음을 시사하며, 이론 구축과 도구 활용 간의 복잡한 트레이드오프(Complex Trade-off)를 보여줍니다.

코드베이스 이론 유지의 상대적 가치

논의에서는 코드베이스에 대한 정확한 정신 모델 유지가 개발자에게 더 즐겁고 스트레스가 적을 수 있지만, 이는 여러 엔지니어링 가치 중 하나일 뿐이라고 강조합니다. 프로젝트 완료 시간, 법적 규정 준수(Legal Compliance), 보안 패치 적용 등 다른 가치를 위해 이론 구축이 희생될 수 있음을 지적하며, 이는 순수 공학(Pure Engineering) 문화와 부분적 이해 문화 간의 충돌을 보여주는 사례입니다.

현대 개발 환경에서의 코드베이스 이해

현대 개발 환경에서는 지속적인 배포(Continuous Delivery)서비스 가용성(Service Availability) 요구로 인해 코드베이스의 완전한 이해가 더욱 어려워졌습니다. 개발자는 지역적 추론(Local Reasoning) 능력과 공유된 관용구(Shared Idioms), 기계적 도구(Mechanized Tooling)에 의존하게 됩니다. 이는 OCaml 기반 JavaScript 타입 체커와 같은 복잡한 시스템에서도 코드 읽기 및 디버깅을 통해 문제 해결이 가능함을 보여줍니다.

In defense of not understanding your codebase