Series: 설계까지 다 거치고도, 실행해봐야 보였다
설계 문서와 계획서를 다 거쳐도, 실행해봐야만 보이는 버그들을 다룬 기록. 테스트가 구조적으로 못 잡는 레이스 컨디션, 병합 판단을 빼자 오히려 분할이 살아난 것, 레이스를 막는 대신 없애버린 선택, 죽어있던 Link & Enrich 기능, 되돌리기 버그가 세 겹으로 숨어 있던 것, 자정을 넘길 때만 걸리는 레이스, 그리고 분할 제안 카드의 가독성 버그 네 가지와 링크 재배정 시 별칭이 안 갱신되던 문제까지.
-
설계까지 다 거치고도, 실행해봐야 보였다 1편 — 테스트가 원천적으로 못 잡는 자리에 버그를 심어놓고 있었다
5편을 쓰고 나서 같은 스크린샷을 다시 보다가, 흐릿하게 렌더링되는 링크를 하나 더 발견했다. 원인을 찾아 고치고 태스크 리뷰까지 통과했는데, 최종 리뷰가 진짜 레이스 컨디션을 잡아냈다 — 그것도 테스트가 구조적으로 절대 재현할 수 없는 방식으로 숨어 있던 버그였다.
-
설계까지 다 거치고도, 실행해봐야 보였다 2편 — 병합을 빼자, 분할이 살아났다
요약만 하고 분할은 거의 안 되는 것 같다는 관찰에서 시작했다. 배치 크기를 의심했는데, 더 깊이 파보니 진짜 원인은 따로 있었다 — ingest가 한 번에 너무 많은 판단을 하고 있었다. 그리고 그 발견이 속도·비용 설계까지 이어졌다.
-
설계까지 다 거치고도, 실행해봐야 보였다 3편 — 레이스를 막을 방법이 아니라, 없앨 이유를 찾았다
청크를 병렬로 요청하는 설계까지만 해두고 미뤄뒀던 구현을 다시 열었다. 그런데 설계 문서와 계획서를 다 거치고도, 진짜 버그는 실행이 되어서야 보였다.
-
설계까지 다 거치고도, 실행해봐야 보였다 4편 — 없는 줄도 몰랐던 안전망을 찾아냈다
웨이브 병렬화를 배포한 뒤, 그 유명한 다니엘라 아모데이 예시가 여전히 쪼개지지 않았다. 원인을 찾다가 내 첫 실측 자체가 틀렸다는 걸 발견했고, 있는 줄 알았던 기능이 사실 없었다는 것도 알게 됐다.
-
설계까지 다 거치고도, 실행해봐야 보였다 5편 — 되돌리기 버튼 하나에, 버그가 세 겹으로 숨어 있었다
이미 실행된 태그 병합을 되돌리는 버튼을 만들었다. 내가 직접 브리프에 적어준 구현 방법에 버그가 있다는 걸 태스크 리뷰가 잡았고, 그 여파로 계획 문서가 낡아버린 걸 다음 단계를 준비하다가 스스로 알아챘다. 그리고 두 태스크가 전부 리뷰를 통과한 뒤에도, 전체를 다시 훑는 마지막 리뷰가 버그 두 개를 더 찾아냈다.
-
설계까지 다 거치고도, 실행해봐야 보였다 6편 — 자정을 넘긴 순간에만 걸리는 레이스였다
새 주 폴더에 막 만들어진 노트인데, 본문 링크는 지난주 폴더를 가리키고 있었다. 이슈에 적힌 원인 추정은 코드를 열어보니 틀렸고, 진짜 원인은 '지금이 몇 시인지'를 서로 다른 두 순간에 따로 계산하고 있었다는 것이었다. 고치면서 남겨둔 '다른 명령도 같은 문제가 있을까'라는 질문은, 며칠 뒤 다시 열어서 마저 확인하고 고쳤다.
-
경로는 고쳤는데, 화면엔 옛 이름이 남아 있었다
/refactor 제안 카드가 읽기 어렵다는 스크린샷을 받고 4가지를 한 번에 고쳤다. 그런데 그 UI로 실제 분할을 실행해보니, 완전히 다른 층위의 버그가 드러났다 — 링크의 경로는 새 타겟으로 정확히 재지정됐는데, 화면에 보이는 이름은 삭제된 옛 노트 제목 그대로였다.