如何创作一个优秀的编程博客

    |     2018年2月10日   |   观点   |     0 条评论   |    925

写下的不仅仅是代码,还有文章。假如你是开源社区的一员,你能够通过代码帮助别人提高编程水平。写作也是一样:不但可以提升自己的知名度,还能让好的想法传播得更广。更重要的是,写作本身就是思考。没有比写作更好的方法来理解技术了。

无论你专业宽窄与否,只要你比其他人更懂得如何分析纽约地铁时刻表,那么请把它写出来。专业是什么不重要,重要的是把你的理解展示出来。这样别人就能知道你的专长,向你请教。

一、为什么写博客

例如,HappyBase(HBase 的 Python 驱动)的作者,在项目启动前给作者发了一封邮件。他从博客了解到对方正在开发 MongoDB 的相关驱动,于是问了很多关于连接池的疑难问题。一起工作非常令人振奋,这也是为热门项目贡献的一个高效方法。

让自己成为社区专家或者令人信服的讲解员会让你受益良多:你提交的补丁会更容易被项目接受,你会收到技术大会的演讲邀请,你会有更多的用户以及工作机会。

为 bug 撰写分析文章会让你思考得更深入,比其它任何技巧都要管用。作者对「写作-思考」的方式如此热衷,以至于每次遇到疑难问题会立刻开始写一篇关于这个问题的文章。去年遇到 PyMongo 的连接池 bug 的时候就是这么干的。最后定位到的问题是:Python 2.6 中为 threadlocal 赋值不是线程安全的。如果不是通过写作的方式确认每一步行动及结果,肯定无法发现如此复杂的竞态条件。

二、博客要写什么

在作者看来,程序员的写作内容包含五种类型:故事(story)、观点(opinion)、指南(how-to)、原理分析和评论(review)。如果你已经下定决心写作,但还没有选好一个主题或者不知道如何开始,下面的内容会对你有所帮助。

类型 骨架 例子
故事 Foo 如何让我学会 Bar 并达成 Baz 一次运行中断的复盘;参会听演讲;通过极难考验
观点 论点 + 反对意见 + 论据,不人身攻击 Foo 会成为下一项伟大技术;开源作者对用户负责
指南 何时用 Foo、先这么做再那么做,必须积极可执行 调试崩溃 / 内存泄露 / 竞态;孕育开源项目;准备技术演讲
原理分析 读完代码后讲清 Foo 如何做到 Django ORM 如何生成 SQL;socket.settimeout();xrange
评论 描述分析而不是打分,讲清适用条件 技术书评;别人的项目请保持温柔

故事

「下面我要向你介绍有关 Foo(技术)的那些事,它是如何让我学会 Bar(技巧)并最终达成 Baz(目标)。首先这么做……,然后就会出现……。」我们天生对故事感兴趣。你不需要感到忏悔或者觉得自己令人讨厌。如果从你的博客了解过一些关于你的情况,你的技术文章会让人感觉更加亲切,也会记得你的名字。

观点

「论文,论点,反对意见,重复论点。」就像高中学到的那样,最重要的是不只持有某个观点,而且能够通过强有力的论据来提供支持。不要重复这些无用的争论,比如「Foo 技术很烂」或者「Bar 比 Foo 更好」。攻击别人不会带来任何价值。Miyagi 先生说过:空手道只是一种自卫的手段。

指南

「在某些条件下运行 Foo 时非常重要。我将会向你展示如何使用 Foo。」指南的内容必须是积极的:你必须让读者了解使用的时机和重要性。每当解决一个难题,请把解决的过程写下来。

原理分析

在读完代码之后,每一项让人敬畏的技术几乎都是易于理解的。写一篇技术分析对深入该技术是一个很好的切入点。有些用户希望通过理解背后的工作原理来更好地使用这项技术;对这类内容不感兴趣的朋友可以跳过。

评论

在对书籍、电影、游戏或者项目进行好坏评价打分是相当诱人的,但并不管用。描述分析而不是评价,告诉读者它们究竟好在哪里。带着写书评的观点阅读会让你读得更加仔细,而且阅读会教你如何写作。游戏、电影、音乐和书籍与编程不同:写书评是最佳练笔,可以让博客保持热度。

三、如何找到读者

不要关心点击量。点击量不是编程写作的目标。就像 Seth Godin 说的那样:「大多数时候,如果要取悦大众注定会失败。更容易做到的是把目标人群缩小,而不是扩大。这样可以在一个充满信任和喜悦的群体中建立长期价值。」

一旦你不再关心点击率,就不要在 SEO 上浪费时间了。你不是网络热点资源。偶尔点击的访问者对你没有价值,因为你展示的不是广告。与之相反,你的目标是吸引所在领域的专家,并与他们分享你的想法。幸运的话,你会因此更容易地与行业专家进行交流。

首先,找到你所在技术社区的信息聚合点。作者写了很多有关 Python 的内容。Planet Python 是目前为止发布文章的最佳频道。任何在「Python」分类上发布的文章能够保证有至少上百次访问。向p***@python.org投稿会让你的文章获得发布。(这是由许多忙碌的志愿者负责维护的,请保持耐心。)如果你想要写其它编程语言或技术的文章,请找到该技术的信息聚合点并请求加入他们。

将你的文章在 Twitter 上分享也是很有意义的。将你的文章发布到 reddit 对应的分类频道会更有价值。在你的主页中向读者展示最好的文章,而不是最新的文章。你可以到 Hacker News 上试试,但是作者认为那里不是发布严肃技术文章的地方,所以后来没有继续在那里发布。

四、如何改进,以及如何达成优秀

模仿,模仿那些最好的博客和最好的文章。不要模仿 Daring Fireball、GigaOM 或 TechCrunch。这些是业界的新闻站点,所有的内容最终会落实到一个问题:哪些公司的股票会飘红?哪些会变绿?这些与专业无关,而且会很枯燥。

  • Glyph Lefkowitz。在他的 “Unyielding” 中讨论异步的最大优点,不是高效而是可以更容易地避免竞态条件。
  • Kristina Chodorow。她的 “Stock Option Basics” 讲述了退出创业公司的故事,并分享了很多保持持续价值的财务建议。关于 MongoDB 单元测试的文章非常专业;风趣和蔼的嗓音也出现在 O’Reilly 的《MongoDB 终极指南》中。
  • Armin Ronacher。他的 “Exec in Python” 篇幅非常长,但非常详尽且经典。全部读完几乎需要 1 个小时。对 Python 2 和 Python 3 的运行时给出了详尽的讲解,包括 web2py 的工作机制,并且提出了一种可替代的工作机制。
  • Julia Evans 在她的博客中是松散却精力旺盛的,和她的演讲风格一样。但不要被表面现象迷惑,她在匿名会议上的提案非常严谨。
  • Graham Dumpleton 关于 Python 装饰器的权威系列让相同主题的其它文章相形见绌。

写作并不总是需要很多时间,因为并不要求定期或经常发布。有价值的文章通常不是定期发布的,但却有深度。更重要的是,不要仓促动笔去写一篇文章,因为好的主题总是一直在那里。就像 Patrick McKenzie 说的那样:「你可以而且应当把主要的精力放在最有价值的主题上。写一堆不那么有价值的文章和写一篇经典的文章花费的时间一样长。」所以,别着急。当你有一个好的想法或者非同寻常的经历时,把它写下来。

你知道编程中哪些东西是值得探究的,或者对某个常见的主题有新的见解。写作比其它任何方式都能更好地加深你对技术的理解。一篇优秀的文章必定是原创、专业、新颖、独特的见解,蕴含着自己用心学习和探索的成果。

原文:“Write An Excellent Programming Blog” by A. Jesse Jiryu Davis

原文链接:https://dzone.com/articles/write-excellent-programming

翻译:唐尤华 转载自:https://sanwen8.cn/p/1a6pFAS.html

一句话总结:编程博客用写作逼自己把技术想清楚;故事、观点、指南、原理、评论五类选题,找垂直社区而不是追点击,把时间押在一篇经典而不是一堆水文上。

转载请注明来源:如何创作一个优秀的编程博客
本文链接地址:https://ai.zhousir.top/?p=2254
回复 取消