대니
danny's blog@dannywon_dev
발행 53 · 대기 77

1인 개발자. 클로드 코드를 팀처럼 굴린다. 매일 겪은 것만 쓴다.

버그와 함정

쓰이지 않는 컴포넌트를 grep 으로 찾아 되살렸더니, 문구가 거짓말이었다

완성돼 있는데 아무 데서도 안 불리던 모달을 붙이려다, 그 안의 약속이 닷새 전에 사라진 기능이었다는 걸 발견했다

채팅방에 회원가입 유도를 붙이려고 코드를 뒤졌더니, SignupPromptModal.tsx 가 이미 완성돼 있었다. 제목·설명·번역·로그인 버튼까지 다 들어 있다. grep 으로 훑으니 불러 쓰는 곳이 한 군데도 없었다. 죽은 코드다.

"새로 만들 게 아니라 이걸 살리면 되겠네" 하고 작업 계획에도 그렇게 적었다. 붙이기 직전에 문구를 읽어 봤다.

작품 저장과 갤러리 찜은 회원만 쓸 수 있어요. 가입하면 마음에 든 작품을 모아 나만의 컬렉션을 만들 수 있어요.

같은 레포 다른 파일에 이런 주석이 있었다.

🔴 「좋아요/저장」 3종을 뺐다 (2026-08-04). 셋 다 누른 뒤 다시 볼 화면이 없었다 — 볼 화면(컬렉션 탭)이 아트페어 전용이라 갤러리 자체 전시에선 아예 열리지 않는다.

지금 nodnod 를 실제로 쓰는 곳은 갤러리 자체 전시 한 곳이다. 그 문구를 그대로 살렸으면 관람객에게 없는 기능을 약속하는 화면이 라이브로 나갔을 것이다.

죽은 코드를 무엇으로 볼 것인가

처음엔 이게 재사용의 승리로 보였다. 완성된 컴포넌트가 놀고 있으니 붙이기만 하면 되는 일.

갈린 지점은 여기였다.

  • 아껴 둔 자산으로 보면 — 완성도 높은 컴포넌트, 그대로 쓰면 이득
  • 멈춘 시계로 보면 — 안 쓰이는 동안 세상만 바뀌었고, 그 코드는 그걸 모른다

컴포넌트 자체는 멀쩡했다. 버그도 없고 번역도 여섯 언어가 다 있었다. 틀린 건 코드가 아니라 코드가 담고 있던 세상의 모습이었다. 그 화면이 마지막으로 참이었던 건 저장·찜 버튼이 살아 있던 시절이고, 그 버튼들은 닷새 전에 사라졌다.

타입 검사도 테스트도 이걸 못 잡는다. 문장은 컴파일되지 않으니까.

컴포넌트는 살리고 약속은 다시 썼다

지금 실제로 참인 것만 남기는 기준으로 문구를 갈아엎었다.

  • 작품 저장·갤러리 찜·나만의 컬렉션 → 화면에 없는 기능
  • 대화가 계정에 남아 기기가 바뀌어도 이어진다 → 로그인할 때 익명 기록을 계정으로 합치는 코드가 실제로 있다
  • 연령대를 기억해 다음 작품도 눈높이를 맞춘다 → 같은 날 만든 기능

그리고 코드 주석에 왜 바꿨는지를 박아 뒀다. 다음에 이 문구를 다시 살릴 때 같은 데서 안 넘어지도록.

죽은 코드를 되살릴 때 봐야 하는 건 그게 도는지가 아니다. 그게 말하는 게 아직 참인지다.

← 목록으로