Refactoring English: Month 11

Michael Lynch

重构英语:第 11 个月

一句话总结

我正式延期了。

初次来访?

嗨,我是 Michael(迈克尔)。我是一名软件开发者,也是小型独立科技企业的创始人。我目前正在写一本书,叫Refactoring English: Effective Writing for Software Developers(《重构英语:面向软件开发者的高效写作》)

每个月,我都会发布一篇这样的回顾,分享我的新书进展和整体职业情况。

亮点

  • 我的新书进度落后了。
  • 一篇出色的博客文章启发我更多地思考便捷 shell 脚本。
  • 游戏 Oxygen Not Included(《缺氧》)很有趣。

目标评分

在每个月初,我都会宣布本月想要完成的目标。以下是我的完成情况:

为已读书籍的读者设置编辑优惠

  • 结果:创建了一个说明优惠的页面
  • 评分:A

我创建了这个页面,但有意没有将其作为抢先体验的福利来宣传。我的目标是与那些本身就对这本书充满热情的人合作,而不是吸引新客户。我在这篇回顾中透露这个优惠,是因为如果你对我的工作足够感兴趣,会阅读这些月度更新,那你也正是我想作为自由编辑客户合作的那类人。

自从我将标准费率翻倍并为抢先体验客户增加优惠以来,还没有任何自由编辑客户,但这其实没关系。因此我的写作产出反而增加了,我希望两者能达到平衡——如果自由编辑工作让我无法写作,那么经济上的回报应该让我觉得这是值得的权衡。

创建一份可联系的抢先体验客户名单

  • 结果:创建了一份包含 63 位可联系客户的名单
  • 评分:A

我一直设定一个目标,要与更多读者进行一对一交流。我意识到寻找可联系的客户存在很多阻碍,于是我把目标简化为仅仅创建一个符合以下标准的、适合我联系的客户名单:

  1. 他们的电子邮件地址不是 Gmail/Yahoo/Hotmail 或其他纯邮箱域名。
  2. 他们邮箱地址中的域名指向一个真实的网站。

基本上,我在寻找那些我可以查看其网站、以便能对他们说些独特而个性化话语的读者。我基于这份名单联系了三位客户。其中两人作出了回应,包括一位随后参加了上个月线上直播活动的客户。我猜测那封个性化的邮件是他们出席的一个因素。所以,这种一对一的外联持续带来了积极的结果;我只是需要多做一些。

发布新书的一个新章节

  • 结果:我发布了 2.5 个新章节
  • 评分:A

我发布了“如何获得关于设计文档的有意义反馈”、“动词驱动句子”和“保持积极”这几章。关于设计文档的那篇在技术上算是半章,因为我计划在正式出版的书中扩展它,加入更多关于设计文档应包含内容的细节。

“如何获得关于设计文档的有意义反馈”是我近期反响最差的一篇,几乎在我发布的所有地方都没有引起关注。我本来也不是百分之百确信它会受欢迎,但我以为有 90% 的把握。设计文档写作是读者最感兴趣的主题之一,所以我原以为会有更多受众。

《重构英语》数据指标

指标2025年9月2025年10月变化
独立访客7,28322,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,398 名独立访客。其中,93% 来自于“塑造我的那些软件随笔”这篇文章,也就是我上个月发布的那篇我觉得没有达到预期效果的文章。

我希望预售量能与访客量更线性地增长,但我仍然很高兴我的博客文章能为我的书带来新读者。

我延期了

当我开始写这本书时,我确信能在 2025 年 10 月前完成。我宣布这本书会在 12 月完成,只是给自己留一些缓冲,但我当时怀疑自己是否真的需要它。

好吧,事实证明,我不仅需要缓冲,还需要更多。

早在 5 月,我就写下了我预计每个章节所需写作时间的估算。六个月后,我的估算有多准确呢?我低估了大约 40% 的工作量。

我原本以为写完整本书需要 114 小时,但目前的估算(在已写作 99 小时后)是 157 小时,这意味着我认为还需要 58 小时才能完成。

我还曾估计自己每周可以写 5 小时,但这也是错的,因为 6 个月写 99 小时,平均下来大约是每周 3.8 小时。

我一般每天最多只能写一小时。我可以写更久,但效率会大幅下降,感觉第二小时的效率只有第一小时的 20%。我有时下午还能挤出第二小时,但这种情况很少见。

我也没有考虑到那些经常会让我无法进行高效写作的常见情况:

  • 非书籍写作
    • 例如:博客文章、回顾、笔记
  • 托儿安排变动
    • 我们家通常有家人帮忙照看孩子,但如果有人生病或没空,又找不到替代人选,我或我的妻子就会请假来顶上。
  • 自由编辑工作
  • 病假
  • 休假
  • 提不起劲写作的日子

如果假设我继续保持每周约 3.8 小时的速度,剩下的 58 小时写作将需要 15.3 周,也就是到 2026 年 2 月中旬。为了留出缓冲,我打算将完成时间定为 2026 年 3 月底。

我对剩余章节的时间安排更有信心了。书中前面的章节,比如“直奔主题”(关于撰写引人入胜的引言),更具挑战性,因为我必须将脑海中模糊的思考过程形式化、精炼化。但像我的个人写作流程或聘请编辑这类主题,更容易解释,因为它们是我采取的具体行动,而不是我的思考方式。

推荐

Evan Hahn(埃文·哈恩)的便捷脚本

上个月我读到的最好的一篇文章是 Evan Hahn(埃文·哈恩)的“我编写并一直在使用的脚本”。埃文分享了他为简化作为开发者的生活而编写的几个脚本。我最喜欢的是:

  • copy:从 stdin 读取并存储到系统剪贴板中。
    • 老实说我有点惭愧,我从来没想过可以这样做。我一直像个野人一样用鼠标从终端复制内容。
  • pasta:将系统剪贴板内容打印到 stdout。
  • pastas:监视系统剪贴板,并在每次变化时打印到 stdout。
    • 第一次读这篇文章时,我忽略了这个脚本有多巧妙
    • 你可以在一个终端中运行 pastas | wget --input-file=/dev/stdin,然后在浏览器中,只需不断将 URL 复制到剪贴板,pastas 命令就会下载你复制的每一个 URL,而无需来回切换。
  • emoji:按文本搜索 emoji。例如 emoji cool 会打印出所有与“cool”概念相关的 emoji。

埃文的许多脚本都是绝妙的主意,我立刻就采用了。

更重要的是,我喜欢埃文这篇文章背后的元想法:开发者应该思考如何通过脚本来消除日常工作流程中的摩擦。它也拓展了我对“什么可以成为脚本”的认知。比如 emoji,我本来不会想到要做一个脚本,因为我没有所有 emoji 及其描述的列表,但在读了埃文的文章后,我意识到我完全可以像埃文那样生成这个列表。

这启发我在自己的 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 就完成,所以比起我切换到浏览器、搜索、点击查看答案,再切回任务要快得多。

埃文的另一篇姊妹文章“为什么‘alias’是我设置别名的最后选择”与他的脚本主题很好地衔接,它主张将便捷脚本放在 PATH 下的文件夹中(例如 ~/.local/bin),比使用 shell 别名能提供更大的灵活性。

《缺氧》

我不是一个活跃的玩家,但我每年会买一款电脑游戏。我通常每款游戏只玩 10-20 小时就会感到厌倦,但我认为花 15-50 美元换来 10-20 小时的娱乐是划算的。有些游戏我会非常投入,玩上 25-100 小时(《星露谷物语》《XCOM2》《赛博朋克 2077》)。

《缺氧》已经在我脑海中盘旋了近一年,自从我看到Andrew Kelly(安德鲁·凯利)和 Mitchell Hashimoto(米切尔·哈希本)谈论他们有多喜欢这款游戏。安德鲁·凯利甚至宣称这款游戏在培养系统思维方面如此出色,应该成为小学的必修课。

我在《缺氧》中的太空殖民地

我在 10 月开始玩《缺氧》,真的很有趣。有人将它与 Factorio 和 Rimworld 作比较,但我从未玩过那些游戏。它最让我联想到的游戏是《星露谷物语》,特别是其中的种田部分。在这两款游戏中,你都在尝试构建一个能产出某物的系统。起初,你只有简陋的工具,不得不手动完成大量任务,但随着游戏进展,你会获得更强大的工具,从而能够自动化更多工作并扩大生产力。

《缺氧》最大的挑战是难以上手。游戏中有一些概念的说明,但很多东西我不得不通过反复试错来学习。YouTube 上有教程,但莫名其妙地都很长。比如,你最终可以建造管道系统,但我不明白它是如何运作的,于是在 YouTube 上查找教程,结果全是 60 分钟以上的!但那是因为它们讲解的是那种能扩展到百万规模的超级复杂管道系统,而我只想建一个厕所。

到目前为止我找到的最好的教程是玩家 Jahws(贾斯)撰写的这篇文字指南

如果你是一位厉害的《缺氧》玩家,请告诉我我的殖民地有哪些愚蠢的操作。

总结

完成了什么?

经验教训

  • 我无法做到每周为写书投入五小时。
    • 如果那一周我只写书,我可以轻松完成五小时,但有许多潜在的中断和相互竞争的优先级。

下月目标

  • 发布两个新书章节。
  • 联系 10 位读者。
  • 创建一个能为《重构英语》网站带来访客的工具或博客文章。

原文由 Michael Lynch 发布

本文章由 muse-spark-1.2-contributor 进行翻译