最近有人问我:“你如何处理公开写作?网上的人都是混蛋!”
我经常听到“不要阅读评论”的建议,但实际上,多年来,我从陌生人对我的帖子的网络评论中学到了很多东西,即使有时人们是混蛋。因此,我想解释一些我用来尝试让我的帖子上的评论对我来说更丰富、更有用的策略,并尽量减少我收到的恼人评论的数量。
谈论事实
在这里我主要谈论事实——要么是关于计算机的事实,要么是关于我使用计算机的经历的故事。
例如,这篇关于 tcpdump 的文章包含有关如何使用 tcpdump 的一些基本事实,以及我过去如何使用它的示例。
谈论事实意味着我会得到很多基于事实的评论,例如:
- 人们分享自己相似(或不同)的经历(“我经常使用 tcpdump 来查看我们的 RTP 序列号”)
- 指向其他资源的指针(“F5 关于 tcpdump 的文档很棒”)
- 我没有提到的其他有趣的相关事实(“你也可以使用 tcpdump -X”、“Windows 上的 netsh 很棒”、“你可以使用
sudo tcpdump -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
过滤 HTTP GET 请求) - 潜在的问题或陷阱(“以 root 身份运行 tcpdump 时要小心,尝试只设置所需的功能”)
- 问题(“有没有办法在 IP 数据包重组后放置 BPF 过滤器?”或“tcpdump 相对于wireshark 有什么优势?”)
- 我犯的错误
总的来说,我想说人们对事实的评论往往很正常。我收到的有关事实的负面评论主要有:
- 有时,人们会对我没有提到的事实感到有点粗鲁(“在任何示例中都没有使用 -n……请……”)。我想我在那篇文章中没有提到
-n
,因为当时我不知道为什么-n
标志很有用(它很有用,因为它关闭了 tcpdump 默认情况下执行的烦人的反向 DNS 查找,因此您可以看到IP 地址)。 - 人们有时也会对错误感到奇怪。我主要是通过尝试自我了解我在某个主题上的知识水平来阻止这种情况,并在我不确定某件事时说“我不确定……”。
故事很棒
我认为故事可以激发很好的讨论。例如,为什么你应该了解(一点)TCP是一个关于对我来说了解 TCP 工作原理非常重要的时代的故事。
当我分享我解决的问题的故事时,这些评论确实帮助我理解我所学到的知识如何适应更大的背景。例如:
- 这是个常见的问题吗?人们经常评论说“这也发生在我身上!”
- 还有哪些其他常见的相关问题?
- 还有其他我没有考虑的可能的解决方案吗?
另外,我认为这类故事非常重要——那篇文章描述了一个对我来说非常难以解决的错误,而我首先能够弄清楚它的唯一原因是我阅读了这篇博客文章。
问技术问题
我经常在我的博客文章中提出我不知道答案的技术问题(或者只是提到“我不知道 X…”)。这有助于人们集中回复——一个明显的评论是提供问题的答案,或者解释我不知道的事情!
这很有趣,因为这感觉像是一种从人们的评论中获取价值的有保证的方式——人们喜欢回答问题,所以他们看起来很聪明,而我得到了我的问题的答案!每个人都赢了!
修正错误
我在博客文章中犯了很多错误,因为我写的很多东西都超出了我的知识范围。当人们指出错误时,我经常编辑博客文章来修复它。
通常,在发布博客文章后,我会在计算机旁边呆上几个小时,以便在出现错误时能够快速修复。
有些人非常小心地列出他们在博客文章中犯的每一个错误(“勘误表:该帖子之前说的是 X,这是错误的,我已将其更正为 Y”)。就我个人而言,我经常犯错误,但我没有时间这样做,所以我只是编辑帖子来修复错误。
询问例子/经验,而不是意见
很多时候,当我发布博客文章时,Twitter/Mastodon 上的人们会回复他们对此事的各种看法。例如,有人最近回复了一篇有关 DNS 的博客文章,称他们喜欢使用区域文件,而不喜欢用于管理 DNS 记录的 Web 界面。我不同意这个观点,所以我问他们为什么。
他们解释说,他们发现 Web 界面通常不支持某些 DNS 记录类型(特别是TLSA
)。我不知道人们使用TLSA
记录,所以我学到了一些东西!凉爽的!
我发现,要求人们分享他们的经验(“我想使用 X DNS 记录类型,但我不能”)而不是他们的意见(“DNS Web 管理界面很糟糕”)会带来很多有用的信息,并且讨论。多年来我从中学到了很多东西,并写了很多推文,例如“您需要哪种 DNS 记录类型?”尝试提取有关人们经历的更多信息。
如果可以的话,我会尝试在自己的工作中模拟相同的行为——如果我有意见,我会尝试解释我在计算机方面的经历,这些经历导致我有这样的意见。
从一些背景开始
我认为当网络陌生人不知道你是谁或你为什么写这个东西时,他们更有可能以奇怪的方式回复。很容易做出错误的假设!我经常会提到一些关于我为什么要写这篇博文的背景信息。
例如:
不久前,我开始使用 Mac,最大的挫败感之一是我经常需要运行特定于 Linux 的软件。
或者
我最近开始运行更多服务器(nginx 游乐场、dns 混乱、dns 查找),所以我一直在考虑监控。
或者
昨晚,由于一些官僚原因,我需要扫描一些文件。我以前从未在 Linux 上使用过扫描仪,我担心这需要几个小时才能弄清楚……
避免引起无聊的谈话
我觉得有些类型的编程对话非常无聊(比如“人们应该学习 vim 吗?”或“函数式编程比命令式编程更好吗?”)。因此,我通常会尽量避免撰写我认为会导致我觉得烦人或无聊的对话/评论线程的博客文章。
例如,我不会写我对函数式编程的看法:我对此没有什么有趣的可说,而且我认为这会导致一场我不感兴趣的对话。
当然,我并不总是能成功(不可能预测人们会想要评论什么!),但我尽量避免我过去见过的最明显的煽动诱饵。
有很多“诱饵”触发器可以让人们开始我觉得无聊的对话:加密货币、顺风、DNSSEC/DoH 等。所以我脑子里有一个奇怪的目录,更不用说如果我不这样做的话。我不想第 50 次开始关于那件事的相同讨论。
当然,如果您认为有关函数式编程的对话很有趣,那么您应该撰写有关函数式编程的文章并开始您想要进行的对话!
此外,通常可以就通常无聊的话题开始有趣的对话。例如,我经常一遍又一遍地看到有关 IPv6 与 IPv4 的相同讨论点,但我记得关于服务器支持 IPv6 的原因的评论非常有趣。
抢占常见建议
我试图避免的另一种“无聊的谈话”是对我已经考虑过的事情的建议。就像有人说“你应该做 X”,但我已经知道我可以做 X,但由于 AB C 而选择不这样做。
所以我经常会添加一个简短的说明,例如“因为 ABC,我决定不做 X”或“你也可以做 X”或“通常我会做 X,这里我没有因为……”。例如,在这篇关于 nix 的文章中,我列出了一些我选择不使用的 Nix 功能(nix-shell、nix flakes、home manager),以避免一群乐于助人的人告诉我应该使用 flakes。
列出我没有做的事情对读者也很有帮助——也许新接触 nix 的人会通过这篇文章发现 nix flakes 并决定使用它们!或者也许有人会了解到,某些“最佳实践”何时合适是有例外的。
设定一些界限
最近,我在 Mastodon 上抱怨dig 手册页中的一些粗俗术语。回复中的一些人要求我证明原作者有意冒犯(当然这不是重点),或者试图向我解释为什么这实际上不是问题。
所以我屏蔽了一些人并写了一篇简短的文章:
回复中这么多人要求我证明那个将 dig 命名为“域信息探索者”的人的意图是具有攻击性的。我猜是阻止按钮的重要日子:)
我不经常这样做,但我认为在社交媒体上偶尔制定一些我不能容忍的行为规则非常重要。我的目标通常是赶走一些混蛋(他们可以取消关注我!),并尝试为其他人创造一个更健康的空间来讨论计算机。
显然,这只适用于我有能力随着时间的推移培养我的追随者的情况(例如 Twitter/Mastodon)——我无法在 HN、Reddit、Lobsters 或其他网站上做到这一点,也不会尝试。
不要争论
有时人们似乎想要争论或发表轻蔑的评论。我不会回复他们,即使他们是错的。我不喜欢在网上争论,而且我非常不擅长争论,所以这不是很好地利用我的时间。
分析负面评论
如果我收到了很多我没有预料到的负面评论,我会尝试看看是否能从中得到一些有用的东西。
例如,我曾经编写过一个玩具 DNS 解析器,一些评论者对我没有处理 DNS 数据包的解析感到不安。当时我认为这很愚蠢(我认为 DNS 解析非常简单,而且很明显如何做到这一点,谁在乎我没有处理它?)但我意识到也许评论者并不认为这是简单或明显,并且想知道如何去做。这是有道理的!如果你以前没有做过的话,这根本不明显!
这些评论在一定程度上启发了在周末实现 DNS ,它更加关注解析方面,我认为这是如何编写 DNS 解析器的更好解释。所以最终这些评论对我帮助很大,即使我当时觉得它们很烦人。
(我意识到这部分让我听起来像一个完全逻辑性的人,不会因负面的公众批评而感到不安,我保证事实并非如此,我对互联网上发生的一切都有 100000 种感觉,并且一直感到不安.但我发现分析批评并试图从中吸取一些有用的东西会有所帮助)
就这样!
感谢 Shae、Aditya、Brian 和 Kamal 阅读本文的草稿。
我过去写过的其他一些类似的帖子:
原文: https://jvns.ca/blog/2023/08/07/tactics-for-writing-in-public/