3

技术写作二三事:原创情结

 2 years ago
source link: https://www.zlovezl.cn/articles/on-tech-writing-original/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

技术写作二三事:原创情结

发布于 2021-12-04

2019 年的春节假期,我闲在家中,准备一次性刷完攒了大半年的“Python Weekly” 周报。在 6 月份的一封周报里,有一篇名为 “Python Idioms: Multiline Strings” 的文章,内容很精炼。前半部分先描述痛点:在 Python 中写多行字符串字面量,随后演示如何用 textwrap.dedent 函数来优化它。

部分内容摘录如下:

... The problem is that it’s just ugly, because indenting the strings actually inserts the indentation into the string. So you have to do this:

def create_snippet():
    code_snippet = """\
int main(int argc, char* argv[]) {
    return 0;
}"""

With dedent, we can indent the whole multiline string according to the current scope, so that it looks like a Pythonic code block...

巧合的是,我两个月前刚在博客上发布了“Python 工匠”的第 3 篇文章:“使用数字与字符串的技巧”。在这篇文章中,同样出现了 textwrap.dedent 函数。

我写的内容:

日常编码时,还有一种比较麻烦的情况。就是需要在已经有缩进层级的代码里,插入多行字符串字面量。因为多行字符串不能包含当前的缩进空格,所以,我们需要把代码写成这样:

def main():
    if user.is_active:
        message = """Welcome, today's movie list:
- Jaw (1975)
- The Shining (1980)
- Saw (2004)"""

但是,这样写会破坏整段代码的缩进视觉效果,显得非常突兀。你可以用标准库 textwrap 里的 dedent 函数来解决这个问题...

看出来了吗?我的写作思路和代码样例,与前面那篇文章如出一辙。

现在听上去或许有点可笑,但当时我的心情相当沮丧。为什么?因为我那时是个“原创情结”特别强的人。每次写作前,我一定要确认自己没看过类似的内容,才会下笔。也就是说,假使我在写作前一天读过 “Python Idioms: Multiline Strings”,那么 textwrap.dedent 十有八九不会出现在我的文章里。

我说不清这种拧巴的“原创情结”从何而来。似乎从十几年前,我的博客上线后的第一天起,我就已经这样了——如果有一个技术点,别人已经写的足够好了,那么我打死都不会再写一遍。但结果你们已经知道了——懂 textwrap.dedent 技巧的人远不止我一个。所谓“写出原创内容”带给我的那点虚荣感,就像小朋友吹出的肥皂泡一样,一触即破。

表面上看来,“原创情结”对作者有好处。它让后者对自己要求更高,不至于心甘情愿沦为知识的搬运工(或更恶劣一点:沦为抄袭者)。

但实际上,对于写作者(尤其是技术写作者)来说,“原创情结”带来的坏处远大于那一丁点好处。因为对“内容是否原创”的过度痴迷,会彻头彻尾地消灭一个人的创作冲动。“原创情结”像是一条无形的锁链,我们被它牢牢捆在“一举成名天下知”的幻梦中,无法挣脱。

同其他领域相比,在技术写作领域追求原创性尤其困难。在 StackOverflow 上,每天都有上百万的技术大佬,慷慨分享着自己的技巧和经验。 在各种独立博客和云厂商(点名 DigitalOcean)的知识库里,每天都有无数高质量的技术文章新鲜出炉,足以让人眼花缭乱。在这样的创作密度下,要找到一片没有其他人开垦过的处女地,难度可想而知。

在行业摸爬滚打了十几年后,我如今只有一个感触:装在自己脑子里的技巧、概念和知识,几乎没有哪一样可称得上是原创。 有时候,我以为自己写了一些颇具原创性的观点。结果过几天听英文播客时,居然从访谈嘉宾那听到了一模一样的内容——翻译成中文后,与我的原文几乎只字不差。

假如我们诚心认为自己掌握的某项知识是原创,那或许只是因为读的还不够多、不够广、不够深。除此之外,还有一种可能,那就是我们忘记了知识来自何处。

拿文章开头的 textwrap.dedent 来说。如果仔细回忆,我也许会想起在某个工作日的午后,我随意打开了某个开源库的代码,发现了这个小技巧,并记住了它。光阴荏苒,经过了足够长的时间后,我逐渐忘记了那段经历——这个小技巧被我据为己有,放进了大脑里的“原创知识”那一栏。

所以,技术文章的原创性,大多数时候只是作者们的幻觉。现在的我在写东西前,不会再考虑任何“内容是否足够原创”之类的问题。我唯一遵循的原则,就是绝不有意偷窃其他人的写作成果。

许多时候,我们想动笔写点技术文章,即不是为了硕士毕业证,也不是为了申请国家专利,我们只是想记录与分享一些朴素的经验而已。既然如此,要那么高的“原创度”顶个球用?

如果你常年琢磨着写一些技术文章,却被“原创情结”所束缚,无法下笔。每年一到年底,打开自己的博客一看,总是空空如也。我可以尝试给你一些建议:

  • 在某种意义上,任何创作都是有价值的。因为价值是由读者定义的,和作者从哪儿(原创还是抄袭?)得到的创作灵感无关
  • 你不重要,你写的东西也没有那么重要。没人期待在你的文章里,学到任何独家秘笈,别有任何心理负担
  • 假如从内容上无法创新,也可以在形式上做一些尝试。有些文章的内容光芒璀璨,却常因原作者糟糕的写作形式和文字技巧被埋没
  • 假如遇到一个你感兴趣的主题,其他人已经写过了,但你觉得你能写的比他更好,何不试一试?

上面这些话,有时我也会用来宽慰自己。

所以,别再纠结于原创与否,打开电脑,随便写点啥吧。“某个诡异的线上 Bug”;“Python 的 5 个面向对象小技巧”;“详解 Kubernetes 的某个配置项” ,所有主题都是好主题。不必想着写出什么惊世佳作,坚持写,我们总会慢慢进步。

也许某一天,你在写了许多东西以后,抬头一望,会看到一片瑰丽的新大陆,正向你徐徐展露。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK