一、前言

作为一名程序员,经常在网络上查找各种各样的资料。此时,会检索到很多优秀的技术文章。一篇好的技术文章,可能不仅仅会解决我们的问题,更能在阅读的过程中带给我们一些美好的体验。

许多时候我们也憧憬自己能写出优秀的技术文章,然而却往往感觉到无从下手。那如何写好一篇技术文章呢?其实是存在一些方法和技巧的,下面我们就对这些内容进行详细的介绍。

二、写作目的

在正式介绍如何写技术文章之前,我们先来看下为什么要写技术文章?因为知道了我们的目的,才能有动力更好的完成写作。

2.1 写给自己

可能看到这个标题之后,大家的第一反应是感到疑惑。因为在大多数人心目中,写技术文章的主要目的不是给他人分享自己的知识么?

针对这个疑惑,我的回答是:

  1. 对于技术文章的读者而言,能够学到一些知识或者解决自己遇到的问题,确实很有意义。不过,大部分技术文章主要是针对某些特定的知识点进行阐述。因此,对于读者的益处主要是查漏补缺,想要通过阅读技术文章形成自己的知识体系就比较困难了。

  2. 对于技术文章的作者而言,通过写作能够获得更大的益处。其实,与其说是写作,倒不如说是 “学习+思考+总结+提升” 这一整体的过程。写作本身就是一个学习的过程,而不仅仅是写出一篇文章。

所以,对于大多数希望学习和成长的同学而言(例如我自己),写作的主要目的是自身的提升。

2.2 总结学习成果

我们在日常工作中,会遇到许多问题,也会想到各种各样的解决办法。随着解决的问题越来越多,我们了解的知识点也越来越多。但是,这些知识点我们应当如何沉淀下来形成知识体系,便于后续解决类似的问题呢?

写作,恰好可以作为对前一阶段学习成果的总结,将这些零散的知识点串联成自己的知识网络。对于这一过程,可以使用一幅图来表示,如图 2-1 所示:

图 2-1 知识点串联成知识网络

2.3  明确学习方向

为了说明如何通过写作明确自己的学习方向,首先列举下在简书上我的文章分类,如图 2-2 所示:

图 2-2 简书上的文章分类

对于我而言,通过已写的文章就可以明确大致的学习方向,原因如下:

  1. 可以了解自己知识体系中擅长哪些知识。例如,通过图 2-2 所示可以知道,我曾经写过 iOS 多线程系列的技术博客。因此,对于 iOS 多线程的相关知识我应当比较擅长。

  2. 了解自己擅长哪些知识之后,自然也就知道了自己知识体系中欠缺哪些知识。因此,对于这部分知识可以重点关注。

  3. 便于回顾已经掌握的知识。由于已写的文章都可以归纳到对应的知识点中,如果需要回顾某些知识点,就可以迅速找到相关的文章进行查看。

在了解自己知识体系的前提下,学习的方向性就会强上许多,这也是写文章的益处所在。

2.4 良好的学习方式

“谢谢楼主!您这篇文章给我的收获很大”

“阅读量 10000+

“您的文章已被《xx 进阶之路》专题收录”

……

每当看到这些信息的时候,都会感觉很开心,因为自己获得了别人的认可。此时,对于学习和写作都会产生更大的兴趣。一旦兴趣有了,学习效率更容易提上去。这里分享一个从知乎上看到的学习金字塔模型,如图 2-3 所示:

图 2-3 学习金字塔模型

从图 2-3 可以知道为什么写作是一种提高效率的学习方式,因为写作正是一种 “教授给他人” 的主动学习方式的最好体现!

2.5 思考体系化

书面表达与口头表达最大的差异是:口头表达只需要告诉对方发生了什么,而书面表达需要把一个事情全面而透彻的讲清楚。如果想要讲清楚一个事情,就需要建立一个清晰的思考体系。

写作创造了一个能够升级思考的契机,让你可以把点连成线汇成面。例如,当你需要给刚做过的项目写一份总结文档,为了便于读者的理解,你需要考虑以下几点:

  • 我做这个项目是为了解决什么问题?

  • 业界其他团队在面对这个问题时会采用什么方案?

  • 我的方案与他们的方案对比起来有什么优势?

  • 未来有哪些潜在的可迭代优化的方向?

而当你把这些问题都想明白写清楚,就形成了一个清晰的思考体系,自然会取得更大的进步。

在上述的几节中,我们使用大量的篇幅阐述了写作的目的。原因就是希望大家能够理解: 写作,首先是一条自我成长之路 。

三、写作步骤

明确了写作目的之后,接下来就该详细介绍如何写一篇技术文章了。

在写文章之前,先想清楚以下几个问题:

  • 是写给谁看的?

  • 主题是什么?

  • 提纲怎么写?

如果这几个问题想清楚了,文章自然也就水到渠成了。

3.1 目标用户

首先分析文章会给谁看,即文章的目标用户。有了目标用户之后,才知道需要产出一篇什么样的文章。

例如,你的目标用户是从未接触过 iOS 的群体,他们可能连 Xcode 都没有安装过。如果上来就讲 iOS App 性能调优,这基本会导致你的目标用户感觉不知所云。

但是,如果你的文章面向的是更深层次的探讨和分析,为了这部分未接触过 iOS 的用户去增加篇幅大可不必,只会让那些中高级程序员觉得这篇文章废话连篇,原本的价值大打折扣。

实际上,一篇文章不可能面面俱到。即使是书籍,也会有一个读者群体。因此,首先应当明确文章的目标用户。

3.2 确定主题

文章主题涵盖的范围不宜过大,写大而全的东西对作者的水平要求非常高且需要消耗大量精力。如果真想写,也应当先把思路理清,与有经验的人交流之后再开始。

挑选的主题应当是自己了解透彻的东西。如果对于一些细节不太了解,也务必将这些细节点叙述清楚。

3.3 寻找知识点

主题确定好之后,围绕这个主题会有许多相关的知识点,可以通过网络或者其他的方式找到一些阐述主题所需的知识点。

例如,我们想写一篇主题为 iOS crash 分析的文章。围绕这个主题寻找资料,可以找到诸如 crash 的类型、出现的原因、如何收集、如何避免、出现 crash 不让程序崩溃的方法等相关知识。

然后,挑选我们需要介绍的知识点。如果这篇文章主要是讲解如何收集 crash,那就可以将 crash 类型、出现的原因、如何收集这些知识点列入阐述主题所需的知识点,而如何避免等相关知识点就不需要列入我们所介绍的范围。

3.4 提纲和标题

确定主题和所需知识点之后,将需要介绍的知识点按照逻辑顺序或者内容由浅入深进行排列,形成一个提纲。

定义提纲是有技巧的,对于技术文章,基本都是有结构可循的,提纲标题尽量做到言简意赅。

例如,在上一步中我们已经确定好所介绍的知识点为 crash 类型、出现的原因、如何收集,结合技术文章的基本结构,提纲按照由浅入深就可以列为:

1. 前言(基本结构)

2. crash 收集(一共两种 crash,分别介绍类型、出现的原因、如何捕获)

2-1. NSException

(1)NSException 类型常见的异常

(2)常见异常出现的原因

(3)如何捕获

2-2. Unix 信号

(1)Unix 信号类型常见的异常

(2)常见异常出现的原因

(3)如何捕获

3. 踩过的坑(可以根据实际情况确定是否需要)

4. 总结(基本结构)

5. 参考文献(基本结构)

6. 联系方式(可以根据实际情况确定是否需要)

根据主题和提纲,设计一个突出中心的标题即可。例如,根据上面例子中的主题和提纲,文章的标题可以设计为《漫谈 iOS crash 收集》、《iOS crash 收集原理》等。

3.5 完善内容

提纲一旦确定,剩下的工作就是将内容填充到各个目录之中。

这里需要注意的是,完善内容时尽量做到下面几点:

  • 内容正确

  • 图文并茂

  • 语句通顺

  • 格式合理

  • 举例说明

3.6 反复修改

一篇优秀的技术文章并不是写出来的,而是改出来的。文章初稿形成之后,可以把自己想象成读者,尽量多读几遍,反复修改之后达到通顺易读即可。

四、写作技巧

4.1 开始

万事开头难,写作也是一样。不论现在是什么样的水平,如果想提高写作能力,最好的方式就是开始写。可能开始写的几篇文章不够好,但是随着数量的增加,一定会导致质变的产生。

4.2 模仿

写出第一篇优秀的文章将会是一个良好的开端。但是,对于那些写作新手来说,这往往也是最困难的,很多人会觉得无从下手。针对这种情况,我的建议是从模仿开始。

有些读者可能目前还不善于写作,但一定阅读过那些优秀的文章,不妨模仿那些优秀的文章,学习他们是如何给文章起标题的、如何写开场白、如何阐述他们的观点以及如何总结的。通过模仿,会渐渐培养起写作的感觉,并且越写越好。

4.3 多写

任何事情都不能一蹴而就,写作也是。想要写出优秀的文章,最好的方式还是反复练习。熟能生巧,写的多了自然会更容易写出优秀的文章。

4.4 内容技巧

在写具体内容时也有一些技巧,例如:

  • 使用合适的称呼。为了让读者感受到阅读这篇文章就像是在和作者对话一样,文章中可以用 “我” 或 “我们” 来表示作者,用 “您” 或 “大家” 表示读者。

  • 对长句进行断句。要多用短句,避免长句,目的是让读者阅读起来体验更好。

  • 采用多种表达方式。正所谓 “一图胜千言”,对于文字不好表达的地方可以考虑使用插图、表格等形式。

  • 文末总结。文章结尾时一定要有总结,让读者读完文章后,能够快速抓到重点,有一种 “深入浅出” 的体验。

五、总结

本文基于自己对于技术文章写作的一些感悟,同时结合了一些指导写作的优秀文章,总结了写作步骤和写作技巧,希望能给大家在技术文章写作的过程中提供一些帮助。由于时间仓促,个人水平有限,如有错误之处欢迎大家批评指正。

最后,引用之前看到的一句话作为本文的结束:“写作本身是一件非常有意义的事情,它将使你变得更加勤于思考,思维也将变得更加成熟与完善。同时,你也会为自己用心写出的每一篇文章而感到骄傲,并从中获得信心”。

参考文献

  • 【编程之外】为什么我们要写技术文章?

    (https://www.cnblogs.com/penghuwan/p/7053678.html)

  • 知乎上极力推崇读书的人为什么不把上知乎的时间都用来读书?

    (https://www.zhihu.com/question/20982901)

  • 写文章对程序员很重要吗?

    (https://www.zhihu.com/question/273631529)

  • 你也可以写出优秀的技术文章。

    (https://www.jianshu.com/p/954c1c7b3eb7)

  • 如何写好一篇技术文章?

    (https://blog.csdn.net/EAPxUO/article/details/78372442)

  • 技术写作是有技巧的。

    (https://blog.csdn.net/qq_34874784/article/details/90401962)

本文作者

交流合作

本文著作权归神策数据开源社区」所有,商业转载请联系我们获得授权;非商业转载请注明出处,并附上神策数据开源社区服务号二维码。

你还可以扫描二维码,加入社区交流群,与大家一同讨论。也欢迎关注我们的公众号,最新内容尽在掌握!

 

✎✎✎

更多内容

  • 神策分析 Android SDK 之用户路径采集

  • 深入浅出:移动端数据采集埋点 SDK

  • 神策分析 iOS SDK 架构解析

  • 神策分析 Android SDK 架构解析

写作—开启技术成长之路相关推荐

  1. CSDN付费专栏写作感悟及成长之路、兼论学习会员模式的创作者协同效应

    CSDN付费专栏写作感悟及成长之路.兼论学习会员模式的创作者协同效应 目录 CSDN付费专栏写作感悟及成长之路.兼论学习会员模式的创作者协同效应 #首先.感恩. #其次,责任. #再次,初心与收益. ...

  2. 熊写代码这三年:阅读写作与技术成长

    本文是非技术向的随笔,慎点! 熊写代码这三年:阅读写作与技术成长 从属于 程序熊的自我修养系列.临近毕业,随手写了篇随笔,聊以纪念我过去研究生三年间的技术之路,感谢陪伴我这三年的家人,感谢所有陪我一起 ...

  3. 从程序员到架构师的最佳技术成长之路

    我把程序员到架构师的技术成长之路分为几个典型的阶段:工程师 - 高级工程师 - 技术专家 - 初级架构师 - 中级架构师 - 高级架构师,总的成长原则是每个阶段都需要"积累经验.拓宽视野.深 ...

  4. 猿创征文|独特且教训的技术成长之路

    为什么说独特的技术成长之路呢,因为从上了大学到现在读研,见识了很多的语言,也曾经迷茫过.在大学中学过C,C++,Java,Python,Js,GO等等很多的语言知识,有一些比较熟悉有一些只能说是了解. ...

  5. 致敬科技工作者:资深Java工程师的技术成长之路

    在全国科技者工作日这个特殊的日子里,我们向所有为科技进步付出辛勤努力的工作者们致敬.本文将分享一位资深Java工程师的技术成长之路(本人自己),以及他在技术领域取得的成就. 1. 热爱编程的起点 在计 ...

  6. 猿创征文|当我在追光 我与光同航--我与Java的技术成长之路

    文章目录 前言 材料转码 初识JAVA 大学建议 1. 参加比赛 2. 坚持创作 3.养成看书的习惯 Java路线 1. java基础 2. 数据库 3. javaWeb 4. 框架 前言 今天借着官 ...

  7. 猿创征文|我的C/C++技术成长之路

    作者简介:一名双非本科大二网络工程专业在读,热衷编程,喜欢写作 忘记背后,努力面前,向着标杆奋力追求 技术上的成长路线 一.初识C语言 二.ACMer的养成记 三.接触数据结构 四.开始探索C++ 五 ...

  8. Helloworld的技术成长之路:不忘初心,持之以恒

    点击查看活动详情:https://t.csdnimg.cn/L4B8 社区介绍: RT-Thread 是一个集实时操作系统(RTOS)内核.中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集 ...

  9. 逆流而上阿里巴巴技术成长之路

    书由: 网上一些对书的点评,说是一本实际运营故障处理的维护手册.许多只有大公司才能碰到的案例,里面有不少内容如果不了解阿里内部细节,还是不容易看懂的. 这本书的给的介绍与定义是,负责阿里大平台生产稳定 ...

最新文章

  1. Codeforces Round #658 (Div. 2)
  2. 详细分析如何利用python批量爬取百度图片
  3. jQuery UI.Layout
  4. 博弈-巴什博奕-P/N图
  5. django基础-学生管理系统
  6. VS C++ 从字符串中查找字符最后一次出现的位置 strrchr
  7. 石川:股票多因子模型的回归检验
  8. 顶级程序员收藏的数学书
  9. cocos Creator i18n 多语言
  10. 如何在word中的框中打钩、打叉
  11. 科学计算机壁纸,科幻题材电脑插画桌面壁纸
  12. Vuforia Area及新功能讲解
  13. 两阶段目标检测原理详解--SPPNet
  14. 【ACWing】671. DDD
  15. Lightroom Classic全版本软件安装包(含最新2023)
  16. Dynamic Web Module 4.0 requires Java 1.8 or newer.
  17. mysql重叠的词_举例说明叠音词,重叠式复合词,词的重叠,三者有何不同?
  18. yandex注册验证码怎么填_注册163邮箱格式怎么填?163电子邮件注册格式
  19. 【Unity】一些不错的unity插件
  20. 树莓派4B官方说明文档

热门文章

  1. mysql 备份大表 存储过程_mysql批量备份表的存储过程写法
  2. c++编程例子_如何开始厉害的C语言编程?大神都是这样开始的!
  3. sql 发送邮件网络附件_利用VBA发送附件电子邮件
  4. eclipse导入github项目提示没有发现项目_eclipse clone克隆github远程库工程到本地
  5. delphi 实现屏幕旋转代码_Cocos Creator模拟射箭效果 | 附代码
  6. telegraf output input 配置用法
  7. 在长文本中当中使用正则表达式匹配限定长度范围的数字串的方法
  8. eval在类型转换的妙用
  9. 天地图 热力图_arcgis js 3.x使用webgl绘制热力图
  10. php如何定义的数位置,php如何实现不借助IDE快速定位行数或者方法定义的文件和位置...