Refactoring English: 11개월 차
한 줄 요약
공식적으로 일정이 지연되고 있습니다.
처음 방문하셨나요?
안녕하세요, 마이클입니다. 소프트웨어 개발자이자 소규모 인디 테크 비즈니스를 운영하는 창업자입니다. 현재 Refactoring English: Effective Writing for Software Developers라는 책을 집필하고 있습니다.
매달 이렇게 회고를 발행해 책 집필 상황과 전반적인 근황을 공유하고 있습니다.
하이라이트
- 책 집필이 지연되고 있습니다.
- 훌륭한 블로그 글 덕분에 편의용 셸 스크립트에 대해 더 깊이 고민하게 됐습니다.
- 게임 Oxygen Not Included가 재미있습니다.
목표 성적표
매달 초에 달성하고 싶은 목표를 정합니다. 이번 달 결과는 다음과 같습니다.
책을 읽은 독자를 위한 교정 할인 혜택 마련
- 결과: 할인 내용을 설명하는 페이지를 만들었습니다
- 성적: A
페이지는 만들었지만 일부러 얼리 액세스 혜택으로 홍보하지는 않고 있습니다. 새로운 고객을 끌어들이기보다 이미 책에 열정을 가진 분들과 함께 일하고 싶기 때문입니다. 이 회고에서 할인을 공개하는 이유는, 제 작업을 관심 있게 지켜보며 매달 업데이트를 읽어 주시는 분이라면 제가 프리랜스 교정 클라이언트로 모시고 싶은 분이기 때문입니다.
표준 요금을 두 배로 올리고 얼리 액세스 고객을 위한 할인을 추가한 이후로는 프리랜스 교정 의뢰가 없었지만, 사실 괜찮습니다. 오히려 집필량이 늘었고, 만약 프리랜스 교정이 집필 시간을 빼앗더라도 금전적으로 충분히 가치 있는 교환이라고 느낄 수 있도록 수지를 맞추고 싶습니다.
연락할 얼리 액세스 고객 목록 만들기
- 결과: 연락할 수 있는 고객 63명의 목록을 만들었습니다
- 성적: A
계속해서 독자 한 분 한 분에게 직접 연락하겠다는 목표를 세워 왔는데, 연락할 고객을 찾는 과정에 마찰이 크다는 걸 깨달았습니다. 그래서 목표를 단순화해 아래 기준에 따라 연락하기 적합한 고객 목록을 만드는 것으로 바꿨습니다.
- 이메일 주소가 Gmail/Yahoo/Hotmail 등 이메일 전용 도메인이 아닐 것.
- 이메일 주소의 도메인으로 실제 웹사이트가 운영되고 있을 것.
즉, 웹사이트를 살펴보고 그분만을 위한 개인적인 이야기를 건넬 수 있는 독자를 찾고 있는 셈입니다. 이 목록을 바탕으로 세 분에게 연락했고, 그중 두 분이 답장을 주셨으며 한 분은 지난달 라이브 세션에도 참석해 주셨습니다. 개인화된 이메일이 참석에 영향을 줬다고 생각합니다. 1:1 아웃리치는 계속해서 긍정적인 결과를 내고 있으니 앞으로 더 자주 해야겠습니다.
책의 새로운 챕터 발행
- 결과: 2.5개 챕터를 새로 발행했습니다
- 성적: A
“How to Get Meaningful Feedback on Your Design Document”, “Verbs Drive the Sentence”, “Stay Positive” 세 편을 발행했습니다. 이 중 설계 문서 관련 글은 엄밀히는 반쪽짜리 챕터로, 실제 책에는 설계 문서에 들어가는 내용을 더 자세히 보강해 넣을 예정입니다.
“How to Get Meaningful Feedback on Your Design Document”는 최근 들어 가장 반응이 없었던 글로, 어디에 올려도 거의 조회수를 얻지 못했습니다. 100% 확신하진 않았지만 90% 정도는 성공할 거라 생각했습니다. 설계 문서 작성이 독자들이 가장 관심 있어 한 주제 중 하나였기 때문에 더 많은 독자가 있을 거라 기대했습니다.
Refactoring English 지표
| 지표 | 2025년 9월 | 2025년 10월 | 변화 |
|---|---|---|---|
| 순 방문자 수 | 7,283 | 22,398 | +15,115 (+208%) |
| 사전 주문 수익 | $484.71 | $570.75 | +$86.04 (+18%) |
| 컨설팅 수익 | $429.60 | $0.00 | -$429.60 (-100%) |
| 스폰서 수익 | $48.25 | $48.25 | $0.00 (0%) |
| 총수익 | $962.56 | $619.00 | -$343.56 (-36%) |
10월 웹사이트 방문자 수는 3월 대규모 킥스타터 홍보 이후 가장 많았습니다. 순 방문자 수는 2만 2,398명이었는데, 그중 93%는 “The Software Essays that Shaped Me”를 통해 유입됐습니다. 지난달에 발행한 이 글은 개인적으로 기대만큼 잘 쓰이지 않았다고 느꼈던 글이었습니다.
사전 주문이 방문자 수에 좀 더 비례해서 늘었으면 하는 아쉬움은 있지만, 블로그 글이 책에 새로운 독자를 데려오고 있다는 점은 여전히 기쁩니다.
일정이 지연되고 있습니다
책을 쓰기 시작할 때는 2025년 10월까지는 끝낼 수 있다고 확신했습니다. 여유를 두고 12월까지 마치겠다고 공언했지만, 그 여유가 필요할 거라고는 생각하지 않았습니다.
결과적으로 그 여유는 물론이고 그 이상이 필요하게 됐습니다.
지난 5월에 챕터별로 예상 집필 시간을 적어 두었습니다. 6개월이 지난 지금 얼마나 정확했을까요? 노력을 약 40% 과소평가했습니다.
원래는 114시간이면 책을 완성할 수 있을 거라 생각했지만, 99시간을 쓴 지금 추산으로는 총 157시간이 필요할 것 같아 앞으로 58시간이 더 필요할 것으로 보입니다.
또 주당 5시간씩 집필할 수 있을 거라 예상했지만 이것도 빗나갔습니다. 6개월 동안 99시간을 썼으니 주당 약 3.8시간 꼴입니다.
보통 하루에 집중해서 쓸 수 있는 시간은 최대 한 시간 정도입니다. 더 오래 쓸 수는 있지만 생산성이 크게 떨어져, 두 번째 시간의 생산성은 첫 시간의 20% 정도라고 느낍니다. 가끔 오후에 한 시간을 더 짜내기도 하지만 드문 일입니다.
제대로 된 집필 시간을 확보하지 못하게 하는 일상적인 변수들도 고려하지 않았습니다.
- 책 외 글쓰기
- 예: 블로그 글, 회고, 노트
- 육아 일정 변경
- 평소에는 가족이 육아를 도와주지만, 누군가 아프거나 자리를 비우고 대체 인력을 찾지 못하면 아내나 제가 시간을 내어 대신합니다.
- 프리랜스 교정 작업
- 같은 날 두 가지를 병행하기가 어렵다고 느낍니다.
- 아픈 날
- 휴식
- 글 쓸 의욕이 나지 않는 날
주당 약 3.8시간 속도를 유지한다고 가정하면 남은 58시간을 채우는 데 15.3주가 걸려 2026년 2월 중순에 마치게 됩니다. 여유를 두어 2026년 3월 말까지 책을 완성하는 것을 목표로 하겠습니다.
남은 챕터들의 일정에 대해서는 더 확신이 있습니다. “Get to the Point”(매력적인 서론을 쓰는 법)와 같은 초반 챕터들은 머릿속에서 흐릿한 사고 과정을 체계화하고 다듬어야 해서 어렵습니다. 반면 저만의 글쓰기 프로세스나 에디터 고용 같은 주제는 사고방식보다는 제가 실제로 취하는 구체적인 행동이라 설명하기가 더 쉽습니다.
추천
Evan Hahn의 편의 스크립트
지난달에 읽은 글 중 가장 좋았던 건 Evan Hahn의 “Scripts I wrote that I use all the time”이었습니다. Evan은 개발자로서 삶을 더 편하게 만들기 위해 직접 만든 여러 스크립트를 공유합니다. 제가 가장 마음에 든 것들은 다음과 같습니다.
copy: stdin에서 읽어 시스템 클립보드에 저장합니다.- 이런 생각을 왜 못 했나 싶어 조금 부끄럽습니다. 그동안은 야만인처럼 터미널에서 마우스로 복사해 왔습니다.
pasta: 시스템 클립보드 내용을 stdout으로 출력합니다.pastas: 시스템 클립보드를 감시하다가 변경될 때마다 stdout으로 출력합니다.- 처음 글을 읽었을 때는 이 스크립트가 얼마나 영리한지 놓쳤습니다.
- 한 터미널에서
pastas | wget --input-file=/dev/stdin을 실행해 두고 브라우저에서는 URL을 클립보드에 복사하기만 하면, 왔다 갔다 할 필요 없이pastas명령이 복사한 모든 URL을 다운로드합니다.
emoji: 텍스트로 이모지를 검색합니다. 예를 들어emoji cool을 실행하면 “cool”이라는 개념과 연관된 모든 이모지를 출력합니다.
Evan의 스크립트 중 많은 아이디어가 훌륭해서 바로 도입했습니다.
더 중요한 건 글의 메타 아이디어가 마음에 들었다는 점입니다. 개발자는 일상적인 작업 흐름에서 마찰을 줄여 주는 스크립트에 대해 고민해야 한다는 것이죠. 또 무엇이 스크립트가 될 수 있는지에 대한 인식도 넓혀 주었습니다. 예를 들어 emoji 같은 경우, 모든 이모지와 설명 목록이 없으니 스크립트로 만들 생각을 하지 못했을 텐데, Evan의 글을 읽고 보니 나도 같은 방식으로 목록을 생성할 수 있겠다는 생각이 들었습니다.
이 글에서 영감을 받아 로컬에서 호스팅하는 LLM에 질문할 수 있는 chat 스크립트를 PATH에 추가했습니다. 종종 커맨드라인 도구의 사용법을 찾기 위해 웹 브라우저로 이동하곤 했는데, 이제는 커맨드라인에 머무른 채 chat에 바로 입력하면 됩니다.
#!/usr/bin/env bash
# Read prompt from command-line arg.
PROMPT="$1"
# Add implicit context for the prompt.
PROMPT+=' Assume a Linux OS.'
PROMPT+=' Prefer command-line tools.'
PROMPT+=' Optimize for the simplest possible response.'
PROMPT+=' If there are multiple methods, show me the simplest one.'
PROMPT+=' If possible, show me just a code snippet with no additional explanation.'
# Use a default LLM model but allow the user to override it.
MODEL="${MODEL:-llama3.2:1b}"
ollama run $MODEL "$PROMPT"
예를 들어 어제는 이미지 크기를 조정하는 방법을 떠올리기 위해 이렇게 사용했습니다.
정말 빠릅니다! 제 시스템에서는 해당 프롬프트가 265ms 만에 완료됐으니, 브라우저로 전환해 검색하고 답을 클릭한 뒤 다시 작업으로 돌아오는 것보다 훨씬 빠릅니다.
Evan의 또 다른 글 “Why ‘alias’ is my last resort for aliases”도 편의 스크립트 이야기와 잘 어우러집니다. 편의 스크립트를 PATH에 포함된 폴더(예: ~/.local/bin)에 두는 것이 셸 alias를 사용하는 것보다 더 큰 유연성을 제공한다고 주장합니다.
Oxygen Not Included
저는 게임을 활발하게 하진 않지만 1년에 한 개 정도 PC 게임을 구매합니다. 보통 한 게임당 10~20시간 정도 하다가 질려 하지만, 15~50달러를 내고 10~20시간을 즐기는 것은 충분히 가치 있다고 생각합니다. 어떤 게임은 푹 빠져서 25~100시간씩 하기도 합니다(Stardew Valley, XCOM2, Cyberpunk 2077).
Oxygen Not Included는 Andrew Kelly와 Mitchell Hashimoto가 얼마나 좋아하는지 이야기하는 것을 본 이후로 거의 1년 동안 머릿속에 남아 있었습니다. Andrew Kelly는 이 게임이 시스템적 사고를 가르치는 데 너무 뛰어나서 초등학교 필수 과목으로 따로 개설되어야 한다고까지 말했습니다.

Oxygen Not Included 속 나의 우주 식민지
10월부터 Oxygen Not Included를 시작했는데 정말 재미있습니다. Factorio나 Rimworld와 비교되는 것을 본 적이 있지만 그 게임들은 해본 적이 없습니다. 제가 느끼기에 가장 비슷한 게임은 Stardew Valley, 특히 농사 부분입니다. 두 게임 모두 무언가를 생산하는 시스템을 구축하려고 노력합니다. 초반에는 기초적인 도구밖에 없어 많은 일을 수동으로 해야 하지만, 진행할수록 더 강력한 도구를 얻어 더 많은 작업을 자동화하고 생산성을 확장할 수 있습니다.
Oxygen Not Included의 가장 큰 난관은 배우기 어렵다는 점입니다. 일부 개념은 게임 내에서 설명해 주지만, 많은 것들은 시행착오를 통해 배워야 했습니다. YouTube 튜토리얼도 있지만 이상할 정도로 깁니다. 예를 들어 결국 배관을 만들 수 있는 단계에 이르렀는데 작동 방식을 이해하지 못해 YouTube에서 튜토리얼을 찾아보니 전부 60분 이상이었습니다! 그 이유는 백만 단위로 확장되는 초복잡한 배관 버전을 설명하기 때문인데, 저는 그저 화장실 하나 만들고 싶을 뿐이었습니다.
지금까지 찾은 튜토리얼 중 가장 좋았던 건 Jahws라는 플레이어가 작성한 이 문서 가이드입니다.
Oxygen Not Included를 잘 하시는 분이라면 제 식민지에서 제가 바보같이 하고 있는 점을 알려 주세요.
마무리
무엇을 해냈나요?
- “How to Get Meaningful Feedback on Your Design Document” 발행
- 설계 문서에 대해 얼리 액세스 독자를 위한 라이브 비디오 세션 진행
- 신규 챕터 2편 발행: “Verbs Drive the Sentence”와 “Stay Positive”
- “Hold Off on Litestream 0.5.0” 발행
- “Read My Blog With JavaScript” 발행
배운 점
- 주당 5시간씩 책을 쓸 수는 없습니다.
- 책만 쓰는 주에는 5시간을 쉽게 채울 수 있지만, 끼어들 수 있는 일과 경쟁하는 우선순위가 많습니다.
다음 달 목표
- 책의 신규 챕터 2편 발행하기.
- 독자 10명에게 연락하기.
- 사람들을 Refactoring English 웹사이트로 이끄는 도구나 블로그 글 만들기.
글을 무작위로 읽기