/// LEARN · L2 안전장치 · 05

되돌릴 수 있게 지운다

만들다 보면 반드시 지울 것이 생긴다. 안 쓰는 파일, 실패한 시도, 중복된 자료. 그런데 지우는 일만은 되돌릴 수 없다. 그래서 지우기는 한 동작이 아니라 세 단계로 나눠 둔다.

한 문장

자료는 되돌릴 수 있게, 결정은 되돌아갈 수 없게

파일과 자료는 언제든 되돌릴 수 있는 상태로 둔다. 반대로 "이렇게 하기로 했다"는 결정은 쌓아 두고 지우지 않는다. 되돌릴 수 있어야 할 것과 남아 있어야 할 것을 헷갈리면 정작 필요한 것만 사라진다.

지우기를 세 단계로

  1. 표시한다. 지울 후보를 목록으로 먼저 본다. 이름과 개수와 크기만 본다. 이 단계에서 "어, 이건 아닌데" 가 가장 많이 나온다.
  2. 옮긴다. _to_delete 같은 폴더를 하나 만들어 옮기기만 한다. 이 상태에서 며칠 지내 본다. 아무 일도 안 생기면 정말 안 쓰는 것이다.
  3. 지운다. 사람이, 탐색기에서, 직접. 이 마지막 단계만은 자동으로 만들지 않는다.
① 표시 목록으로 본다 완전히 안전 → ② 옮기기 _to_delete 로 되돌릴 수 있다 → ③ 지우기 사람이 직접 되돌릴 수 없다
①②는 맡겨도 된다. ③만 사람이 한다

맡길 때 쓰는 문구

이 폴더에서 안 쓰는 파일을 정리하려고 한다.

1. 먼저 지울 후보 목록만 보여 줘.
   파일 이름 · 크기 · 마지막 수정 날짜 · 왜 후보인지
2. 아직 아무것도 지우거나 옮기지 마.
3. 내가 목록을 확인한 뒤에 _to_delete 폴더로 옮기는 것까지만 해 줘.
4. 실제 삭제는 내가 한다.

"아직 아무것도 하지 마" 를 번호를 붙여 따로 적는 것이 요령이다. 문장 속에 섞어 두면 앞의 요청과 함께 한 번에 실행되는 일이 생긴다.

덮어쓰기도 지우기다

파일을 새 내용으로 저장하는 것은 옛 내용을 지우는 것과 같다. 그런데 "지운다"는 느낌이 없어서 경계심이 안 생긴다.

그래서 고치기 전 사본이 필요하다. 휴지통은 지운 파일을 지켜 주지만, 덮어쓴 내용은 지켜 주지 않는다.

되돌릴 지점 남기기 — 이름이 전부다

사본을 남기는 것은 쉽다. 문제는 석 달 뒤에 그게 뭐였는지 모른다는 것이다. 그래서 이름에 "무엇을 하기 전" 이 들어가야 한다.

형식은 파일명-버전-before-무엇. 오른쪽은 실제 사본 폴더에 있는 이름 그대로다.

안 좋은 이름            좋은 이름 (실제 파일)
index_백업.html         game-0.6.0-before-multihop.js       ← 다단계 행군 넣기 전
index_백업2.html        game-0.9.0-before-reach-attack.js   ← 원거리 공격 넣기 전
index_최종.html         style-0.8.0-before-sheet.css        ← 모바일 조작 시트 넣기 전
index_최종_진짜.html    main-0.9.2-before-squirrel.cjs      ← 설치 방식 바꾸기 전

삼한연대기 의 사본 폴더에는 이런 이름의 파일이 스물아홉 개 쌓여 있다. 거창한 도구를 쓴 것이 아니라 이름 붙인 복사가 전부다. 그런데 이름만 훑어도 이 프로젝트가 무엇을 언제 시도했는지가 그대로 읽힌다.

반대로, 남겨야 하는 것

이런 것은지우지 않는다
왜 그렇게 하기로 했는지 같은 고민을 반년 뒤에 처음부터 다시 하게 된다
한 번 당한 사고와 그 원인 기록이 없으면 같은 사고를 또 겪는다
해 봤다가 접은 방법과 그 이유 없으면 그 방법을 또 시도한다
안 쓰기로 한 코드 지우되 언제 왜 뺐는지는 한 줄 남긴다
"정리 좀 해 줘" 가 위험한 이유

범위를 안 그은 정리 요청은 안 쓰는 것처럼 보이는 것을 전부 건드린다. 그런데 "안 쓰는 것처럼 보이는 것" 중에는 한 해에 한 번 쓰는 것, 일부러 남겨 둔 것, 다른 곳에서 조용히 쓰고 있는 것이 섞여 있다.

정리를 부탁할 때는 항상 "무엇을 정리 대상으로 봤는지 기준부터 말해 줘" 를 먼저 시킨다. 기준을 보면 위험한 정리인지 아닌지 바로 안다.

정리 — 세 줄

  1. 지우기는 표시 → 옮기기 → 지우기 세 단계. 마지막만 사람이 한다.
  2. 덮어쓰기도 지우기다. 고치기 전 사본에 "무엇을 하기 전"을 이름으로 남긴다.
  3. 자료는 되돌릴 수 있게, 결정과 사고 기록은 쌓아 둔다.
해 볼 것 · 10분
  1. 정리하고 싶은 폴더 하나를 고른다.
  2. 이 편의 "맡길 때 쓰는 문구"를 그대로 써서 지울 후보 목록만 받는다.
  3. 목록에서 "어, 이건 아닌데" 가 몇 개 나오는지 센다. 옮기기와 지우기는 오늘 하지 않는다.
확인 질문 눌러서 답 보기
지우기의 세 단계와 사람이 하는 단계는?

표시 → 옮기기(_to_delete) → 지우기. 마지막 지우기만 사람이 직접 한다.

덮어쓰기가 위험한 이유는?

덮어쓰기도 지우기인데 지운다는 느낌이 없다. 휴지통은 덮어쓴 내용을 지켜 주지 않는다.

되돌릴 지점 사본의 이름에 꼭 들어가야 할 것은?

"무엇을 하기 전" — 예: game-0.6.0-before-multihop.js.

다음 편은 고칠 자리 자체를 줄이는 이야기다 — 한 곳만 고치면 되게 만들기.