程序员写好技术文章的几点小技巧

简介: 去年成为了内网技术分享平台的年度作者,受邀写一篇关于“如何写好文章”的文章。我本身并不喜欢写字,去年写的几篇文章,涉及的话题自带流量,所以阅读量多了一些,谈不上有多擅长。不过还是决定分享一下自己在写文章时用到的一些小技巧,希望对大家有帮助。

头图.png

作者 | 门柳
来源 | 阿里巴巴云原生公众号

去年成为了内网技术分享平台的年度作者,受邀写一篇关于“如何写好文章”的文章。我本身并不喜欢写字,去年写的几篇文章,涉及的话题自带流量,所以阅读量多了一些,谈不上有多擅长。不过还是决定分享一下自己在写文章时用到的一些小技巧,希望对大家有帮助。

最重要的是内容


和所有人强调的一样,好文章最重要的是要有好的内容,好的技术文章要让读者有益。如果你想写一篇爆款文章,但是又觉得没有内容可写,那就不要勉强了,放下笔,合上电脑,有这个时间不如去看书打游戏。

如何让自己有源源不断的内容可写?这与平时的积累有关,多阅读,多思考,多写作,真正的技巧无外乎这些。方法论层面的东西不再赘述,我重点讲几个具体的小技巧,直接“授之以鱼”。

优秀文章的特点

1. 阅读量 ≠ 文章质量


有些文章标题比较吸引眼球,有些话题自带流量,有些内容的受众比较广,所以有很高的阅读量,但这并不代表文章本身的质量。

前几天无意翻到一篇《超长用户行为建模在躺平家居内容推荐中的应用实践》,我觉得写得不错,但是内容我完全看不懂,是专业领域的文章,受众不多,有上千的阅读量就已经很不错了。但是另一篇《如何画好一张架构图?》就有超过 3W 的阅读量。当然反例也有很多,就不再列举了。我自己写的几篇讲技术细节的文章,就没有讲技术对比、讨论技术发展的文章阅读量高。内容越专越细,能读下来的人就越少,但并不代表文章质量不高,反之亦然。

技术文章盲目追求阅读量和点赞数不是件好事,所以第一个小建议就是不要太关注阅读量和点赞数,写的文章对别人有用,才是最有成就感的。至于除了阅读量和点赞数以外,还有什么指标可以衡量一篇文章的好坏,欢迎大家留言讨论。

2. 文章要长长长长长长长长长长长长长长长(也别太长)


我翻了几篇阿里技术公众号里阅读量较高的文章,各种话题都有,风格差异很大,但是有一个共同点:文章写得很长。这并不代表文章写了很多字就是好文章,背后的真实含义是:好文章的内容足够丰富。

内容丰富详实,这是一篇好文章的必要条件。还有一个条件是要包含真正有价值的内容,不能含太多水分。

提供一个小技巧:如果你写了一篇文章但是觉得内容很单薄,可以先当成一篇笔记存起来,等有了更丰富的积累之后再整理成文章。扩展文章内容的方法,并不是添加无意义的空话套话,而是根据文章探讨的问题延展开来。

比如说介绍自己解决的一个老大难 Bug,可能真正修改的代码并没有几行,把过程讲出来也不过寥寥几段。这时候你就可以再分析一下 Bug 存在的原因,为什么一直拖到现在,再思考一下如何避免这类问题,遇到同类 Bug 怎样快速排查。这样自己想问题的角度更全面了,文章内容也更丰富了。

比如你想介绍一项自己在学的新技术,发现自己写的东西其实就是官方文档的简化版,去重之后几乎什么都不剩了。这时候不要再继续抄文档了,把自己的思考总结先记下来,继续学习技术,持续记录新的内容,有更全面的了解之后,再写文章。

3. 清晰的叙事结构


优秀的技术文章,结构一定是清晰的,有可能目录就代表了某个技术体系,或者代表了解决问题的思路。

优秀的内容 + 清晰的结构 = 好文章

能把技术问题讲清楚,就很考验表达能力,这是大部分程序员比较欠缺的。对于技术类文章,常见套路也不多,我简单介绍两类吧:

  • 线性叙事,逐步推进:适用于介绍排查问题的过程、分享设计思路、介绍项目的迭代进展。
  • 结构化叙事,层层展开:适用于讲规划、做总结、画大图、介绍一整套技术方案。

4. 线性叙事,逐步推进


对于这类文章,读者是应该按顺序一段一段看的,写的时候脑海中模拟读者的视角来写。这类文章的小技巧就是:模拟读者视角,设定一条主线,有节奏的向前推进。和讲故事差不多,每一步的推进要有逻辑,要保持思路不要断掉。

有时候稍微加点趣味也是不错的,比如《Flutter Widget 和 CSS 布局原理 PK》这篇文章,目标是分析 Widget 和 CSS 的设计差异,我把文章写成一场比赛,先介绍参赛选手,然后分了 5 个 Round 开始 Battle,然后是 Love&Peace,最后一个 Happy Ending。

另外一篇《记一次完整 C++ 项目编译成 WebAssembly 的实践》介绍了自己尝试新技术的心路历程,先介绍背景,再分析需求做拆解,然后讲尝试了什么方案,遇到了什么坑,又继续试其他方案,最终是什么结果。读起来比较流畅。

5. 结构化叙事,层层展开


除了按顺序看的,还有不按顺序看的文章吗?有的,尤其在专业的技术文章里很常见,大部分是“总-分”的结构,先讲整体框架,再分章节介绍各个部分。

比较常见的是那种总结型的文章,比如《平台建设的 7 大问题:蚂蚁AI平台实践深度总结》和《救火必备!问题排查与系统优化手册》,就是翻阅性质的书,可以通读一遍,也可以只看其中一段,之后遇到相关的问题,根据目录跳着阅读。

对于文思泉涌的人,可以一口气把整篇文章写完。但实际情况是,很多时间被碎片化,可能还要引用一些专业内容,可能需要查资料,写文章的过程会被中断。这类文章不是一口气写完的,是先搭架子再填充完整的。其实写起来也很简单:先想好标题,再划分好目录结构,再一段一段的填充内容,最后再润色一下连接部分。文章可以不按顺序看,也可以不按顺序写。

我自己写的《关于浏览器、Weex、Flutter 的比较和思考》这篇文章就是先划分好了目录,再一点一点填充的,写文章的时间跨度也比较长,想起来一点写一点。

线性叙事是个链表,结构化叙事是树。

提升写作技巧


我初高中的时候比较喜欢看闲书,偶尔自己写点东西,但是我作文考得并不高,这里大言不惭地聊一下怎么写作文吧哈哈哈哈哈。只讲怎么写技术文章,并不能提升任何文学功底,但说不定能帮你避开一些小坑。

1. 碎片化记录,结构化整理


大部分人的问题是不知道该写什么,即使已经有足够的积累,有明确的话题要写,也不知道该如何下笔。这就要靠日常的积累了。

在平时工作的时候,可以建个文档库,把日常的一些琐碎的想法记录下来,随时写随时存。我是用手机的便签 App 随手记东西,比较喜欢它的语音转汉字功能,工作相关、生活相关,随时随地想起任何话题都可以记录下来。

在有了明确话题,准备写文章之前,先把各种碎片化的记录收集起来,形成一份“素材”文档,然后梳理文章脉络,把素材应用进去。操作起来很简单,刚开始的时候会遇到前后不通畅的问题,那就不要直接复制素材的内容,重新换个表达方式写出来。多练习练习就好了。

2. 刻意练习,先写再改


有了素材之后,平时可以专门练习写作能力,先写一小段话,明确的描述一个观点,然后不断修改。其实写周报就是一个很好的锻炼机会(现在不要求写了,自行练习),练习把做的事情描述清楚,说话的方式简单点,不要用太多高大上的词汇。最关键的部分在于:写完花五分钟再改一遍!读一下是否通顺,有没有把问题讲清楚。反复修改才是提升写作技巧的关键。

用周报举例有点奇怪,毕竟是邮件类型的东西,和写文章差别很大,还是不要乱改周报了,改自己以前写的文章吧。找一篇自己以前写的,内容很不错但是写得不太行的文章,重写一遍!这个过程既温习了技术,又锻炼了写作技巧。不要觉得无聊浪费时间,亲测很有效的。

3. 注意排版和语法细节


对于不拘一格的程序员来说,写出来的文章没有排版,就是家常便饭。不需要追求高级的排版技巧,稍微注意一下几个常见的问题就好了。

1)正确使用标点符号


大部分的文章里就只有逗号和句号,逗号和句号也是看心情随意划分,键盘上按到哪个是哪个。其实还有单双引号、顿号、冒号、分号、叹号、破折号、省略号、书名号、中文括号「」【】等等…… 使用方法可以去网上搜,这部分我觉得问题很常见,就单独多讲了两句。对了,中文文章要用全角标点符号,尽量不要混用英文标点符号。

2)添加多种展现形式,可参考 GitHub 的 Markdown 语法


如果全都是普通段落,看起来太平,可以加上无序列表、有序列表、段落引用、表格等等。行内排版可以加上粗体、斜体、代码标记等,偶尔还可以用删除线。

其他还有一些小的建议:

  • 区分大标题小标题,分配的均匀一些,最多不要超过三层。
  • 每个章节的长短也尽量均匀一些,太长的内容就拆个小标题。
  • 重要数据给出明确的数据源,扩展信息给出资料连接。
  • 中英文混写的时候,在中间加一个空格。
  • 注意英文的大小写,尤其是专业名词的缩写。
  • 英文喜欢长句,复合从句一层套一层;中文追求言简意赅,错落有致,可以多加标点符号,把长句分隔开。
  • 写完之后通读一遍,尽量少写错别字……

最后一个小技巧:多用图片。即使图片里只有文字,信息量也远超文字。

1.png

然而这篇文章并没有加很多图片,因为这并不是一篇技术文章,大家在讲技术原理的时候要多用图片,一图胜千言!

写在最后


最后一个小建议:文章写多了就可以逐渐形成自己的风格,让所有文章都保持某种共性。

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

雅虎、领英接连退出中国,GitHub 会受到影响吗?

整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)继半个月前微软宣布关闭领英(即 LinkedIn)在华业务后,本周二,雅虎也宣布了最新消息:自 2021 年 11 月 1 日起,用户将无法从中国大…

高德打车构建可观测性系统实践

简介: 互联网工程的高速发展,分布式、微服务、容器化架构的流行,互联网已全面进入云原生时代。构建系统的方式由最初的单体大应用演变为分布式架构,一台服务器可能仅存几小时甚至几分钟,这种复杂性大大增加了把系统运行…

java script 代码放在jsp 还是放在servlet_ServletContext JSP

会话:四种:1 :Session–保存在服务器上默认的30分2:Cookie 客户端的,maxAge3:重写 url - > url;jsessionidxxxxxxx - > response.encodeRedirectUri(url);4:隐藏表单 1:Serv…

飞猪基于 Serverless 的云+端实践与思考

简介: 过去两年,飞猪前端一直在积极地进行 Serverless 建设和实践,2019 年 - 2020 年我们和集团 Node 架构组、研发平台一起完成了基础能力的建设和业务试点,成为集团率先落地 Serverless 实践的 BU,2020 年 - 2021 年…

unc 目录不受支持_Shopify平台对于店铺模版都提供哪些支持

在自定义Shopify模版之前,请确保您了解可用的支持级别。如果您要进行基本的自定义,则可以从模版开发人员处获取支持。如果您要对模版进行大量更改,请参阅我们的模版支持的其他资源列表。若要了解 Shopify 不支持的自定义,请参阅我…

CSS——定位、CSS高级技巧、修饰属性

1、定位 作用&#xff1a;灵活的改变盒子在网页中的位置 实现&#xff1a; 定位模式&#xff1a;position边偏移&#xff1a;设置盒子的位置 leftrighttopbottom 1.1 相对定位 position&#xff1a;relative <!DOCTYPE html> <html lang"en"> <…

Hologres如何支持亿级用户UV计算

简介&#xff1a; 本文将介绍阿里云Hologres如何基于RoaringBitmap进行UV等高复杂度计算的方案&#xff0c;实现亿级用户万级标签亚秒级分析&#xff0c;帮助用户从Kylin平滑迁移到Hologres&#xff0c;实现更实时、开发更灵活、功能更完善的多维分析能力。 背景介绍 在用户行…

location 拦截所有_电脑广告拦截软件 Adguard Premium

每日一谈我们上个网的时候经常会遇到很多烦人的广告、在线跟踪等&#xff0c;不仅导致你的网站加载速度非常的慢&#xff0c;并且还可能会导致你遇到一些恶意软件和威胁。为了避免这种情况的产生&#xff0c;今天我为大家推荐这款广告拦截软件来阻止你浏览器中的广告&#xff0…

事务消息应用场景、实现原理与项目实战(附全部源码)

简介&#xff1a; 从应用场景出发&#xff0c;给出解决方案与实现原理&#xff0c;并提供整套工业级实现源码。 作者&#xff1a;丁威 活动中心场景介绍 在电商系统上线初期&#xff0c;往往会进行一些“拉新”活动&#xff0c;例如活动部门提出新用户注册送积分、送优惠券活…

request用法_3分钟短文:说说Laravel页面会话之间的数据保存Session用法

引言我们知HTTP请求是没有状态的&#xff0c;两个请求之间没有直接的关联关系。但大多数情况下&#xff0c; 我们需要保持用户的会话间数据的连续性&#xff0c;这时&#xff0c;为了数据安全起见&#xff0c; 有必要在服务器上临时存储一些上下文数据了。这就是 session 设计的…

调研邀请:我们到底需要什么样的低代码平台?

《乔布斯传》中有这样一段话&#xff1a;“有人会说&#xff0c;顾客想要什么产品就提供什么产品&#xff0c;但这并不是我的做事方式。我的职责是在人们还没有意识到需求之前&#xff0c;就研发出他们想要的&#xff0c;我们的任务是搞定那些还没有形成“定论”的事情。”这段…

面向K8s设计误区

简介&#xff1a; K8s 取其精华去其糟粕&#xff0c;是我们程序员应该做的事情。 K8s设计模式 Kubernetes是一个具有普遍意义的容器编排工具&#xff0c;它提供了一套基于容器构建分布式系统的基础依赖&#xff0c;其意义等同于Linux在操作系统中的地位&#xff0c;可以认为是…

电脑word在哪_word是什么?小学生:单词,大学生:论文排版工具

word是什么&#xff0c;对于不同人会有不同的理解&#xff0c;它可能只是一个单词&#xff0c;它也可能是一个排版工具。今天就以我自己的经历给大家讲述一下&#xff0c;人生的不同阶段&#xff0c;word分别是什么。一、小学阶段&#xff0c;好像是一个单词我们那个时候的小学…

Kubernetes 稳定性保障手册:洞察+预案

简介&#xff1a; 稳定性保障是个复杂的话题&#xff0c;需要有效、可迭代、可持续保障集群的稳定性&#xff0c;系统性的方法或许可以解决该问题。 作者 | 悟鹏 来源 | 阿里巴巴云原生公众号 《Kubernetes 稳定性保障手册》系列文章&#xff1a; ​ Kubernetes 稳定性保障手…

为啥学java要看那么多东西_编程语言那么多,为啥学Java的人那么多?

Java一直都是稳居排行榜第一的语言&#xff0c;在未来10年Java都会是最热门的语言之一&#xff0c;因为Java技术具有卓越的通用性、高效性、安全性和平台移植性&#xff0c;它可以跨平台的应用到不同的领域&#xff0c;工作需求足够大。为什么选择学习Java编程语言&#xff1f;…

墨奇科技:生物识别进入可信发展驱动的新阶段

编辑 | 宋慧 供稿 | 墨奇科技 头图 | 付费下载于视觉中国 在好莱坞电影大片中&#xff0c;经常有“换脸”或者指纹开锁的情节&#xff0c;戏中角色通过“戴上”足以以假乱真的“面皮”&#xff0c;或者按下“盗取”的指纹&#xff0c;顷刻之间就改变了身份&#xff0c;从而影…

安卓游戏开发用什么引擎_游戏开发学习第一天————用什么软件

今天开始了虚幻学习的第一天&#xff01;好的&#xff0c;那我们就开始学习做游戏吧&#xff01;始学习做游戏吧学习做游戏吧习做游戏吧做游戏吧游戏吧戏吧吧等等&#xff0c;要学做游戏啊。。。。。。第一步要做什么&#xff0c;我还完全不知道啊喂&#xff01;于是&#xff0…

360浏览器收藏夹_换了一台电脑,浏览器收藏的网站不见了,咋办?

导语&#xff1a;大家知道&#xff0c;用浏览器上网时&#xff0c;重要的网站要及时收藏&#xff0c;方便下次打开。但如果换电脑以后&#xff0c;收藏的网站就不见了。下面以360浏览器为例来说明一下工具&#xff1a;网络收藏夹、360浏览器说明&#xff1a;360的收藏夹就是网络…

Flink 和 Pulsar 的批流融合

简介&#xff1a;StreamNative 联合创始人翟佳在本次演讲中介绍了下一代云原生消息流平台 Apache Pulsar&#xff0c;并讲解如何通过 Apache Pulsar 原生的存储计算分离的架构提供批流融合的基础&#xff0c;以及 Apache Pulsar 如何与 Flink 结合&#xff0c;实现批流一体的计…

Flink 在有赞的实践和应用

简介&#xff1a; 本文介绍了Flink 在有赞的实践和应用&#xff0c;内容包括&#xff1a;Flink 的容器化改造和实践、Flink SQL 的实践和应用、未来规划。 作者&#xff1a;沈磊 一、Flink 的容器化改造和实践 1. 有赞的集群演进历史 2014 年 7 月&#xff0c;第一个 Storm…