한 문장
파일과 자료는 언제든 되돌릴 수 있는 상태로 둔다. 반대로 "이렇게 하기로 했다"는 결정은 쌓아 두고 지우지 않는다. 되돌릴 수 있어야 할 것과 남아 있어야 할 것을 헷갈리면 정작 필요한 것만 사라진다.
지우기를 세 단계로
- 표시한다. 지울 후보를 목록으로 먼저 본다. 이름과 개수와 크기만 본다. 이 단계에서 "어, 이건 아닌데" 가 가장 많이 나온다.
-
옮긴다.
_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 ← 설치 방식 바꾸기 전
삼한연대기 의 사본 폴더에는 이런 이름의 파일이 스물아홉 개 쌓여 있다. 거창한 도구를 쓴 것이 아니라 이름 붙인 복사가 전부다. 그런데 이름만 훑어도 이 프로젝트가 무엇을 언제 시도했는지가 그대로 읽힌다.
반대로, 남겨야 하는 것
| 이런 것은 | 지우지 않는다 |
|---|---|
| 왜 그렇게 하기로 했는지 | 같은 고민을 반년 뒤에 처음부터 다시 하게 된다 |
| 한 번 당한 사고와 그 원인 | 기록이 없으면 같은 사고를 또 겪는다 |
| 해 봤다가 접은 방법과 그 이유 | 없으면 그 방법을 또 시도한다 |
| 안 쓰기로 한 코드 | 지우되 언제 왜 뺐는지는 한 줄 남긴다 |
범위를 안 그은 정리 요청은 안 쓰는 것처럼 보이는 것을 전부 건드린다. 그런데 "안 쓰는 것처럼 보이는 것" 중에는 한 해에 한 번 쓰는 것, 일부러 남겨 둔 것, 다른 곳에서 조용히 쓰고 있는 것이 섞여 있다.
정리를 부탁할 때는 항상 "무엇을 정리 대상으로 봤는지 기준부터 말해 줘" 를 먼저 시킨다. 기준을 보면 위험한 정리인지 아닌지 바로 안다.
정리 — 세 줄
- 지우기는 표시 → 옮기기 → 지우기 세 단계. 마지막만 사람이 한다.
- 덮어쓰기도 지우기다. 고치기 전 사본에 "무엇을 하기 전"을 이름으로 남긴다.
- 자료는 되돌릴 수 있게, 결정과 사고 기록은 쌓아 둔다.
- 정리하고 싶은 폴더 하나를 고른다.
- 이 편의 "맡길 때 쓰는 문구"를 그대로 써서 지울 후보 목록만 받는다.
- 목록에서 "어, 이건 아닌데" 가 몇 개 나오는지 센다. 옮기기와 지우기는 오늘 하지 않는다.
지우기의 세 단계와 사람이 하는 단계는?
표시 → 옮기기(_to_delete) → 지우기. 마지막 지우기만 사람이 직접 한다.
덮어쓰기가 위험한 이유는?
덮어쓰기도 지우기인데 지운다는 느낌이 없다. 휴지통은 덮어쓴 내용을 지켜 주지 않는다.
되돌릴 지점 사본의 이름에 꼭 들어가야 할 것은?
"무엇을 하기 전" — 예: game-0.6.0-before-multihop.js.
다음 편은 고칠 자리 자체를 줄이는 이야기다 — 한 곳만 고치면 되게 만들기.