리팩터링 잉글리시: 11개월 차
원문은 Michael Lynch님이 에 게재했습니다. 이 블로그 구독하기
한 줄 요약
공식적으로 일정이 지연되고 있다.
처음 방문하셨나요?
안녕하세요, 저는 마이클입니다. 소프트웨어 개발자이자 소규모 인디 테크 비즈니스의 창업자입니다. 현재 Refactoring English: Effective Writing for Software Developers라는 책을 쓰고 있습니다.
매달 이렇게 회고를 발행해 책 집필 현황과 전반적인 업무 근황을 공유하고 있습니다.
하이라이트
- 책 집필이 지연되고 있다.
- 훌륭한 블로그 글 덕분에 편의용 셸 스크립트에 대해 더 깊이 고민하게 됐다.
- 게임 Oxygen Not Included가 재미있다.
목표 평가
매달 초에 이루고 싶은 목표를 정합니다. 이번 달 목표 달성 결과는 다음과 같습니다.
책을 읽은 독자를 위한 에디팅 할인 제도 마련
- 결과: 할인을 설명하는 페이지를 만들었다
- 평가: A
페이지는 만들었지만 얼리 액세스 혜택으로 적극적으로 홍보하지는 않았다. 이미 책에 대한 열정이 있는 사람들과 함께 일하고 싶을 뿐, 새로운 고객을 끌어모으려는 의도는 아니기 때문이다. 이 회고에서 할인을 공개하는 이유는, 매달 올라오는 이 업데이트를 챙겨 읽을 만큼 제 작업에 관심이 있는 분이라면 제가 프리랜서 에디팅 고객으로 모시고 싶은 분이기도 하기 때문이다.
표준 요금을 두 배로 올리고 얼리 액세스 고객에게 할인을 제공한 이후로 프리랜서 에디팅 의뢰는 없었다. 하지만 괜찮다. 오히려 글쓰기 생산량이 늘었고, 에디팅 때문에 글쓰기를 미뤄야 한다면 그에 상응하는 보상을 받는다고 느낄 수 있을 정도로 수지가 맞기를 바란다.
연락할 얼리 액세스 고객 목록 만들기
- 결과: 연락할 수 있는 고객 63명의 목록을 만들었다
- 평가: A
더 많은 독자에게 일대일로 연락하겠다는 목표를 계속 세워 왔다. 연락할 고객을 찾는 과정에 마찰이 많다는 걸 깨닫고, 목표를 단순화해 연락하기에 적합한 고객 목록을 만드는 것으로 바꿨다. 기준은 다음과 같다.
- 이메일 주소가 Gmail/Yahoo/Hotmail 또는 다른 이메일 전용 도메인이 아닐 것.
- 이메일 주소의 도메인으로 접속하면 실제 웹사이트가 존재할 것.
즉, 웹사이트를 살펴보고 개인적이고 구체적인 이야기를 건넬 수 있는 독자를 찾고 있는 셈이다. 이 목록을 바탕으로 세 명의 고객에게 연락했고, 두 명이 답장을 줬다. 그중 한 명은 이후 지난달 라이브 세션에 참석하기도 했다. 개인화된 이메일이 참석에 영향을 줬을 거라 생각한다. 이 일대일 아웃리치는 계속해서 긍정적인 결과를 내고 있다. 이제 더 자주 해야 할 뿐이다.
책의 새 챕터 발행
- 결과: 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월의 대규모 킥스타터 홍보 이후 가장 높은 수치였다. 순 방문자는 22,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의 스크립트 중에는 훌륭한 아이디어가 많아 바로 도입했다.
더 중요한 건 Evan 글의 메타 아이디어가 마음에 들었다는 점이다. 개발자는 자신의 일상적인 워크플로에서 마찰을 없애는 스크립트를 고민해야 한다는 것이다. 또 무엇이 스크립트가 될 수 있는지에 대한 내 인식도 넓어졌다. 예를 들어 emoji 같은 경우, 모든 이모지와 설명 목록이 없으니 스크립트로 만들 생각을 못 했을 텐데, Evan의 글을 읽고 나니 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년에 한 개 정도는 컴퓨터 게임을 산다. 보통 한 게임당 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 웹사이트로 끌어올 도구나 블로그 글 만들기.
글을 무작위로 읽기
댓글
로그인하고 댓글 남기기