前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「面向信仰编程」Draven 专访:像写代码一样,用树形的结构写文章

「面向信仰编程」Draven 专访:像写代码一样,用树形的结构写文章

原创
作者头像
Shopee技术团队
修改2022-04-23 22:37:05
5840
修改2022-04-23 22:37:05
举报
文章被收录于专栏:Shopee技术实践Shopee技术实践

本文首发于Shopee技术团队

站在网络与技术前沿的不少开发者们,还保持着如今看起来略显古早的 Web 2.0 时代行为——写博客。

技术博客写作是工程师们沿袭已久的传统。对于各种代码段、架构图,和层级分明的逻辑推导过程来说,技术文章无疑是一种经过检验的有效交流方式。

写技术文档则是工程师们的另一种日常。面对技术文档,有人投入,有人头疼。

写代码与写文档,到底能不能够获得和解?本期读书日特辑,我们邀请到一位收获了不少读者的 Shopee 工程师,来和大家一起聊聊技术写作这回事儿。

Draven 是来自 Shopee Engineering Infrastructure 团队的后端工程师。在工作之余,他还拥有另一重身份——技术写作者。

如果你恰巧读过「面向信仰编程」的博客文章,没错,Draven 就是那位不愿透露姓名的博主。他在博客分享自己的技术学习笔记,和对程序设计原理的思考,还有发布后大受欢迎的技术文章配图指南。

从博客中可以窥得 Draven 对系统性思考与总结的偏好。他写系列文章,从「为什么这么设计」到「看看论文」;他在学习与探索 Go 语言的过程中,将思考剥离为文章,开源成电子书,又在 2021 年末集结成册,出版纸质书。

如何从写博客到出书?写技术文章究竟带来了什么?又怎样快速接触新的知识?以下是 Draven 关于技术写作与知识获取的分享。

Q:先简单介绍一下自己吧 :D

A: 我是 Draven,很多人可能都是通过我的博客听说我的。在大学期间主要学的是软件工程,大学四年基本都是在做 iOS 客户端开发,毕业之后就开始做后端开发,做过交易所、也做过调度系统,近两年主要做 Kubernetes 相关的开发工作。目前对云原生、操作系统内核都比较感兴趣。

Q:最开始写技术文章的时候,应该还是在校时期?当时是怎么决定要开始搭建博客?受谁的影响比较大?

A: 开始写博客的时候应该是在大二,原因也比较简单,当时受到学长的影响,提到写博客对以后找工作都比较有帮助,所以自己就开始折腾博客了。比较早的时候是当做笔记来写的,后面发现博客有了读者,就把之前个人觉得价值比较低而且没什么人看的内容都删掉了。

Q:你在一篇博客文章中提到,把「提高技术影响力」加入了自己的 OKR,今年的 OKR 里还有这一项吗?替读者们问一下,为什么坚持写了好几年的博客这几个月停更了?

A: 今年的 OKR 还是有这一项的,只是具体内容在完成或者到 Deadline 之前就先不说了。这半年的很多业余时间都在准备《Go 语言设计与实现》的出版,而且作为内容的创作者来说,不是任何时候都是有表达和分享的欲望以及内容的,博客连着写了五六年的时间,自己逐渐对之前想要分享的题目失去了兴趣,所以想找一些新的方向和内容。

Q:你前面提到「在一个主题中的重复写作是痛苦的」,但实际上你在博客写作中也规划了主题,例如「为什么这么设计」系列。写书和写博客,两种主题写作的最大区别在哪里?它们享有同一种痛苦吗?

A: 写书和写系列博客都是内容的写作,前者往往需要内容有更强的相关性、连续性以及足够的篇幅,这也需要持续对同一内容进行输出,因为我们在写书的过程中有很明确的目的性,所以这个周期是比较漫长和痛苦的,不容易坚持下来。不过也正因为困难,你在完成后得到巨大的成就感,也会释放很多压力。后者更像是对一组博客的分类和整理,它没有明确完成的时间点,所以写起来反而会更随意,少了很多压力,如果实在觉得这个主题写不下去了,换一个主题就可以了,倒是没有写书的过程困难。

Q:在工作之余写博客、写书,做技术分享,有没有计算过在这一类事情上投入的时间成本?让你持续下去的动力有哪些?

A: 写博客和写书对于自己来说其实是一个输入和输出同时进行的过程,这些付出的时间最终都会回馈到自己身上,你会发现原本自己认为已经掌握的知识其实并没有掌握,缺失的细节会在这个过程中补齐,这个过程需要我们严格遵循因果关系,得到合理的逻辑链条,这样才能真正得到相对正确的知识。

Q:结合自身经历,你怎么看待技术写作/技术分享对 Developer 的收益?

A: 提到技术写作、技术分享的收益,很多人首先提到的都是技术影响力,这里不想谈关于技术影响力这个听起来比较虚的话题。这里更实际地介绍一下,这件事情对我们的个人能力,尤其是对自己带来了哪些改变。技术写作并不是少数人才会做的事情,我们输出的技术方案和文档都需要掌握一定写作的能力,如何写出符合认知、易于理解的文档,在工作中是与写代码同样重要的,我一直都认为能写好代码的人一定能写好文档。以个人为例,如果现在重新读以前写的博客,会发现以前的文章逻辑不够缜密,结构也不够严谨,今天在写作时会更加注重结论的推导过程,与过去相比是能感觉到明显有提升的。我们使用树形的结构写代码,控制组件的依赖关系,也同样用树形的结构写文章,降低读者的心智负担,这些都是相似的。之前看到过一句话,写得非常好,在这里分享给大家:「写作之难,在于把网状的思考,用树状的语法结构,转换成线性字符串。」

Q:从博客中可以看到,你最开始做 iOS 开发,然后去写了 Ruby on Rails,后来也折腾过 Java,到 2020 年担任 K8s Scheduling SIG 的 Reviewer,方向转变的过程中觉得最困难的是什么?以及如果有的同学想转到一个感兴趣,但却在日常工作中接触不到的方向,有什么样的建议?

A: 方向转变的过程中,我们遇到的问题应该都是相似的:如何凭借已经有的知识快速探索新的领域。如果想转到一个感兴趣的方向,建议用好搜索引擎搜索该领域的关键字,然后用深度遍历和广度遍历的方式逐一研究搜索出的结果,快速筛选信息,在这个阶段只要肯花时间,提升是非常快的,学习新知识可能会痛苦,但是探索和收获的过程一般都是快乐的。

Q:接触新的技术栈时,你会如何掌控自己的学习路径?在学习的过程中,参考他人的相关文章、书籍或是社区中的经验交流,起到了多少作用?

A: 这两年接触新的技术栈一般都比较功利了,平时只会去了解这些组件能够做什么,只有真正用到的时候才会边用边查,也是因为时间相对有限,没有太多大块的时间能够集中阅读书籍,所以挑选书的时候也比较谨慎。参考他人的相关文章、书籍或是社区中的经验交流还是很有用的,不过还是要感谢搜索引擎把这些优质的内容推送到我们的结果中。

Q:最近在读哪些书或者论文?能推荐一些吗?

A: 最近在重新学习一些操作系统、网络和 C++ 的知识,在看《UNIX 网络编程》《Effective C++》。论文的话可以看一下去年的 SOSP '21,我比较关注调度、分布式系统这些方面的内容。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档