10여 년 전 SQLite의 유지보수자가 OSCON에서 테스트 관행에 대해 발표했음
특히 인상 깊었던 건 체크리스트(checklist) 의 힘이었음. 비행 전마다 파일럿이 사용하는 바로 그 도구임
그는 또한 국경없는의사회(Doctors Without Borders) 사례를 언급했는데, 의료진이 서로 이름도 모르고 언어도 달라서 수술 성과가 낮았다고 함
해결책은 간단했음 — 수술 전 체크리스트를 만들어 각자 이름과 역할을 말하게 한 것임. 이 작은 의식이 기술이 아닌 소통 개선을 통해 생존율을 높였다고 함
관련 자료: SQLite checklist 예시
반면 이런 이야기가 불필요한 관료주의를 낳는다고 생각함. 항공, MSF, SQLite의 체크리스트는 훌륭하지만, 대부분의 조직은 쓸모없는 체크리스트로 시간을 낭비함
좋은 체크리스트와 나쁜 체크리스트의 차이에 대한 논의가 더 필요함. 수학의 아름다운 공식처럼 단순해 보이지만 발견하기는 어려운 것 같음
항공 운영과 공학에서 배울 점이 많다고 느껴왔음. 이런 원칙을 군대식 리더십과 결합한 IT 조직을 상상해봄
특히 미 육군의 FM22-100 문서를 여러 번 읽었는데, 놀라울 만큼 현대적이고 영감을 줌 FM22-100 문서 보기
좋은 체크리스트를 만드는 방법을 알고 싶다면 The Checklist Manifesto를 강력히 추천함 책 링크
대부분의 개발자들이 비프로그래밍적 단순한 일을 회피하려는 게 이해되지 않음
나는 테스트와 CI 외에도 Markdown으로 된 배포 체크리스트를 따라감. 결과를 저장하지도 않지만, 단계별로 수행함
이렇게 간단한 일을 왜 다른 사람들은 안 하는지 모르겠음
의식이 성과를 높인다는 점이 흥미로움. 요즘 회의에서도 참가자 소개 라운드를 하면 참여도가 확실히 높아짐
MSF 사례를 다룬 공식 페이지가 있다면 꼭 보고 싶음. 구글링으로는 찾지 못했음
Hacker News 의견들
10여 년 전 SQLite의 유지보수자가 OSCON에서 테스트 관행에 대해 발표했음
특히 인상 깊었던 건 체크리스트(checklist) 의 힘이었음. 비행 전마다 파일럿이 사용하는 바로 그 도구임
그는 또한 국경없는의사회(Doctors Without Borders) 사례를 언급했는데, 의료진이 서로 이름도 모르고 언어도 달라서 수술 성과가 낮았다고 함
해결책은 간단했음 — 수술 전 체크리스트를 만들어 각자 이름과 역할을 말하게 한 것임. 이 작은 의식이 기술이 아닌 소통 개선을 통해 생존율을 높였다고 함
관련 자료: SQLite checklist 예시
좋은 체크리스트와 나쁜 체크리스트의 차이에 대한 논의가 더 필요함. 수학의 아름다운 공식처럼 단순해 보이지만 발견하기는 어려운 것 같음
특히 미 육군의 FM22-100 문서를 여러 번 읽었는데, 놀라울 만큼 현대적이고 영감을 줌
FM22-100 문서 보기
책 링크
나는 테스트와 CI 외에도 Markdown으로 된 배포 체크리스트를 따라감. 결과를 저장하지도 않지만, 단계별로 수행함
이렇게 간단한 일을 왜 다른 사람들은 안 하는지 모르겠음
MSF 사례를 다룬 공식 페이지가 있다면 꼭 보고 싶음. 구글링으로는 찾지 못했음
SQLite의 테스트 관련 과거 토론들을 모아둠
2009~2024년 HN 스레드 목록
재게시가 1년 간격으로 반복되는 듯함
SQLite 같은 소프트웨어를 완벽하게 다듬는 과정이 부럽고 경이로움
장인정신이 느껴지는 작품임
시간이 지나면 품질 기준이 높아지고, 같은 노력으로 더 큰 보상을 얻게 됨
자신이 손댄 부분을 조금이라도 더 깨끗하게 남기는 사람을 싫어하는 이는 없음
SQLite는 정말 훌륭한 소프트웨어임. 공식 웹사이트도 마케팅 대신 정보 중심이라 좋음
다만 최근 HN에 공식 사이트의 페이지들이 하나씩 올라오는 게 흥미로움
이런 링크들을 모아두면 재밌을 것 같음
SQLite가 공개 소프트웨어이면서도 비공개 테스트를 사용한다는 점이 흥미로움
오픈소스 프로젝트가 폐쇄형 테스트를 갖는 게 가능하다는 걸 이제야 깨달음
이런 모델이 오픈코어(open-core) 와 비슷한 새로운 비즈니스 모델이 될 수도 있을 것 같음
예시: railgunlabs/unicorn 라이선스
SQLite의 100% 브랜치 커버리지는 프로젝트 자체만큼이나 인상적임
지속적으로 유지한다는 게 특히 대단함
테스트가 비공개라는 점이 흥미로움. LLM 기반 코딩이 발전하는 지금, 테스트가 구현보다 중요해지는 시대가 오고 있음
최근 simonw가 justHTML 엔진을 Python에서 JS로 거의 자동 변환한 사례를 보며 SQLite의 테스트 전략이 떠올랐음
최근 SQLite와 DuckDB 간 호환성을 고려하며 LLM과 논의했는데, 동시성 처리 측면에서는 SQLite가 더 낫다는 결론을 얻었음
SQLite의 테스트 문서에서 성능 회귀 테스트(performance regression) 에 대한 언급이 적은 게 의외였음
정확성도 중요하지만, 특정 쿼리 경로에서의 성능 저하는 치명적일 수 있음
혹시 이런 목표를 핵심 사명으로 삼는 프로젝트가 있는지 궁금함
SQLite의 안정성을 보면 이상(anomaly) 테스트가 어떻게 이루어졌는지 더 알고 싶었음
하지만 글에서는 거의 언급이 없었음. 그럼에도 불구하고 SQLite는 모든 기기에서 쓰이는 가장 견고한 소프트웨어 중 하나임