Refactoring English:第 11 個月
原文由 Michael Lynch 于 發布,訂閱此部落格
一句話總結
我正式進度落後了。
第一次來嗎?
嗨,我是 Michael。我是一名軟體開發者,也是小型獨立科技公司的創辦人。我目前正在寫一本書,書名是Refactoring English: Effective Writing for Software Developers。
每個月我都會像這樣發表一篇回顧,分享這本書以及整體工作近況的進展。
本月重點
- 我的寫書進度落後了。
- 一篇很棒的部落格文章啟發我重新思考便利的 shell 腳本。
- 遊戲 Oxygen Not Included 很好玩。
目標評分
每個月月初,我都會訂下想完成的目標。以下是這個月的達成狀況:
為已閱讀本書的讀者設定編輯服務折扣
- 結果:已建立說明折扣的頁面
- 評分:A
我確實建立了這個頁面,但刻意沒有把它當作搶先體驗的福利來宣傳。我的目標是與那些本身就對這本書抱有熱情的人合作,而不是用它來吸引新客戶。我會在這篇回顧裡公開這個折扣,是因為如果你對我的工作感興趣到會閱讀這些每月更新,你大概就是我會想合作的自由編輯客戶類型。
自從我把標準費率調漲一倍、並為搶先體驗的客戶提供折扣以來,就還沒有接到自由編輯的案子,但這樣其實沒關係。結果我的寫作產量反而增加了,而且我希望收支能算得過來——如果自由編輯的工作會讓我無法寫書,至少報酬要讓我覺得這個取捨是值得的。
建立一份可聯繫的搶先體驗客戶名單
- 結果:已整理出 63 位可聯繫的客戶
- 評分:A
我一直把「一對一聯繫更多讀者」設為目標。我發現要找出適合聯繫的客戶阻礙很多,所以把目標簡化為僅僅整理出一份適合我主動聯繫的客戶名單,篩選標準如下:
- 他們的電子郵件地址不是 Gmail/Yahoo/Hotmail 或其他純郵件服務的網域。
- 電子郵件地址中的網域名稱實際上有對應的網站。
基本上,我是在找那些我可以瀏覽其網站、進而對他們說些獨特且個人化內容的讀者。根據這份名單,我聯繫了三位客戶,其中兩位有回覆,包含一位後來參加了上個月的線上直播。我猜那封個人化的郵件是他們出席的原因之一。所以,這種一對一的聯繫持續帶來正面的回饋;我只是需要做得更多。
發布本書的一個新章節
- 結果:發布了 2.5 個新章節
- 評分:A
我發布了〈如何針對你的設計文件取得有意義的回饋〉、〈動詞驅動句子〉以及〈保持正面〉。其中關於設計文件的算是半個章節,因為我計畫在正式出版的書中再擴充,加入更多關於設計文件應包含內容的細節。
〈如何針對你的設計文件取得有意義的回饋〉是我近期反應最冷淡的一篇,不管貼在哪裡幾乎都沒有引起迴響。我本來就不是百分之百有把握它會受歡迎,但我以為有九成的機會會成功。設計文件寫作是讀者最感興趣的主題之一,所以我原本預期會有更多人關注這個主題。
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 月份大規模 Kickstarter 宣傳以來最高的一次。共有 22,300 位不重複訪客。其中 93% 是透過〈形塑我的那些軟體文章〉而來,也就是我上個月發布、但我覺得表現不如預期的那篇文章。
我當然希望預購量能隨著訪客數更線性地成長,但我還是很開心部落格文章能為我的書帶來新讀者。
我進度落後了
剛開始寫這本書時,我很有信心能在 2025 年 10 月前完成。我對外宣布會在 12 月完成,只是想給自己留一點緩衝,但當時我懷疑自己根本不需要用到。
結果證明,我不僅需要緩衝,還遠遠不夠。
早在 5 月,我就寫下了對每個章節所需寫作時間的預估。六個月後,準確度如何呢?我低估了大約 40% 的工作量。
我原本以為 114 小時就能寫完整本書,但在已經寫了 99 小時之後,我目前的估計是總共需要 157 小時,也就是說我認為還需要再花 58 小時才能完成。
我原本也估計每週可以花五小時寫書,但這也錯了,六個月寫了 99 小時,平均下來每週大約只有 3.8 小時。
我通常一天最多只能寫一小時。寫更久也不是不行,但效率會大幅下降,我覺得第二個小時的產出大概只有第一個小時的兩成。偶爾下午能硬擠出第二個小時,但很少見。
我當初也沒把一些經常發生、會讓我無法好好寫作的狀況算進去:
- 非書籍寫作
- 例如:部落格文章、回顧、筆記
- 托育安排的變動
- 我們家平常有家人幫忙照顧小孩,但如果有人生病或臨時無法幫忙、又找不到替代人選,就得由我或我太太請假來顧。
- 自由編輯工作
- 我發現同一天很難兼顧兩者。
- 病假
- 休假
- 提不起勁寫作的日子
如果假設我維持每週約 3.8 小時的進度,剩下的 58 小時還需要 15.3 週,也就是會到 2026 年 2 月中。為了保險起見,我把目標定為在 2026 年 3 月底前完成這本書。
對於剩下章節的時程,我現在更有把握了。像〈直指重點〉(關於如何寫出吸引人的開頭)這類前期的章節比較有挑戰性,因為我得把腦中模糊的思考過程具體化、精煉化。但像我個人的寫作流程或如何聘請編輯這類主題就比較好說明,因為它們是我實際採取的具體行動,而不是抽象的思考方式。
推薦
Evan Hahn 的便利腳本
上個月我讀到最棒的一篇文章是 Evan Hahn 的〈我寫來天天用的腳本〉。Evan 分享了幾個他為了讓身為開發者的生活更輕鬆而寫的腳本。我最喜歡的是:
copy:從 stdin 讀取並存入系統剪貼簿。- 老實說我有點不好意思承認自己從沒想過可以這樣做。以前我總是像野人一樣用滑鼠在終端機裡複製。
pasta:從系統剪貼簿印出到 stdout。pastas:監看系統剪貼簿,每當內容改變就印出到 stdout。- 第一次讀這篇文章時,我忽略了這個腳本有多聰明。
- 你可以在一個終端機執行
pastas | wget --input-file=/dev/stdin,然後在瀏覽器裡不斷複製網址到剪貼簿,pastas指令就會自動下載你複製的每一個網址,完全不用來回切換視窗。
emoji:用文字搜尋 emoji。例如emoji cool就會印出所有與「cool」相關的 emoji。
Evan 的很多腳本點子都很棒,我馬上就採用了。
更重要的是,我喜歡 Evan 這篇文章背後的核心理念:開發者應該思考如何用腳本來消除日常工作流程中的阻礙。這也拓展了我對「什麼可以做成腳本」的想像。像 emoji 這個腳本,我本來根本不會想到要做,因為我手邊沒有所有 emoji 及其描述的清單,但在讀了 Evan 的文章後,我才意識到我其實可以用跟 Evan 一樣的方法來產生那份清單。
這啟發我在 PATH 裡新增了一個 chat 腳本,用來向本機部署的 LLM 提問。我常常需要打開瀏覽器去查指令列工具的用法,現在我可以直接留在指令列,把問題丟給 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 的另一篇姊妹作〈為什麼「alias」是我設定別名的最後選擇〉也和這些腳本相輔相成,文中主張把便利腳本放在 PATH 底下的資料夾(例如 ~/.local/bin 底下)比使用 shell alias 更有彈性。
Oxygen Not Included
我不是個活躍的玩家,但每年會買一款電腦遊戲。我通常每款遊戲玩個 10 到 20 小時就會膩,但我覺得花 15 到 50 美元換來 10 到 20 小時的娛樂很划算。有些遊戲我會特別投入,玩上 25 到 100 小時(Stardew Valley、XCOM2、Cypberpunk 2077)。
Oxygen Not Included 在我心裡掛了快一年,自從我看到 Andrew Kelly 和 Mitchell Hashimoto 談論他們有多喜歡這款遊戲之後。Andrew Kelly 甚至說它太擅長教導系統性思考,應該在小學獨立開成一門必修課。

我在 Oxygen Not Included 中的太空殖民地
我從 10 月開始玩 Oxygen Not Included,真的很好玩。我看過有人把它拿來跟 Factorio 和 Rimworld 比較,但我沒玩過那兩款。最讓我聯想到的其實是 Stardew Valley,尤其是其中的農場部分。兩款遊戲都是要打造一套能生產東西的系統。遊戲初期,你只有陽春的工具,很多事都得手動完成,但隨著進展,你會取得更強大的工具,讓你能自動化更多工作、擴大生產力。
Oxygen Not Included 最大的挑戰在於它很難上手。遊戲內對某些概念有說明,但很多東西我還是得靠反覆嘗試來摸索。YouTube 上有教學影片,但都長得離譜。比方說,玩到後來你可以蓋水管,但我搞不懂怎麼運作,上 YouTube 一查,全都是 60 分鐘以上的教學!原因在於他們都在講那種能擴展到百萬規模的超複雜水管系統,而我只想蓋一座馬桶而已。
目前為止我找到最棒的教學是玩家 Jahws 寫的這份文字指南。
如果你是厲害的 Oxygen Not Included 玩家,請告訴我我的殖民地有哪些蠢操作。
總結
完成了什麼?
- 發布了〈如何針對你的設計文件取得有意義的回饋〉
- 為搶先體驗的讀者舉辦了一場關於設計文件的線上直播。
- 發布了兩個新章節:〈動詞驅動句子〉與〈保持正面〉。
- 發布了〈先別急著升級到 Litestream 0.5.0〉
- 發布了〈用 JavaScript 閱讀我的部落格〉
學到的教訓
- 我沒辦法每週花五小時寫書。
- 如果那一週只寫書,我可以輕鬆做到五小時,但現實中有太多可能的干擾和互相競爭的優先事項。
下個月的目標
- 發布兩個新的書籍章節。
- 聯繫 10 位讀者。
- 製作一個能把人帶到 Refactoring English 網站的工具或部落格文章。
隨機一篇部落格
留言
登入後參與討論