去年成为内网技术分享平台的年度作者,受邀撰写了一篇“如何写出好文章”的文章。我不喜欢写作。去年写的那几篇文章涉及的话题本身就有流量,所以看的多了,也说不上多好。但是分享一下我自己写文章的一些技巧,希望对大家有所帮助。1.最重要的是如何让自己有源源不断的内容可写?这跟平时的积累有关,多看,多想,多写,真正的本领无外乎这些。方法论层面我就不多说了。我会重点介绍几个具体的技巧,直接“授之以渔”。2优秀技术文章的特点1.阅读量≠文章质量有的文章标题比较抢眼,有的话题自带流量,有的内容受众面更广,所以阅读量高,但这并不代表文章本身的质量。前几天无意中看到一篇文章《超长用户行为建模在躺平家居内容推荐中的应用实践》。觉得写的不错,但是内容完全看不懂。这是一篇专业领域的文章。但是另一篇文章《如何画好一张架构图?》的阅读量超过了3W。当然反例还有很多,这里就不一一列举了。我写的几篇讲技术细节的文章,读起来还不如讲技术对比,讨论技术发展的文章。内容越具体越详细,看的人越少,但不代表文章质量不高,反之亦然。技术文章一味追求阅读量和点赞量并不是什么好事,所以第一个小建议就是不要太在意阅读量和点赞量。写对别人有用的文章是最有成就感的。至于除了阅读量和点赞数之外还有哪些指标可以衡量一篇文章的好坏,欢迎大家留言讨论。2.这篇文章应该是长长的长长长长的长长长长的长长长长的长长长长的长长长长长长的长长长长长长长长长长的长长长长的长长长长长长长长长长长长的。差异很大,但有一个共同点:文章写得很长。这并不是说一篇文章写了很多字就是好文章。其背后的真正含义是:一篇好文章的内容足够丰富。内容丰富详实是一篇好文章的必要条件。另一个条件是要包含真正有价值的内容,并且不能包含太多水分。提供一点小技巧:如果你写了一篇文章,但觉得内容很单薄,可以先保存为笔记,等积累更丰富后再整理成文章。扩展文章内容的方法不是加入无意义的空话,而是根据文章所讨论的问题进行扩展。比如你引入了一个你解决了很久的bug,实际修改的代码可能没有几行,讲过程的也只有几段。这个时候你可以分析一下这个bug存在的原因,为什么拖到现在,然后思考如何避免此类问题,如何快速排查类似的bug。这样思考问题的角度会更全面,文章的内容也会更丰富。比如你要介绍自己正在学习的一项新技术,你发现自己写的其实是官方文档的简化版,去重之后几乎什么都没有了。这个时候不要继续抄文档,先把自己的思考总结写下来,继续学习技术,继续记录新的内容,等自己有了比较全面的理解后再写文章。3.清晰的叙述结构优秀的技术文章必须具有清晰的结构。目录可能代表某个技术系统或解决问题的想法。优秀的内容+清晰的结构=一篇好文章能把技术问题讲清楚,这是对表达能力的考验,这是大部分程序员比较欠缺的。对于技术文章,常用的套路不多。简单介绍两种:线性叙事,循序渐进:适合介绍排错过程,分享设计思路,介绍项目的迭代进展。结构化叙述,层层展开:适用于规划、归纳、画大图、介绍整套技术方案。4.线性叙事,循序渐进。对于此类文章,读者应按顺序逐段阅读。写作时,他们应该在脑海中模拟读者的视角。这类文章的技巧是:模拟读者视角,设定主线,有节奏地向前推进。类似于讲故事,每一步都要有逻辑,不能断了思路。有时候增加一点乐趣也是不错的,比如这篇《Flutter Widget 和 CSS 布局原理 PK》,目的是分析Widget和CSS的设计差异,我写这篇文章是为了比赛,先介绍参赛选手,然后分5个回合开始Battle,然后是Love&Peace,最后的HappyEnding。另一篇文章《记一次完整 C++ 项目编译成 WebAssembly 的实践》介绍了我尝试新技术的心路历程。首先介绍了背景,然后分析了反汇编的需求,然后说了自己尝试了哪些方案,遇到了哪些坑,然后继续尝试其他的方案,最后的结果。读起来更流畅。5条理分明,层层展开除了按顺序阅读,还有没有不按顺序阅读的文章?是的,尤其是专业的技术文章,大多都是“总分”结构,先讲整体框架,然后分章节介绍各个部分。比较常见的是那种总结文章,比如《平台建设的7大问题:蚂蚁AI平台实践深度总结》和《救火必备!问题排查与系统优化手册》,都是翻书性质的书。您可以全部阅读,也可以只阅读其中的一段。脑洞大开的人,可以一口气看完整篇文章。但实际情况是,很多时间是碎片化的,可能会引用一些专业的内容,可能需要查资料,写文章的过程就会中断。这种文章不是一口气写出来的,是先搭个架子,再填满。其实写起来也很简单:先想好标题,再分目录结构,再逐节填写内容,最后润色连接部分。文章可以乱序阅读或书写。自己写的文章《关于浏览器、Weex、Flutter 的比较和思考》是先分目录,再一点一点补上。线性叙述是链表,结构化叙述是树。3.提高写作水平初中的时候喜欢看散文,偶尔自己写点东西,但是作文考的不高,这里就说说如何不丢人的写作吧哈哈哈哈。仅仅谈论如何写技术文章并不能提高任何文学水平,但可能会帮助你避免一些陷阱。1.零散的记录,结构化的组织大多数人的问题是他们不知道该写什么。即使他们有足够的积累和明确的主题可以写,他们也不会写。这要靠每天的积累。工作的时候,可以建立一个文档库,记录一些日常琐碎的想法,随时书写保存。我用手机上的记事本记录东西,我喜欢它的语音转汉字功能,这与工作和生活息息相关,我可以随时随地记录下我想到的任何话题。在你没有明确的主题准备写文章之前,收集各种零散的记录,形成一个“素材”文档,然后梳理文章的上下文,将素材应用到其中。操作非常简单。一开始会遇到前后不流畅的问题,所以不要直接照搬素材的内容,换一种表达方式写出来。只是练习和练习。2.刻意练习,先写后修改。有了素材之后,通常就可以练习写作能力了。先写一小段,清楚地描述一个观点,然后继续修改。其实写周报是一个很好的锻炼机会(现在不需要写了,自己练习),练习把自己做的事情描述清楚,说话简单点,不要用太多high-级词汇。最关键的是:写完再花五分钟再修改!读一遍看是否流畅,是否把问题讲清楚了。反复修改是提高写作能力的关键。以周报为例有点奇怪。毕竟是email类型的东西,跟写文章有很大区别。周报最好不要乱改,改之前写的文章。找一篇我以前写的文章,内容很好但是文笔不太好,重写一下!这个过程既复习了技术,又锻炼了写作能力。不要觉得无聊浪费时间,亲测很有效。3、注意排版和语法细节对于不拘一格的程序员来说,写文章不排版是家常便饭。无需追求高深的排版技巧,只需注意几个常见问题即可。正确使用标点符号(没想到我说的是这个。。。)大多数文章只有逗号和句号,逗号和句号也是根据心情来划分的,按键盘上的哪个。其实还有单双引号、逗号、冒号、分号、感叹号、破折号、省略号、书名、中括号""[]、等等……怎么用可以上网搜一下。我觉得这部分很常见,就分开来多说几句。对了,中文文章要用全角标点符号,尽量不要混用英文标点符号。添加多种呈现形式,可以参考GitHub的Markdown语法。如果都是普通的段落,看起来平和,可以添加无序列表、有序列表、段落引用、表格等。行内排版可以加粗、斜体、代码标记等,偶尔加删除线。还有一些其他的小建议:分清主副标题,均匀分布,最多不要超过三层。每章的篇幅尽量均匀,如果内容过长,应分出一个副标题。重要数据给出明确的数据来源,扩展信息给出数据链接。中英文混用时,中间加一个空格。注意英文的大写,尤其是专业名词的缩写。英语喜欢长句,复合从句层层叠叠;汉语追求简洁、条理分明的句子,长句可以多加标点符号来分隔。写完再通读一遍,尽量少写错别字……最后一个小窍门:多用图片。即使图片中只有文字,信息量也远远超过文字。
