如何写好一篇技术文章?

程序员cxuan 2023-08-04 08:34

文字是我们感知世界的方式。

今天分享一下关于如何写好一篇技术播客的文章,这位作者总结的还是非常全面和到位的。

为何要写技术博客

关于这个问题,已经有很多大佬给过建议了。对于我个人来说,写技术博客主要有以下几个出发点。

加深知识理解和掌握

程序员群体很多都挺爱学习,大家经常在工作之余看些技术书籍,刷一些公开课来开拓视野,提升技术水平。不过仅仅有“输入”其实是很难真正掌握一些知识的,我们需要结合各种方式的“输出”来验证自己所学的知识,比如动手实现一些原型,在公司项目中进行应用,或者做一个分享,写一篇博客来将这个新知识讲述给别人。当你在撰写技术博客时,会更加立体地去思考技术点背后的“What,Why,How”,很多读书过程中没有想到的细节,或者背后潜藏的发展历程故事,都会在撰写过程中去不断挖掘完善。所以很多时候我们也会说,做分享其实收益最大的并不是听分享的人,而是做分享的

完善个人“技术地图”

大家在工作几年后,逐渐会进入到某些特定的领域进行深入的发展,在这个领域中可能有许多相关的技术内容,背后有千丝万缕的联系,而一系列的技术博客也是帮助我们整理,完善这些技术点,进行更高层次的思考和融会贯通的一种途径。一个比较有意思的例子是大数据和分布式系统领域的神书《数据密集型应用系统设计[2]》,书中附带了很多关于这个领域的“技术地图”,非常的高屋建瓴。后续有新技术的出现,我们也可以“映射”到这幅地图上去做整体性的思考,利用已有的积累和框架去快速理解新事物的差异点和创新之处。持续积累了一定数量的高质量博客后,我们还可以考虑出一本书,进一步扩大影响力 :)

提升写作与沟通能力

这方面的能力对于技术人员的职业发展也是相当有帮助,之前在我的 资深工程师之路系列[3] 中也有所介绍。做项目不光光是架构设计,代码实现,测试,发布运维这些偏技术的内容,也非常需要项目意义的阐述,业务需求的沟通,架构设计的讨论与宣导,项目应用的推广与运营等跟沟通紧密相关的重要环节。无论你想成为独当一面的技术大牛,还是带领团队的 tech lead,写作沟通都是非常重要的技能,需要持续投入,刻意练习。

拓展人脉圈

个人的力量总是非常有限的,而如今的技术发展又是日新月异,高速迭代。很多时候与其他专家的交流探讨能大大提升你对某些技术领域的理解,甚至在公司急需某个方向专业人才的时候还有机会可以直接邀请大佬的加入,一起干一些大事 :) 运营优秀的个人/公司技术博客或开源项目,是一种非常好的打造技术品牌的方式,大佬肯定是更喜欢跟高水平的同僚探讨合作的嘛。

生活记录

当然也有很多技术人也会写一些生活化的博客文章,比如 pluskid 大佬的博客[4] 里就有很多旅行,绘画,读书等方面的内容,读起来也是精彩纷呈。平时写写博客记录生活,抒发情感也是一种很好的消遣方式,说不定以后我也可以尝试一下 :)

如何写一篇技术博客

这个部分,我们主要来介绍一下写一篇技术博客的整体流程一般是怎么样的。

明确主题

比较常见的技术博客选题方式有几种:

  1. 针对工作领域体系性的技术介绍。例如作为算法工程师,可以系统性地介绍所在业务领域的常见模型,他们的发展历程,背后的关联,优缺点等。后端开发也可以从各类框架工具,架构设计,系统组件等方面来选择相关的主题。这些选题可以和你个人的工作规划紧密的结合起来,例如这个季度打算做系统的云原生改造,那么就可以集中火力调研一系列这个方向的技术话题,并总结成文章。对于自己熟悉的技术,可以做深入剖析,或者做更高维度的提炼总结;对于一些不熟悉的新技术,也可以边学习,边记笔记,后续整理成博客文章。
  2. 实战中碰到的疑难杂症的记录。个人还挺喜欢看这类 debug 相关的文章,尤其是那些隐藏很深,难以复现的复杂问题,可以通过高超的工具和技术层层抽丝剥茧,定位到根因并加以解决的经历过程。如果说技术介绍的文章读起来像说明文的话,那么这种类型的文章就很像引人入胜的小说了。这类文章如果解决的是一类大家经常碰到的问题,被搜索访问的点击量也会比较高。
  3. 技术史话,人物传记,技术圈八卦的故事型文章。比较典型的代表有吴军老师写的《浪潮之巅》,飞总早年写的 大数据那些事[5],还有最近看到的 OneFlow 的专栏 科技星辰[6] 等。这种类型的文章要写的好,一般都是大佬级选手了,需要在行业积累了足够的经验和视野,经历了技术发展的跌宕起伏,才能把控得游刃有余,读起来也是非常引人入胜。
  4. 还有一类很受欢迎的文章是“导航型”或者“经验分享型”的。例如我之前写的 算法工程师技术路线图[7],可能因为大家都或多或少有点“收藏就等于看过”,“看了一堆目录就等于全都看过”了的心态吧 :) 这种类型的文章受众也会比较广,很容易获得高点击量,不过对于写作者自身来说提升帮助并没有那么大。
  5. 外文资料的翻译和解读。有很多优秀的一手技术资料都是以英文形式出现在互联网上,例如顶级的学术会议,开源项目或者大公司组织的开发者大会,推特,HackerNews 上的一些新的文章和讨论,高质量的外文播客等等。我们也可以结合自身的一些经验,将这些内容翻译,搬运到国内的博客平台上。

大家可以根据自身喜好来进行选择,平时工作中也可以多留意可以总结提炼的知识点,后续汇聚成文。

调研学习

个人习惯在确定主题之后,先做一番已有相关文章的调研学习。比如在知乎,Google 上搜索一下中文世界中已有的相关文章,看看他们已经覆盖了哪些内容,深度和广度如何,是否有一些我们独有的认知没有被提到,读者有一些什么样的反馈建议等。如果发现已经有写的非常完善的文章了,个人无法作出多少额外的新贡献,我就会选择暂且搁置这个主题。无论是否继续撰写文章,整个调研过程也可以让我们学到不少新的东西。

素材积累

确定主题后,我们就可以开始着手做相关素材的积累,其中上一步的调研学习过程中,就可以把一些看到的比较好的资料记录下来。对于一些新的知识,这个素材积累的过程可能会持续一段时间,需要看更多的书,文章,视频等来不断丰富自己的理解。以我之前写的 走马观花 AutoML[8] 为例,光看各种论文参考断断续续就花了 3 个月。养成了写博客的习惯后,我们就可以持续做这类的素材收集工作,对于平时的阅读学习来说也会更有目标性一些

确定大纲

开始正式进入到撰写阶段,我们可以整体浏览一遍之前积累的素材内容,做一些区分归类,然后把文章大致的框架脉络确定下来,比如可以把各层级标题先写下来,或者画个思维导图。对于现代读者来说,大段的文字很容易让人失去耐心,所以逻辑条理清晰的分段分层非常重要。这其实跟写代码时做一些模块划分的设计类似,个人比较习惯这种 top-down 的方式,后续写具体内容也会非常自然流畅。写好大纲之后可以从初学者的角度带入来体会一下整体的阐述思路是否清晰易懂,避免后期的较大的返工修改。

完成具体内容

如果前面准备工作做的比较充分,这部分的工作总体来说会比较顺利,比小时候写 800 字的作文要轻松得多了有没有。而且这部分可以有很多的自由发挥空间,比如有些人喜欢通过讲故事的方式来做串联,有些人会穿插很多精美的插图来帮助理解,有些人相对平铺直叙,就会看起来比较“干”(比如我)。这里有个小建议是除非文章的主题跟代码或数学讲解强相关,否则不要在文中加入比例过高的代码和公式,尽量以具体的例子,配图等方式来简化一些复杂的概念,能更好的帮助读者理解核心思想。这里比较好的范例是专门讲解数学的视频博主 3B1B[9],用很多可视化的方式把很多复杂的数学问题都讲得十分清晰透彻。

除了正文内容,我们也可以在其中穿插一些思考题,小故事等,保持读者的注意力,增加互动机会。比如王喆大佬之前写的一系列推荐系统的文章中每篇最后都会提一些问题来引发大家的思考和讨论,效果也非常不错。

审阅优化

完成撰写后,先别急着发布,可以以读者的视角再从头到尾读几遍文章,或者找一些朋友帮忙先预览一下。一方面确认整体的阐述上没有明显的纰漏或者表达不清的地方,另一方面也对于各种错别字,排版样式等进行最后的复核检查。很多时候我都会把文章在草稿箱里搁置个几天,看看过程中有没有出现一些新的修改完善想法,可以及时做补充,毕竟很多平台发布之后就不允许大幅度的修改了。

发布与运营

最后就是把博客文章进行发布了,我们可以选择的发布平台也有很多,例如微信公众号,知乎,掘金,SegmentFault,简书,语雀,CSDN,博客园等,也可以利用 Github 或者自建站的形式。由于目前平台选项的繁多,所以我们一般不会直接在这些平台进行撰写,而是把撰写和发布“解耦”,在本地撰写文章,然后再选择不同的平台去导入发布,具体的操作会在后面的工具栈环节进行描述。目前我个人选择的平台是公众号和知乎,前者方便在朋友圈做做推广和在手机上阅读,后者相对来说社区质量还算比较高,可以与大家一同交流学习,另外阅读体验上来说也比较清爽。如果读者规模到了一定量级,自建站也是一种不错的选择。

另外就是对博客的推广运营了,这方面说实话我并不擅长,所以整体的关注者和阅读量都一直比较低迷。一些比较通用的运营方法包括在文章中添加版权信息,历史文章的索引,在不同的社群和论坛做文章宣传,选择合适的时间段进行发布等。另外对于各个平台也有自己专门的推广方式,例如知乎上可以选择关注量较大的问题来回答,相比写文章来说天然流量会更大些。此外知乎也提供了内容自荐等创作推广功能。而微信公众号则可以设置一系列的自动回复,自定义菜单,话题标签等,提升关注者的互动体验。

工具栈

最后一个部分,我们结合上面的写作流程来介绍一下个人感觉比较舒服的一套工具栈。

选题与素材管理

这部分的工作,我一般采用待办任务和笔记的方式来进行,主要使用的工具是 Notion。

对于选题,可以创建相关的任务来做管理。我对于自己的要求比较低,工作之余一个月能产出一篇差不多就可以了……

素材方面,可以利用一些 Notion 模板来将看过的东西做分类记录,后续在写作时通过 tag 过滤来统一浏览。一些零碎的点也可以直接记录在待办任务页面里。

Notion 笔记列表

文章撰写

主编辑器

为了在多平台进行发布,我们可以选择相对通用的文本格式,如 markdown 来进行具体的内容撰写。早期尝试过一些专用的 markdown 编辑器,如 Typora 等,但后来发现在文章比较长,链接和图片比较多的时候,Typora 的性能出现了很多问题,非常影响写作体验。后续经过一番调研,选择了 vscode[10] 作为主要的编辑器。Vscode 的整体性能还是比较优秀的,几万字的文章编辑起来也完全不会有任何卡顿。另外 vscode 的插件体系也很强大,有一系列帮助提高我们撰写效率的工具,例如我个人比较喜欢的 Markdown Image 来支持图片的插入和自动图床同步,Pangu-Markdown 来做中文文本的自动格式化等。

云端同步

使用很多在线平台都可以支持自动的云端同步,这样我们就可以在不同的电脑上进行文章的撰写,也不用担心电脑 down 机导致的内容丢失问题。不过 vscode 本身并没有这样的能力,所以我们需要结合云盘来实现类似的功能。因为我购买了 Office 365 的订阅,所以也顺理成章用了 OneDrive 来作为我们的云同步服务。使用起来也非常的简单,只要把相关 markdown 等文件存在电脑的 OneDrive 目录下即可,撰写过程中一旦有文件新增或保存,都会做自动同步。

此外,如果需要多人合作写一篇文章,也可以在此基础上再引入 git 来做代码同步。当然这个方案从实时性上来说还是比不上很多在线协同文档软件,但对于创作周期较长的文章来说基本还可以接受。

Vscode + OneDrive

图床

前面有提到 vscode 的 Markdown Image 插件,其中就支持很多不同的图床。使用图床而不是本地文件的好处在于,我们后续上传到不同平台时,不会出现 markdown 中的图像链接解析不出来的问题,否则的话就得一张一张图片重新上传,工作量还是比较大的。图床服务本来想用七牛,但注册审核方面貌似比较麻烦,最后还是采用了更简单一些的 CODING[11] 来进行托管,然后在插件中配置一下 access token 基本就可以了,后续有任何想要插入的图片,复制后使用快捷键 alt + shift + v 即可。当然图片本身我还是会在 OneDrive 的同目录下也保存一份,以免后续有云服务失效图片找不回来的问题。

备注:很多在线笔记平台可以做到上面三个工具的全功能,比如语雀,Notion 等,所以直接使用这些平台理论上也是可行的。但需要注意评估一下 markdown 导出之类的功能是否完善,比如链接,代码,公式,图片,各种格式信息的导出是否完整且符合通用标准,避免后续出现难以迁移发布的困难。

绘图

很多时候我们还需要自己绘制一些结构图来更好的阐述相关内容,之前我一般用 ProcessOn[12] 或者 draw.io[13] 这类相对正式一些的在线绘图工具。后来一个偶然的机会接触到了 excalidraw[14] 这个手绘风格的工具,就立刻被吸引住了。虽然提供的图形很少,但基本够用,而且效果也很有“个性”,挺适合博客这类非正式场合的配图的。另外它还有个优势是可以使用快捷键,下面这个示意配图基本可以在 2 分钟之内快速搞定。

Excalidraw

有时候绘图中我们还希望加一些不同色彩的区分,一般来说各种网站预置的色板都比较丑,我们也可以从一些工具网站参考更现代美观的配色方案,例如 coolors[15]

配色方案生成器

如果代码内容不多,又对字体,排版有比较高的要求,还可以试试这个生成代码图片的 carbon[16]

代码图片生成

发布

Markdown 排版

由于微信公众号有一些限制,比如不能带外链等,一般在导入到公众号草稿前我们还需要做一些排版工作。目前我用的网站是 markdown.com.cn[17],可以选择一系列模板,并做一些 css 格式上的微调。这个网站还可以一键把外链转成备注信息,这点尤其实用。如果你正在微信公众号上读这篇文章,拉到最后就能看到效果 :)

值得一提的是,微信公众号的文章编辑页面自带了错别字检测功能,我在发布到其它平台之前也会用这个功能先做一下大致的检查。

题图资源

不同网站在做发布时可能还需要一些额外的操作,标题,简介这些常规的还是比较好搞定的,不过题图这个就稍微有些难度了。我目前一般会直接在正文配图中挑选一张,或者去 Unsplash[18] 上搜索相关的图片来作为题图。也有很多作者会按照一定的风格来进行自制,也是不错的选择。

自建站框架

如果打算自建博客,那么可以用类似 hexo[19] 之类的博客框架来帮助直接生成整个静态站,然后就可以直接部署在 Github Pages 上,连买服务器之类的都省了,相当方便。更复杂一些的 wordpress 之类的我个人就没有尝试过了。

写在最后

写技术博客还是一个需要长期坚持的事情,工作之后断断续续写了这么些年,还是个技术小号。不过持续下来对于个人的技术积累,沟通表达能力的提升还是相当明显的。

参考资料

[1]

观远技术团队博客: https://www.zhihu.com/column/c_1473064639017254912

[2]

数据密集型应用系统设计: https://book.douban.com/subject/30329536/

[3]

资深工程师之路系列: https://zhuanlan.zhihu.com/p/410206677

[4]

pluskid 大佬的博客: https://freemind.pluskid.org/

[5]

大数据那些事: https://www.zhihu.com/column/feizong

[6]

科技星辰: https://www.zhihu.com/column/c_1441815196541480960

[7]

算法工程师技术路线图: https://zhuanlan.zhihu.com/p/192633890

[8]

走马观花 AutoML: https://zhuanlan.zhihu.com/p/212512984

[9]

3B1B: https://space.bilibili.com/88461692

[10]

vscode: https://code.visualstudio.com/

[11]

CODING: https://coding.net/

[12]

ProcessOn: https://www.processon.com/

[13]

draw.io: https://app.diagrams.net/

[14]

excalidraw: https://excalidraw.com/

[15]

coolors: https://coolors.co/

[16]

carbon: https://carbon.now.sh/

[17]

markdown.com.cn: https://markdown.com.cn/editor/

[18]

Unsplash: https://unsplash.com/

[19]

hexo: https://hexo.io/zh-cn/


程序员cxuan cxuan 写的文章还不错。会分享计算机底层、计算机网络、操作系统,Java基础、框架、源码等文章。
评论
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 100浏览
  • 当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发布搭载紫光展锐A7870的上汽海外MG量产车型,并发布A7710系列UWB数字钥匙解决方案平台,可应用于数字钥匙、活体检测、脚踢雷达、自动泊车等多种智能汽车场景。 联合发布量产车型,推动汽车智能化出海紫光展锐与上汽海外出行达成战略合作,联合发布搭载紫光展锐A7870的量产车型
    紫光展锐 2024-12-03 11:38 101浏览
  • 11-29学习笔记11-29学习笔记习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-02 23:58 71浏览
  • 遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或1500000。修改Loader打印波特率查看对应芯片的MINIALL.ini确定要修改的bin文件#查看对应芯片的MINIALL.ini cat rkbin/RKBOOT/RK3562MINIALL.ini修改uart baudrate参数修改以下目
    Industio_触觉智能 2024-12-03 11:28 84浏览
  • 《高速PCB设计经验规则应用实践》+PCB绘制学习与验证读书首先看目录,我感兴趣的是这一节;作者在书中列举了一条经典规则,然后进行详细分析,通过公式推导图表列举说明了传统的这一规则是受到电容加工特点影响的,在使用了MLCC陶瓷电容后这一条规则已经不再实用了。图书还列举了高速PCB设计需要的专业工具和仿真软件,当然由于篇幅所限,只是介绍了一点点设计步骤;我最感兴趣的部分还是元件布局的经验规则,在这里列举如下:在这里,演示一下,我根据书本知识进行电机驱动的布局:这也算知行合一吧。对于布局书中有一句:
    wuyu2009 2024-11-30 20:30 122浏览
  • 戴上XR眼镜去“追龙”是种什么体验?2024年11月30日,由上海自然博物馆(上海科技馆分馆)与三湘印象联合出品、三湘印象旗下观印象艺术发展有限公司(下简称“观印象”)承制的《又见恐龙》XR嘉年华在上海自然博物馆重磅开幕。该体验项目将于12月1日正式对公众开放,持续至2025年3月30日。双向奔赴,恐龙IP撞上元宇宙不久前,上海市经济和信息化委员会等部门联合印发了《上海市超高清视听产业发展行动方案》,特别提到“支持博物馆、主题乐园等场所推动超高清视听技术应用,丰富线下文旅消费体验”。作为上海自然
    电子与消费 2024-11-30 22:03 98浏览
  • 概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功
    coyoo 2024-12-03 12:20 108浏览
  • TOF多区传感器: ND06   ND06是一款微型多区高集成度ToF测距传感器,其支持24个区域(6 x 4)同步测距,测距范围远达5m,具有测距范围广、精度高、测距稳定等特点。适用于投影仪的无感自动对焦和梯形校正、AIoT、手势识别、智能面板和智能灯具等多种场景。                 如果用ND06进行手势识别,只需要经过三个步骤: 第一步&
    esad0 2024-12-04 11:20 50浏览
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 119浏览
  • 作为优秀工程师的你,已身经百战、阅板无数!请先醒醒,新的项目来了,这是一个既要、又要、还要的产品需求,ARM核心板中一个处理器怎么能实现这么丰富的外围接口?踌躇之际,你偶阅此文。于是,“潘多拉”的魔盒打开了!没错,USB资源就是你打开新世界得钥匙,它能做哪些扩展呢?1.1  USB扩网口通用ARM处理器大多带两路网口,如果项目中有多路网路接口的需求,一般会选择在主板外部加交换机/路由器。当然,出于成本考虑,也可以将Switch芯片集成到ARM核心板或底板上,如KSZ9897、
    万象奥科 2024-12-03 10:24 68浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 120浏览
  •         温度传感器的精度受哪些因素影响,要先看所用的温度传感器输出哪种信号,不同信号输出的温度传感器影响精度的因素也不同。        现在常用的温度传感器输出信号有以下几种:电阻信号、电流信号、电压信号、数字信号等。以输出电阻信号的温度传感器为例,还细分为正温度系数温度传感器和负温度系数温度传感器,常用的铂电阻PT100/1000温度传感器就是正温度系数,就是说随着温度的升高,输出的电阻值会增大。对于输出
    锦正茂科技 2024-12-03 11:50 106浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦