코드 2,800줄을 명세 160줄로 — CanonCode로 실제 프로젝트를 변환해본 결과
코드가 커질수록 “이 기능이 왜 이렇게 동작하지?“를 알려면 파일 5개를 열어봐야 한다. 설계 문서는 3개월 전에 작성된 채로 방치되어 있고, 실제 코드와 일치하는지 아무도 모른다. 만약 설계 문서 자체가 실행 가능하고, 코드 대신 그 문서를 유지보수한다면? CanonCode라는 사이드 프로젝트에서 이 아이디어를 실험해봤다. 아이디어: 법률 체계로 소프트웨어를 거버넌스한다 법률 시스템에서 영감을 받았다: 법률 소프트웨어 헌법 프로젝트 원칙 (모바일 퍼스트, 오프라인 지원 등) 법률(Acts) 기능 아키텍처 (QA 공고 생성, 결제 플로우) 규칙(Rules) 상호작용 로직 (유효성 검사, 상태 전환) 부칙(Appendices) 데이터 스키마, API 명세 판례(Case Law) 예외 처리 (잔액 부족, 동시 결제 충돌) 하위 법률은 상위 법률과 모순될 수 없다. CanonCode의 린터가 자동으로 위반을 감지한다. ...