我看到很多文章打着写作建议的幌子,实际上只是变相描述自己如何写作,基本就是在说“你应该按我的方式写”,比如写短帖的人说你应该写短帖。和技术话题一样,我认为很多不同的方法都能奏效,真正重要的是找到适合你自己和你所处环境的风格照搬别人成功的方法对你来说很可能行不通,所以“按我的方式写”是个糟糕的建议。

我们先来看看那些成功人士1的写作风格有多么多样化,再回头探讨为什么模仿别人的风格如此困难,最后讨论我在写作中尝试的做法。

如果回顾2000年到2017年3期间,在我社交圈2内最受欢迎的编程博客,那就是Joel Spolsky、Paul Graham、Steve Yegge和Julia Evans(如果你不熟悉这些作者,请看附录中我认为能代表他们风格的摘录)。这个列表上的每个人在以下方面(以及其他方面)都有不同的风格:

  • 选题
  • 散文风格
  • 篇幅
  • 幽默类型(如果有的话)
  • 技术细节的深度
  • 支撑证据的数量
  • 细微差别

拿一个容易量化的方面——篇幅——来说,Julia Evans和我都是在2013年开始写博客的(她有一篇2012年的文章,但她告诉我,她认为自己的博客真正开始是在她加入RC的时候,也就是2013年9月,恰好也是我开始写博客的那个月)。多年来,我们多次交流过心得,直到2017年底我暂停写博客之前,我们博客的总字数差不多,尽管她写的文章数量大约是我的十倍。

再看一些难以量化的方面,比如Paul Graham的这段文字,这很典型地体现了他的风格:

书呆子喜欢的是那种人人都面带微笑的城镇。这排除了洛杉矶——那里根本没人走路;也排除了纽约——那里的人倒是走路,但从不微笑。我在波士顿读研时,有位朋友从纽约来看我。在地铁从机场回来的路上,她问:“为什么这里每个人都在笑?“我看了看,他们并没有笑。只是和她习惯看到的面部表情相比,他们看起来像是在笑罢了。

如果你在纽约生活过,就知道这些表情从何而来。那是个你的大脑可能兴奋不已,但身体却清楚自己正经历糟糕时光的地方。人们并非享受在那里生活,而是为了那份刺激在忍受。如果你喜欢某种刺激,纽约无可比拟。它是魅力的枢纽,吸引着所有半衰期较短的时尚与名望同位素。

书呆子不在乎魅力,所以纽约对他们的吸引力是个谜。

这段文字运用了有时被称为古典风格的多个方面。在这篇文章中,当我说“古典风格”时,指的是托马斯与特纳使用的术语,而非日常含义。其具体内涵实在过于冗长,无法在此文中合理描述,但我要指出其中一点:散文干净、直白、简洁;一位以“删减赘词”为口号的编辑也不会有太多意见。另一点是,这种风格的干净不仅体现在文字上,更延伸至所呈现的信息本身,以至于几乎不提供支撑证据。托马斯与特纳说:“真理无需论证,只需准确呈现。“同时体现这两点的例子,是罗什富科的一段文字:

舍夫勒斯夫人拥有闪耀的智慧、野心和充沛的美貌;她轻佻、活泼、大胆、进取;她用尽所有魅力推动计划走向成功,而她几乎总是给路上遇到的人带来灾难。

托马斯与特纳这样评价罗什富科的这段文字:

这段文字按照一种与作者认知过程无关的顺序呈现真理。作者摆出全知姿态。这种姿态暗示作者拥有广泛而丰富的经验;否则他无法做出这样的观察。但所有这些个人历史、个人经历或个人心理都没有进入表达。相反,这句话将作者的经验结晶成永恒而绝对的序列,仿佛几何证明一般。

这些观点大多适用于保罗·格雷厄姆的文章(尽管并非全部,因为他讲述了一个朋友从纽约来波士顿拜访的轶事,并明确表示“如果你在纽约生活过”就会知道某些事情,而不是直接陈述这些知识)。

我的风格在很多方面恰恰相反。我经常使用冗长、迂回的句子,并非出于特定的文学目的,而只是因为这反映了我思考的方式。斯特伦克与怀特看到我的文字大概会大加批判。在可行范围内,我会尽量构建有结构的论点,并在可能时提供证据,同时注明证据不适用的例外情况。虽然不提供证据能让文章读起来更简洁,但这不是我的选择——因为我不喜欢读者面对“书呆子喜欢的是那种人们走路都面带微笑的小镇”这类断言时只能全盘接受或拒绝,我更希望读者了解我为何如此认为,从而能基于深层原因表示赞同或反对。

在篇幅、风格及其他提到的维度上,并不存在绝对的对错之分。多种方式都能取得不错的效果。不过,如果以受欢迎程度为目标,那么与朱莉娅相比,我在篇幅上可能做出了次优选择;与保罗相比,在散文风格上也是如此。观察他人如何获得关注,以及我的RSS订阅如何获得更多流量、推特粉丝如何增长等现象,我发现频繁发布短篇比偶尔发布长篇更有效。

关于风格对受欢迎程度的影响,我不太确定,但我的感觉是:正如在职场上频繁做出自信陈述能让人获得晋升一样,在写作中发表自信且不加限定的陈述也能吸引读者。人们喜欢自信。

但在这两种情况下,即便做出次优选择,依然可以广受欢迎;而对我而言,我认为优化其他目标比优化受欢迎程度更重要。关于篇幅,我经常探讨那些难以(甚至完全无法)用简短篇幅覆盖的话题。例如我关于分支预测的文章,它有两个目标:为没有分支预测甚至计算机体系结构背景的程序员提供历史综述,并教会他们足够的知识,使其能够阅读并理解一篇现代前沿的分支预测论文。那篇文章长达5800词。我无法想象如何用人们推荐的博客篇幅——500词、1000词、1500词等——来实现同样的目标。文章或许可以精简一些,但所讨论的每个预测器,除了agree预测器外,要么是解释后续预测器所必需的构建模块,要么具有历史重要性。但即便不讨论agree预测器,至少讨论一种干扰减少方案仍然很重要,因为干扰为何发生以及如何减少干扰是分支预测中的基本概念。

这篇文章也可以有其他版本。一篇仅仅解释分支预测存在的文章,或许能用1000词写完。写得好,那篇文章受众会更广、更受欢迎,但那不是我想写的。

在风格上,我也有类似的观点,因为我经常希望以某种细节和精确度来讨论问题,而这排除了用经典风格清晰写作的可能。举一个具体的小例子:在最近一篇文章中,一位草稿读者要求我删掉一个双重否定,我拒绝了,因为那个双重否定与可能替代它的肯定陈述有不同的含义,而我想传达的精确内容,如果简化句子就无法表达。

更普遍的情况是,保罗写了很多高层次的“大思想”。这适合用干净、简单的风格来写——也就是保罗所说的优雅风格。但我不感兴趣写那些脱离底层细节的大思想,而要在不采用保罗所谓不优雅风格的情况下有效讨论底层细节,是很困难的。

一个具体的例子是我对命令行工具和UNIX哲学的讨论。我们是否应该使用那些“只做一件事并把它做好”以及“编写程序处理文本流,因为那是通用接口”的工具,还是使用拥有众多选项并能处理结构化数据的命令?几十年来,人们一直在反复抛出同样的高层面反驳。但一旦我们审视细节,看看这些想法在现实世界中会如何,我们立刻就能发现,其中一套想法根本不可能像宣扬的那样奏效。

回到写作风格上,如果你想弄清楚什么样的风格选择适合你,你应该从你的目标和你的擅长之处出发,而不是听信某个让你模仿他写作风格的人。即使有人能描述清楚自己写作的妙处,模仿他们的风格也不太可能适合你,更何况大多数写作建议都来自那些自己都不理解自己写作原理的人。如果你没有花大量时间分析写作,这一点可能很难看清;但如果你上过很多舞蹈课,或者接受过并非来自优秀教练的体育指导,就很容易明白这是真的。例如,观察普通舞蹈教练,听他们的指令,你会发现他们的指令和他们实际做的动作大相径庭。那些听从指令而非尝试模仿教练动作的人,最终会把动作完全做错。大多数写作建议同样未能抓住关键。

不幸的是,模仿别人的风格也不容易;大多数人完全模仿错了地方。例如,Natalie Wynn指出,模仿她风格的人常常只复制了表面的东西,却不理解这些表面现象背后的驱动力:

我注意到一点是,当人们什么也没说的时候。比如有人想做一个“左派视频论文”,却堆砌一堆华丽的画面,因为ContraPoints这样做,但这些画面和主题毫无关系。这有什么指涉?你想表达什么??

我做了一个关于羞耻的视频,画面是伊甸园中的夏娃,因为夏娃是第一个体验到羞耻的人。所以视觉元素和概念是相连的,希望因此能产生更强的共鸣。所以我想我的建议是:试着表达点什么。

如果你去了解那些在各自领域出类拔萃的人的看法,你经常会看到关于其他领域的类似评论。例如,在实用射击领域,Rob Leatham说:

我在课堂上最投入的事,就是帮学生学会如何思考。他们总说:“罗布的手是这样放的……“却不知道我这样放手并非为了摆出那种姿势。最终目标不是要那样握枪;那样握枪只是做对某件事之后自然呈现的结果。

而布莱恩·伊诺斯说:

刚开始……射击时,我对技术只有些基本概念。于是做了自认为最合理的事:找到本地最优秀的射手(他在全国比赛也很有竞争力),问他该怎么射击。他毫不犹豫地告诉我:左手食指搭在扳机护圈上,左肘弯曲并向后拉,经典拳击手站姿,等等等等。我盲目地采用这套体系一两年后,才开始思考是否有更适合我身体结构和态度的体系,以及更契合射击本质的体系。最初采用的风格并不适合我,因为感觉总在费力控制枪支;从未像现在这样与枪支融为一体。我的实验让我从各种射击风格中汲取灵感:等腰式、改良韦弗式、靶心式,以及比尔·布兰肯希普、霰弹枪手约翰·萨特怀特、武术家李小龙等人的理念。

但来自环境的想法只能指引你走向正确方向。这些想法本质上会限制你的思维……伟大的想法源于你内心的感受。这种直觉意识会让你接纳一切适合你的东西,摒弃一切不适合的。

我引用这些例子是因为它们被写进了书里,但我在各种活动的教练那里也听到过类似说法——比如我交谈过的舞蹈教练抱怨说,人们会问某个动作中左脚应该交叉到右脚前还是后,这完全抓不住重点,因为关键在于脚的位置是否合理取决于人体重心的移动方式,这意味着根据具体情况,脚可能交叉到前或后。

更普遍的问题是,不理解模仿对象的人最终只会复制别人表面上的次要细节,而错过驱动这些表象的根本原理。即便有非常详细的指导,这种情况也会发生。虽然观察他人做法能加速学习(尤其对毫无头绪的初学者而言),但要想深刻理解某件事并做好它,并没有捷径可循——这种理解无法被简化为“删减赘词”4之类的简单规则。

因此,我认为风格应当源于目标,而目标归根结底是个人偏好。就我个人而言,我有时会设定以下目标:

当你将这些目标之一与深入探讨细节的偏好结合起来时,就会形成一种与上述任何作者都不同的风格——即使你想像史蒂夫·耶格那样有效运用幽默,像朱莉娅·埃文斯那样面向广泛读者,或像保罗·格雷厄姆那样权威地写作。

在思考我写作的主要组成部分时,除了风格和目标之外,我认为驱动我写作方式的主要因素是流程。与风格一样,我认为流程也是多种多样皆可奏效的东西,关键在于你自己去摸索什么适合你。

就我自己而言,在开始写博客时,我设定了以下流程目标:

  • 前期投入低,尽可能减少摩擦,如果持续写博客,或许随着时间推移逐步增加投入
  • 每写一篇文章就提升写作技巧/能力,不过分担心某篇文章的写作质量
  • 只有当我感觉有值得发布的内容时才发布
  • 写一个我自己愿意订阅的博客
  • 在自己的平台上写作

低前期投入的目标源于我观察博客时发现的一种常见模式:许多博客只有一篇宣布开博的帖子,或附带一篇介绍搭建过程的帖子,之后就再无更新。另一种常见模式是:博客初期定期更新,随后进入长期沉寂,最后以一篇“准备重新开始更新”的帖子收尾,之后便再无下文(有些博客甚至会出现多篇此类帖子,且间隔时间越来越长)。鉴于持续写博客的人比例极低,我认为在确认自己会长期写作前,不值得在博客基础设施上投入太多。因此,尽管当时已拥有这个域名,我既没研究如何将其指向GitHub Pages,也没立即配置流行博客软件,直到写完第一篇文章后才着手搭建。事后看来,选择Octopress(Jekyll)是个重大失误;当时选择它是因为身边一群热衷潮流的朋友都在用,但“需要组织Octopress搭建日”这种麻烦程度本身就是危险信号。事实证明,它不仅搭建过程令人抓狂,还存在大量兼容性问题,采用的开发模式导致无法获取上游更新,而且运行极其缓慢(没过多久,构建博客就需要整整一分钟——对区区几篇博文进行“编译”简直是荒谬的时间消耗)。我本应要么先用纯HTML写几篇文章,再将其转为自定义静态网站生成器,要么使用WordPress——几分钟就能搭建完成,迁移或转移也毫无压力。但低前期投入策略的弊端之一,就是让我放弃了调研,盲目相信周围人的选择都是合理的5。总的来说,我仍然认同控制启动成本的理念,但如果当初能摒弃所有标准建议,要么选择最简方案,要么采用过时但可靠的工具,本可以省去大量麻烦。

“提升写作”这个目标,是因为我发现自己的文字别扭得让人难受,想解决这个问题。我经常写出一些自己觉得生硬的句子或段落,就像拼错单词时,无论怎么重新拼写都看着不对劲。如今拼写检查工具已经非常普及,你基本不会再遇到拼写问题,但我们还没有能自动改善写作的工具(虽然有些尝试,但往往会产生糟糕的写作)。我没有为某篇具体的文章担心,因为我觉得自己可以花上好几年时间打磨写作,而且认为花几年时间反复编辑一篇文章并不会让人满意。

正如我们之前讨论过的,获得反馈能大大加快技能习得的速度,所以我雇了一位我欣赏其文笔的专业编辑,并指示说:“我的文字生硬别扭,我想改进。我不太在意拼写和语法问题。你能从这个角度帮我编辑吗?”我收到了许多文章详细的反馈。我努力修正反馈中提到的问题,但更重要的是,我尝试在写下一篇新文章时避免出现相同或之前提过的其他问题。我学东西可能有点慢,所以有时需要几篇文章才能解决一个问题,但随着时间的推移,我的写作水平提升了很多。

只在我想发布的时候才发布,是因为我通常更喜欢过程目标而非结果目标,至少对于个人目标是这样。我最初设定了一个每月花一定时间写博客的目标,但当我意识到无论是否把它当作义务,我往往都会花足够多的时间写作时,就放弃了那个目标。我认为,对于博客写作,结果目标对某些人确实有效(比如“每周发布一篇文章”),但如果你的目标是提升写作质量,结果目标可能会适得其反(例如,为了在有限时间内达成“每周发布一篇文章”的目标,有人可能会专注于把东西发出去,而不去思考如何提升质量,因为从结果目标的角度看,提升质量是浪费时间)。

设定一个“写出我愿意订阅的内容”的目标,当然是非常主观的。其他博客中有很多我不喜欢的东西,所以我尽量避开。举几个例子:

  • 将原本可以是一篇完整的文章拆分成大量零碎的小帖子
  • 标题党
  • 反复就同一话题写博客,却毫无新意
    • 其中一种子类别是:持有某种观点,然后每当出现一条证实该观点的证据就写博客,而对反驳该观点的证据却只字不提
  • 没有提供 RSS 或 Atom 订阅源

在自己的平台上写作是其中最微不足道的一点。主要原因在于平台本身的变迁。我开始写博客时,已经有不少平台兴起又消亡。最近一次是 Twitter 收购了 Posterous 并将其关闭。Posterous 曾一度是最热门的平台,而 Twitter 决定彻底关停它,导致许多 HN 历史最高赞帖子的链接失效,以及其他内容。Blogspot 曾是热门写作平台,后来被 Google 收购,之后许多网站的读者体验严重下降。避开热门平台一直是个明智的选择。我开始写博客时,人们纷纷涌向的两个热门平台是 Svbtle 和 Medium。我开博后不久,Svbtle 就基本被放弃了,因为 Medium 在受众规模上明显压倒了 Svbtle。而 Medium 始终未能找到良好的盈利模式,在融资 1.6 亿美元后,为了创造足够收入来支撑其估值,严重损害了读者的用户体验。你无法信任别人的平台不会在你脚下消失,或者为了利润而彻底改变。

另一件我想做的事,是在属于我自己的空间里写作(而不是在互联网评论里)。我以前写过很多HN评论6,但HN评论的半衰期很短。除了极少数例外,一条评论几乎所有的浏览量都会集中在最初几天。而博客则恰恰相反。一篇文章最初可能会迎来一波流量高峰,但只要你持续写作,大部分流量会在之后到来(例如,我的博客在文章登上HN时,浏览量大约是平时的两倍,当然大多数日子并没有文章上HN)。写一篇“真正的博客文章”和写一条HN评论相比,工作量其实并没有大多少,所以我更倾向于写博客文章而不是HN评论。此外,当我在这里写作时,创造的大部分价值由我和读者共享。如果我在别人的平台上写作,大部分价值就会由平台和读者共享。如果我要做视频,可能除了YouTube或Twitch之外别无选择,但就文字而言,我确实有选择的余地。看看那些做出不同选择、决定为平台写评论的人后来怎么样了,我认为我在合适的时机做出了正确的选择。我确实理解在现有平台上评论能降低摩擦的吸引力,但即便如此,我宁愿承担额外摩擦的成本,在自己的空间里写作,而不是在别处。

所有这些加在一起,基本上就是全部了。这就是我写作的方式。

与其他博主不同,我不会试图告诉你“如何写出有用的内容”或“如何写好文章”之类的东西。我同意Steve Yegge的说法,他认为你应该考虑写作,因为它潜在价值很高,而且这种价值可能会以你意想不到的方式显现出来,但如何写作,真的应该源自你的目标和能力。

附录:方法随时间的变化

刚开始写博客时,我总担心一篇文章如果只包含一个简单的想法会不够有趣,所以常常等到能把两个或更多想法合并到一篇文章里才动笔。现在回想起来,早期很多文章如果拆成独立篇章效果反而更好。比如2016年这篇关于薪酬的文章,既包含薪酬可能呈现双峰分布的观点,又提到相比金融、法律、医学等同样高薪的行业,程序员入行门槛低得惊人。我觉得把这两个观点硬凑在一起并没有增值效果,如果单独成文,关于“程序员薪资异常高”这部分内容本应有更多读者关注。

另一个我过去常犯的错误是回避写那些看似显而易见的内容。但现在我逐渐认识到,记录显而易见的事情其实很有价值,我那些影响力最大的文章里,有好几篇都是关于过去我会觉得“太浅显不值得写”的话题:

排除近期这些文章,告诉我https://danluu.com/look-stupid/改变了他们行事方式的人,比其他所有文章的总和还多(之所以差距不大,是因为很多人告诉我,我关于薪酬的讨论让他们意识到可以找到更满意的工作,同时年薪还能比之前多赚几十万美元——这套文章也引来了最多“这有什么好写的,谁不知道科技行业能赚多少钱”的评论)。

我最近尝试的一个重大风格转变是增加案例。这源于Ben Kuhn的建议,目前我很喜欢这种写法。相比多数博主,我早期文章其实并不缺案例,但我发现刻意增加比自然倾向更多的案例,能显著帮助读者理解;“大量”案例能降低读者产生与我的本意截然不同解读的概率。具体例子是,在讨论如何达到95分位水平的文章里,我只举了两个案例,结果很多人自行脑补,把远超99.9分位的水平当作95分位,比如认为成为国际象棋特级大师就是95分位水平。

另一个做出这种改变的人是Jamie Brandon。如果你读过他早期的文章,比如这篇,会发现他常有精妙的观点和漂亮的措辞,比如这段关于和Chris Granger一起做Eve项目时的感悟:

人们常告诉我,命令式编程是编程的自然形式,因为“人的思维是命令式的”。我能理解他们的想法。就在前几天,我还听到自己说:“嘿,克里斯,我饿了。我需要你走进厨房,打开橱柜,拿出一袋面包,拆开袋子,取出一片面包,把它放在盘子上……”不幸的是,我忘了说明盘子在哪里,于是克里斯抛出了一个空指针异常,然后挂了。

但尽管他早期的文章有些部分确实引人入胜,却常常与现实世界有些脱节——杰米回顾自己过去的博文时,并不喜欢这一点。关于增加细节,杰米表示:

聚焦具体案例并尽可能保持具体的关键在于:a) 降低我犯错的可能性,因为抽象概念很难被证伪,我很容易自欺欺人;b) 让读者更可能吸收我想传达的观点,而不是某个同样符合模糊表述的、表面相似的想法。

例子就像把想法钉住,这样它们才能被仔细审视。

另一个重大变化——也是我在此唯一要讨论的、真正称得上散文风格的变化——是我更加努力地写作时保持某种常被称为“叙事语法”的连贯性。Nicola Griffith的这篇文章在句子层面给出了一些例子,但我也尝试在更大的写作结构中思考这一点。我不认为自己在这方面特别擅长,但多思考这一点让我的文章更容易被理解。这一变化,尤其是在较大尺度上,确实得益于与一位专业编辑的合作,他擅长发现那些让文章难以理解的结构性问题。但同时,如果某个内容有理由难以理解,我也不会过分担心。一个具体的例子是,如果你阅读ask metafilter或Reddit上问题的回答,任何结构上不简单的问题,都会有很大一部分回答来自那些没有仔细阅读问题、答非所问的人。例如,如果有人问一个包含两个部分、用and连接的问题,很多人只会读到and的一半,然后给出一个明显被and条件排除的回答。如果很多人连一个简短的问题都不愿仔细阅读,从而写出满足and两部分的回答,那么很多人也不会去理解别人可能想写的最简单的东西。我认为,试图引导一个连and两边都不愿读的人去理解一篇结构化的文章,对作者来说并不划算;但我确实认为,努力避免“叙事语法”问题是有价值的,这些问题可能会让那些真正想读的人更难理解。

附录:获取反馈

正如我们之前讨论过的,反馈可以极大地促进进步。不幸的是,那篇文章中关于95%分位表现通常很差的观点,同样适用于反馈,这使得大多数反馈适得其反。

我花了很多时间观察人们在私下渠道获取反馈,以及他们如何根据反馈修改自己的写作。至少在我观察的渠道中(程序员,而非专业作家或编辑的评论),大多数反馈都被忽略了。而当反馈被采纳时,由于几乎所有反馈都很糟糕,而且人们通常不擅长甚至不太能挑出好的反馈,被采纳的反馈通常也是糟糕的。

从根本上说,大多数反馈都存在本文提到的问题,是一种“你应该按我的方式写”的形式。除非提供反馈的人非常谨慎地给出建议(但很少有人能做到),否则这种反馈通常无效。这些反馈往往是肤浅的建议,忽略了写作中严重的结构性问题。此外,反馈还倾向于成为“最低共同标准”式的建议,将优美的文笔变成斯特伦克-怀特式平庸的散文。我不认为自己有特别优美的文风,但我见过许多天生文笔优美的人向程序员寻求反馈,结果他们的写作变成了任何人都能写出的乏味文字。

另一方面,当人们得到我认为优质、有实质性的反馈时,最常见的回应是“不,这样挺好”。我认为这是大多数反馈“你应该按我的方式写”的另一面——大多数人对反馈的回应是“我想按自己的方式写”。

尽管本文重点讨论了多种风格如何能奏效,但同样真实的是,给定一种风格和一组目标,写作可以更好或更差。然而,大多数接受反馈的人对写作了解不足,无法判断什么更好、什么更差,因此他们分不清好反馈和坏反馈。

解决这个问题的一个方法是向自己信任其判断力的人寻求反馈。正如文中提到的,我采用的方式是聘请一位我尊重其写作(和编辑)能力的专业编辑。

我做的另一件事——这是我性格的核心方面,并非专门针对写作——是相对认真地对待反馈,并尽量避免对反馈产生“不,这样挺好”的反应。我不会说这是最优解,因为我有时会在糟糕的反馈上花费过多时间,但我思考方式的核心是:我意识到大多数人过于自信,并因这种过度自信而频繁犯错,因此我不信任自己的推理,并投入相对大量的时间和精力思考反馈,以降低自己的过度自信率。

有时,我会花上可笑的长长时间反复琢磨那些事后看来非常糟糕且“明显”错误的反馈,却不敢轻易将其否定为错误。我注意到一件事:随着人们获得更多受众,有些人会变得越来越自信,最终变得极度自负。这很容易理解——随着你声名鹊起,你会获得更多曝光和更多认为你永远正确的“粉丝”,同时也会收到更多“明显”糟糕的评论。

以前几乎没人看我博客的时候,收到的评论大多质量不错。随着读者越来越多,优质评论的比例反而下降了。观察别人如何处理这个问题时,我发现一个常见的失败模式:他们看到自己文章引来大量明显错误的评论后,会错误地认为所有批评者都是蠢货,自己基本永远不会犯错。对此我没什么特效药,只能说“认真对待批评”。由于这种失败模式涉及判断盲区,我看不出有什么简单方法能既认真对待某条批评,又不会因盲区而错误地忽视它。

从根本上说,我的解决方案是:避免查看大多数反馈,同时努力采纳我信任之人的意见。

关于行文问题——我们之前讨论过——聘请一位我尊重其写作和编辑能力的专业编辑,在文笔问题上听从他的建议,效果很好。

至于逻辑严谨性或普遍趣味性,这些更难外包给单个人。我有一群我信任其判断力的人,他们会审阅大部分文章。只要其中任何一人觉得某篇文章有趣,我就视作强有力的肯定,基本忽略那些说文章无聊的评论。在我那些被许多人称为“改变人生”的顶级文章中,几乎每篇都收到过一些(我通常认为其判断力尚可的)人评论说文章无聊、毫无意义、过于浅显或纯粹无趣。过去我会认真对待这类“无趣”评论,但回想起来,那是个错误——既耗费大量时间,又没提升写作水平。我认为这与说“按我的方式写作”的人并无本质区别:只是这些人拥有相似的思维模型,只不过针对的是“趣味性”——他们无法想象别人会觉得他们不感兴趣的东西有趣。当然,并非所有人思维都如此,但那些擅长预判他人兴趣点的人通常不会留下“这很无聊/毫无意义”的反馈,因此这类反馈几乎注定毫无价值。

关于论证的严谨性,我采取与趣味性相反的态度:我非常重视负面评论,而对正面评论则不太在意。有时,正因为如此,我在某些帖子上浪费了大量时间。我的应对方法是尝试忽略那些经常给出糟糕反馈的人的意见。我认为这样做存在风险,因为选择性忽视反馈很容易制造信息茧房,但当我找不到逻辑漏洞时,认真思考这些反馈又极其耗时——考虑到收到反馈后我需要重新评估自己的作品,我实在想不出其他替代方案。

最近我开始尝试一个新方法,这让我感觉好多了:观察别人收到的反馈。那些给我糟糕反馈的人,通常给别人提的意见也以完全相同的方式糟糕。既然我并不担心自己存在某种认知偏差,会误以为他们的反馈在针对他人文章时是错误的,那么与其花几小时琢磨自己解释中是否存在遗漏的漏洞,不如花几分钟看看他们对他人的反馈有多荒谬,然后发现他们给我的反馈也以完全相同的方式荒谬。

附录:我的灵感来源

经常有人问我如何获得灵感。原本我不打算谈这个,因为实在没什么可说的,但本·库恩强烈建议我加上这段,“好让别人意识到你有多另类”。

我的感受是,这个世界充满有趣的事物,灵感无处不在。我手头大概有上百篇草稿,基本都能发表,只是出于各种原因还没优先完成。如果算上那些在脑中构思过但未落笔的想法,数量肯定超过数千。就算我辞掉工作全职写作直到去世,我认为自己也不会灵感枯竭——哪怕只写已经想到的点子。这个世界广阔而奇妙,处处都藏着令人惊叹的细节。

例如,我最近开始玩冲浪皮划艇(一种皮划艇运动),几周后,我大概有了二十多个博客选题,我觉得这些选题可以面向普通读者来写——就像这篇关于分支预测的文章一样,不要求读者具备硬件背景。我可以写两篇关于独木舟桨演变与设计的技术文章,再写两篇关于文化因素如何影响不同独木舟桨设计更新的文章。而皮划艇桨的设计在近代历史中要丰富得多,这又能轻松写出五六篇文章。船体设计的技术层面更加丰富,简直是取之不尽的选题来源——虽然我目前只想到四个具体选题,但文化和历史方面也让我很感兴趣,这正好凑齐了我脑海中关于这个主题的二十个想法。

我之所以能想到二十个关于皮划艇和独木舟的选题,并不是因为我对它们特别着迷。实际上,任何事物都足够有趣到能写出二十篇文章。我现有的许多文章,如果我有时间继续写下去,都可能发展成更长的系列。例如,这篇关于棒球决策的文章在我设想中本是一个关于决策的较长系列(十篇以上)的第一篇,但我始终没抽出时间继续写,而且我怀疑自己永远不会写了——因为值得写的有趣东西太多,时间却总是不够用。

附录:关于写作的其他思考

附录:能提升流行度但我通常不采用的做法

以下是我根据观察他人有效做法总结的一些建议(虽然我自己并不采用),但如果你想吸引更广泛的受众,或许可以尝试其中一些:

  • 使用标题党式标题
    • 咒骂、称某事“是毒瘤”或“是X领域的越南战争”等高度情绪化的措辞似乎特别有效
  • 夸大资历/成就/头衔
  • 采用权威口吻和/或风格
  • 撰写带有愤怒语气或旨在引发愤怒的内容
  • 保持高频更新
  • 获取他人背书
  • 撰写热门时事话题
    • 对近期事件发表观点
  • 故意采用离谱/有争议的框架讨论话题

附录:写作片段示例

如果你不熟悉文中提到的作者,以下是我认为能代表他们写作风格的片段:

Joel Spolsky:

我真正在意的是,微软正在疯狂吸纳过多的程序员。一边是微软,他们的阴暗招聘人员向毫无防备的大学生发出不道德的限时录用通知;另一边是谷歌(你已进入我的视线),他们向那些极限飞盘经验比Python更丰富的年轻人支付难以维持的薪资,这些人的主要工作就是在谷歌园区玩桌上足球,然后四处找人……随便谁都行……来看他们用“20%时间”刚写好的演示代码,做着某种——让我猜猜——云端同步……在微软和谷歌之间,一个聪明的计算机科学毕业生的起薪正危险地逼近六位数,而这些聪明的孩子,我们大学的精英,却在研究无望且无用的架构天文学,因为这些公司就像癌症一样,不惜一切代价追求增长,尽管他们想不出任何对我们有用的东西可建,但下周他们还需要3000-4000名计算机科学毕业生。而且该死的,桌上足球可不会自己玩。

以及

1991年我开始面试程序员时,通常允许他们用任何语言解决我给出的编程问题。99%的情况下,他们选择C语言。如今,他们倾向于选择Java……Java通常不是一种足够难的编程语言,无法用它来区分优秀程序员和普通程序员……一个全Java的计算机科学学位根本无法真正淘汰那些缺乏处理这些概念所需思维敏捷性的学生。作为雇主,我发现那些100%采用Java教学的学校开始批量产出一些计算机科学毕业生,他们根本不够聪明,无法从事比“又一个Java会计应用”更复杂的编程工作,尽管他们确实勉强通过了新近降低难度的课程。这些学生永远无法在麻省理工的6.001课程或耶鲁的CS 323课程中生存下来,坦率地说,这就是为什么作为雇主,麻省理工或耶鲁的计算机科学学位比杜克大学(最近全面转向Java)或宾夕法尼亚大学(用Java取代了Scheme和ML)的学位更有分量。

保罗·格雷厄姆:

几年前,一位风险投资家朋友告诉我他参与的一家新创业公司。听起来很有前景。但下次我跟他聊天时,他说他们决定在 Windows NT 上构建软件,并且刚聘请了一位经验丰富的 NT 开发者担任首席技术官。听到这话时,我想,这些人完蛋了。第一,这位 CTO 不可能是顶尖黑客,因为要成为杰出的 NT 开发者,他必须自愿多次使用 NT,而我无法想象一位伟大的黑客会这么做;第二,即使他本人很优秀,如果项目必须基于 NT 构建,他也很难招到优秀的人为他工作。

以及

什么样的人会成为仇恨者?任何人都可能成为吗?我不太确定,但我注意到一些模式。仇恨者通常在一个非常特定的意义上是失败者:尽管他们偶尔有才华,但从未取得过什么成就。事实上,任何成功到获得显著名声的人,都不太可能因此认为另一位名人是个骗子,因为任何名人都知道名声是多么随机。

史蒂夫·耶格:

当我第一次读这本书时,是 2003 年 10 月,我感到一种可怕的寒意,就像你突然意识到自己已经穿着裤子掉到脚踝来上班五年了。第二天我随意问了问:“嗯,呃,你当然读过那本《重构》书,对吧?哈,哈,我问只是因为我很早以前就读过,不是现在才读,当然。“我调查的 20 个人中只有 1 个人读过。谢天谢地,我们所有人都穿着裤子掉到脚踝,不只是我。

这是一本关于如何编写好代码的精彩书籍,像这样的书并不多。也许没有。学校通常不教你如何编写好代码,你可能在工作中永远学不到。可能需要几年时间,但你仍然可能错过一些关键思想。我当然也是如此。……如果你是一位相对有经验的工程师,你会认出书中 80% 或更多的技巧是你已经摸索出来并开始习惯性做的事情。但它给它们都起了名字,并客观地讨论了它们的优缺点,我觉得这非常有用。它还揭穿了我从编程初期就珍视的两三个实践。不要注释你的代码?局部变量是万恶之源?这家伙是疯子吗?读一读,自己判断吧!

杰夫·贝佐斯是个臭名昭著的微观管理者。他连亚马逊零售网站上的每一个像素都要亲自过问。他雇了苹果首席科学家拉里·特斯勒——大概是全世界最著名、最受尊敬的人机交互专家——然后整整三年对拉里说的每一句话置若罔闻,直到拉里最终明智地离开了公司。拉里做了大量可用性研究,毫无疑义地证明没人能看懂那个破网站,但贝佐斯就是放不下那些像素,首页上那几百万个满载语义的像素。它们就像他亲生的百万个孩子。所以它们都还在那儿,而拉里不在了。

顺便说一句,微观管理并不是亚马逊比我们做得好的第三件事。我是说,没错,他们微观管理确实很在行,但我不会把它列为优势之类的。我只是想交代背景,帮你理解发生了什么。我们说的是一个在很多公开场合都一本正经地说过“人们应该付钱给他才能来亚马逊工作”的家伙。他发那种印着他名字的黄色便利贴,在别人不同意他时提醒“谁才是公司老板”。这家伙简直就是……嗯,史蒂夫·乔布斯吧。只是没有时尚感或设计感。贝佐斯超级聪明;别误会。他只是让普通的控制狂看起来像嗑了药的嬉皮士。

朱莉娅·埃文斯:

现在我正坐着一趟从纽约到蒙特利尔的百万小时火车。所以我在看strace的输出,因为,呃,strace很酷,它教会了我一些关于我日常使用的命令行工具是如何工作的。

strace的作用是捕获执行程序时调用的每一个系统调用。系统调用是用户空间程序与内核之间的接口,所以查看strace的输出是理解Linux工作原理以及运行程序真正涉及什么的有趣方式。

例如!killall!我运行了

strace killall ruby1.9.1 2> killall-log.

附录:GPT-4o认为人们如何写作

[2024年更新]

我见过不少人吹捧GPT-3、GPT-3.5和GPT-4“模仿”某人并创作出符合其风格作品的能力,让你能阅读假设性的文章或与某人进行假设性的对话。我发现这通常效果不佳。以下是用提示词“生成一段200字关于微软的引文,风格像X可能写的东西”得到的结果(我试过其他提示词,效果同样糟糕,内容、语气和风格与这些人的实际产出相差甚远):

乔尔·斯波尔斯基:

微软堪称工程卓越与商业智慧复杂交织的典范。它不只是一家开发软件的公司,更是一头触角遍及四面八方的巨兽,历经数十年,成功渗透到科技行业的几乎每个角落。它有过失误——谁还记得Clippy或Zune?——但也取得了辉煌的成功。微软的魔力在于其转向与适应的能力,常常能将看似巨大的失误转化为战略中不可或缺的一部分。

它最初的霸主地位建立在Windows和Office之上,这对强大的组合定义了数十年的个人与企业计算。但真正令人着迷的是它的演变。在纳德拉的领导下,微软从一头笨重的巨兽转变为灵活的创新者,全力投入Azure云服务,并拥抱了它曾经排斥的开源社区。它构建了一个强大且——我敢说——充满乐趣的开发者生态系统。微软如今已不再仅仅关乎软件;它关乎平台、服务,以及一个不断扩展的互联工具宇宙。它证明了,即使是最庞大的公司,只要愿意不断反思与重塑自我,就能保持其相关性。

微软的发展历程堪称科技界以适应性战胜惰性的经典范本。创业初期,这家公司完美诠释了初创企业抓住机遇的生存法则——从两人小团队起家,通过智取规模更大、根基更稳固的竞争对手,最终成长为行业巨擘。他们深谙软件商品化之道,构建的生态系统让个人电脑成为普世现实。然而成功催生了自满。多年来,微软固守Windows和Office这两棵摇钱树,错失了移动与互联网革命,眼睁睁看着更年轻灵活的对手重塑行业格局。但微软的故事并未就此终结。在萨提亚·纳德拉富有远见的领导下,公司重拾创业初心,以堪比初创时期的热情转向云端、拥抱开源。这种在行业剧变中自我革新、重塑定位的能力,正是微软保持生命力的关键。它给所有初创企业和科技巨头上了生动一课:基业长青的秘诀不仅在于创新,更在于永不停歇的自我重塑。在微软的世界里,唯一不变的就是变化本身,而这家公司真正的天才之处,在于其始终如一的适应与繁荣能力。

微软是一个值得深入探索的迷人实体,尤其当你热衷于钻研技术细节、观察他们如何驾驭复杂性的规模化时。在很长一段时间里,只要使用电脑就绕不开这个庞然大物。Windows和Office就像呼吸的空气般无处不在、不可或缺。但真正令人玩味的是微软的蜕变历程——他们从桌面系统的守门人,蜕变为云计算的先驱和开源运动的倡导者。

看看Azure吧。这个庞大的基础设施为从小型初创企业到大型跨国公司的各类实体提供动力,让开发者只需点击几下就能在全球部署代码。再看看他们对开源的拥抱。还记得他们收购GitHub的时候吗?那标志着微软认真支持开发者社区的决心。这绝非公关噱头——他们正积极贡献甚至主导着数百万用户依赖的开源项目。

他们的工具已成为无数人的必需品。比如Visual Studio Code,用起来令人愉悦——轻量、快速、可扩展,完美诠释了微软如何学会打造开发者钟爱的产品。这是一家不惧自我革新的公司,正因如此,它让我们的技术生活变得更美好、更有趣。

感谢Yossi Kreinin、Ben Kuhn、Laurence Tratt、Heath Borders、Jamie Brandon、Julia Evans、Vegard Nossum、Julien Kirch、Bram Delver和Pam Wolf的评论/修正/讨论。


  1. 成功的定义因人而异,但本节我们将聚焦热门博客——因为我认识的人中,那些在坚持写博客一段时间后沮丧停更的,最常见的原因就是博客基本没有读者。

当然,很多人写作时并不以拥有读者为目标,有些人甚至试图避免拥有超过少数读者(通过某种方式“锁定”文章,使其仅对“朋友”可见)。但我认为,即使目标只是让少数朋友阅读博客,“什么方法有效”这一概念依然非常宽泛,且多种不同风格都能奏效的观点并不会因此改变。

[返回] 2. 这相当主观。在其他社交圈中,Jeff Atwood、Raymond Chen、Scott Hanselman等人也可能在名单上,但这不会改变论点,因为所有这些人的风格也彼此不同,且与我的名单上的人不同。[返回] 3. 以2017年为终点,是因为大约在那时我减少了对编程互联网文化的关注,也不清楚2017年后我认识的人在读什么。[返回] 4. 在体育领域,真正掌握如何引导人们做正确动作的精英教练能极大加速学习;但在体育之外,尽管不乏愿意提供指导的人,却很少能找到真正懂得如何给予学生提示,帮助他们比单纯凭直觉衡量自身行为并稍加反思更快达到正确状态的教练。[返回] 5. 事实证明,写博客对我非常有益(例如,我的博客让我得到了现在的工作,促成了我与相当一部分朋友的相识,还让人们给我发送各种关于行业动态的有趣故事等),但我不认为这在开始写博客前是可预测的结果。根据基础概率,我猜测最可能的结果是失败。[返回] 6. 例如这条关于编程工作相比其他高薪工作有多轻松的评论(后来演变为这篇关于程序员薪酬的文章的后半部分)、这条关于写作报酬的评论,以及这条关于桌游设计演变的评论[返回]