写文章图片 如何写技术博客
新的一年,我们观远也开始尝试团队技术博客的形式,推出了 观远技术团队博客[1] 这个新专栏。后续我们会在这个专栏收录观远各个技术团队的相关分享,专注于 BI AI 数据智能领域的话题,包括前端,后端,算法,运维,测试等多个技术方向,欢迎感兴趣的小伙伴们订阅关注。对于文章中的问题,也非常欢迎大家来一起探讨,提供更好的建议,如果觉得我们的文章还不错,也请多多点赞转发支持哈。
为了便于团队同学一起参与到技术博客的撰写中来,我这边也专门写一篇如何写技术博客的分享,与大家一起探讨学习。
为何要写技术博客
关于这个问题,已经有很多大佬给过建议了。对于我个人来说,写技术博客主要有以下几个出发点。
加深知识理解和掌握
程序员群体很多都挺爱学习,大家经常在工作之余看些技术书籍,刷一些公开课来开拓视野,提升技术水平。不过仅仅有“输入”其实是很难真正掌握一些知识的,我们需要结合各种方式的“输出”来验证自己所学的知识,比如动手实现一些原型,在公司项目中进行应用,或者做一个分享,写一篇博客来将这个新知识讲述给别人。当你在撰写技术博客时,会更加立体地去思考技术点背后的“What,Why,How”,很多读书过程中没有想到的细节,或者背后潜藏的发展历程故事,都会在撰写过程中去不断挖掘完善。所以很多时候我们也会说,做分享其实收益最大的并不是听分享的人,而是做分享的。
完善个人“技术地图”
大家在工作几年后,逐渐会进入到某些特定的领域进行深入的发展,在这个领域中可能有许多相关的技术内容,背后有千丝万缕的联系,而一系列的技术博客也是帮助我们整理,完善这些技术点,进行更高层次的思考和融会贯通的一种途径。一个比较有意思的例子是大数据和分布式系统领域的神书《数据密集型应用系统设计[2]》,书中附带了很多关于这个领域的“技术地图”,非常的高屋建瓴。后续有新技术的出现,我们也可以“映射”到这幅地图上去做整体性的思考,利用已有的积累和框架去快速理解新事物的差异点和创新之处。持续积累了一定数量的高质量博客后,我们还可以考虑出一本书,进一步扩大影响力 🙂
提升写作与沟通能力
这方面的能力对于技术人员的职业发展也是相当有帮助,之前在我的 资深工程师之路系列[3] 中也有所介绍。做项目不光光是架构设计,代码实现,测试,发布运维这些偏技术的内容,也非常需要项目意义的阐述,业务需求的沟通,架构设计的讨论与宣导,项目应用的推广与运营等跟沟通紧密相关的重要环节。无论你想成为独当一面的技术大牛,还是带领团队的 tech lead,写作沟通都是非常重要的技能,需要持续投入,刻意练习。
拓展人脉圈
个人的力量总是非常有限的,而如今的技术发展又是日新月异,高速迭代。很多时候与其他专家的交流探讨能大大提升你对某些技术领域的理解,甚至在公司急需某个方向专业人才的时候还有机会可以直接邀请大佬的加入,一起干一些大事 🙂 运营优秀的个人/公司技术博客或开源项目,是一种非常好的打造技术品牌的方式,大佬肯定是更喜欢跟高水平的同僚探讨合作的嘛。
生活**
当然也有很多技术人也会写一些生活化的博客文章,比如 大佬的博客[4] 里就有很多旅行,绘画,读书等方面的内容,读起来也是精彩纷呈。平时写写博客**生活,抒发情感也是一种很好的消遣方式,说不定以后我也可以尝试一下 🙂
如何写一篇技术博客
这个部分,我们主要来介绍一下写一篇技术博客的整体流程一般是怎么样的。
明确主题
比较常见的技术博客选题方式有几种:
针对工作领域体系性的技术介绍。例如作为算法工程师,可以系统性地介绍所在业务领域的常见模型,他们的发展历程,背后的关联,优缺点等。后端开发也可以从各类框架工具,架构设计,系统组件等方面来选择相关的主题。这些选题可以和你个人的工作规划紧密的结合起来,例如这个季度打算做系统的云原生改造,那么就可以集中火力调研一系列这个方向的技术话题,并总结成文章。对于自己熟悉的技术,可以做深入剖析,或者做更高维度的提炼总结;对于一些不熟悉的新技术,也可以边学习,边记笔记,后续整理成博客文章。
实战中碰到的疑难杂症的**。个人还挺喜欢看这类 debug 相关的文章,尤其是那些隐藏很深,难以复现的复杂问题,可以通过高超的工具和技术层层抽丝剥茧,定位到根因并加以解决的经历过程。如果说技术介绍的文章读起来像说明文的话,那么这种类型的文章就很像引人入胜的小说了。这类文章如果解决的是一类大家经常碰到的问题,被搜索访问的点击量也会比较高。
技术史话,人物传记,技术圈八卦的故事型文章。比较典型的代表有吴军老师写的《浪潮之巅》,飞总早年写的 大数据那些事[5],还有最近看到的 的专栏 科技星辰[6] 等。这种类型的文章要写的好,一般都是大佬级选手了,需要在行业积累了足够的经验和视野,经历了技术发展的跌宕起伏,才能把控得游刃有余,读起来也是非常引人入胜。
还有一类很受欢迎的文章是“导航型”或者“经验分享型”的。例如我之前写的 算法工程师技术路线图[7],可能因为大家都或多或少有点“收藏就等于看过”,“看了一堆目录就等于全都看过”了的心态吧 🙂 这种类型的文章受众也会比较广,很容易获得高点击量,不过对于写作者自身来说提升帮助并没有那么大。
外文资料的翻译和解读。有很多优秀的一手技术资料都是以英文形式出现在互联网上,例如顶级的学术会议,开源项目或者大公司组织的开发者大会,推特, 上的一些新的文章和讨论,高质量的外文播客等等。我们也可以结合自身的一些经验,将这些内容翻译,搬运到国内的博客平台上。
大家可以根据自身喜好来进行选择,平时工作中也可以多留意可以总结提炼的知识点,后续汇聚成文。
调研学习
个人习惯在确定主题之后,先做一番已有相关文章的调研学习。比如在知乎, 上搜索一下中文世界中已有的相关文章,看看他们已经覆盖了哪些内容,深度和广度如何,是否有一些我们独有的认知没有被提到,读者有一些什么样的反馈建议等。如果发现已经有写的非常完善的文章了,个人无法作出多少额外的新贡献,我就会选择暂且搁置这个主题。无论是否继续撰写文章,整个调研过程也可以让我们学到不少新的东西。
素材积累
确定主题后,我们就可以开始着手做相关素材的积累,其中上一步的调研学习过程中,就可以把一些看到的比较好的资料**下来。对于一些新的知识,这个素材积累的过程可能会持续一段时间,需要看更多的书,文章,视频等来不断丰富自己的理解。以我之前写的 走马观花 [8] 为例,光看各种论文参考断断续续就花了 3 个月。养成了写博客的习惯后,我们就可以持续做这类的素材收集工作,对于平时的阅读学习来说也会更有目标性一些。
确定大纲
开始正式进入到撰写阶段,我们可以整体浏览一遍之前积累的素材内容,做一些区分归类,然后把文章大致的框架脉络确定下来,比如可以把各层级标题先写下来,或者画个思维导图。对于现代读者来说,大段的文字很容易让人失去耐心,所以逻辑条理清晰的分段分层非常重要。这其实跟写代码时做一些模块划分的设计类似,个人比较习惯这种 top-down 的方式,后续写具体内容也会非常自然流畅。写好大纲之后可以从初学者的角度带入来体会一下整体的阐述思路是否清晰易懂,避免后期的较大的返工修改。
完成具体内容
如果前面准备工作做的比较充分,这部分的工作总体来说会比较顺利,比小时候写 800 字的作文要轻松得多了有没有。而且这部分可以有很多的自由发挥空间,比如有些人喜欢通过讲故事的方式来做串联,有些人会穿插很多精美的插图来帮助理解,有些人相对平铺直叙,就会看起来比较“干”(比如我)。这里有个小建议是除非文章的主题跟代码或数学讲解强相关,否则不要在文中加入比例过高的代码和公式,尽量以具体的例子,配图等方式来简化一些复杂的概念,能更好的帮助读者理解核心思想。这里比较好的范例是专门讲解数学的视频博主 3B1B[9],用很多可视化的方式把很多复杂的数学问题都讲得十分清晰透彻。
除了正文内容,我们也可以在其中穿插一些思考题,小故事等,保持读者的注意力,增加互动机会。比如王喆大佬之前写的一系列推荐系统的文章中每篇最后都会提一些问题来引发大家的思考和讨论,效果也非常不错。
审阅优化
完成撰写后,先别急着发布,可以以读者的视角再从头到尾读几遍文章,或者找一些朋友帮忙先预览一下。一方面确认整体的阐述上没有明显的纰漏或者表达不清的地方,另一方面也对于各种错别字,排版样式等进行最后的复核检查。很多时候我都会把文章在草稿箱里搁置个几天,看看过程中有没有出现一些新的修改完善想法,可以及时做补充,毕竟很多平台发布之后就不允许大幅度的修改了。
发布与运营
最后就是把博客文章进行发布了,我们可以选择的发布平台也有很多,例如微信公众号,知乎,掘金,,简书,语雀,CSDN,博客园等,也可以利用 或者自建站的形式。由于目前平台选项的繁多,所以我们一般不会直接在这些平台进行撰写,而是把撰写和发布“解耦”,在本地撰写文章,然后再选择不同的平台去导入发布,具体的操作会在后面的工具栈环节进行描述。目前我个人选择的平台是公众号和知乎,前者方便在朋友圈做做推广和在手机上阅读,后者相对来说社区质量还算比较高,可以与大家一同交流学习,另外阅读体验上来说也比较清爽。如果读者规模到了一定量级,自建站也是一种不错的选择。