为什么要写技术文章-我对写作收获的理解

为了迎接更好的自己。


过去的止步不前

程序员最反感别人没写文档,最不喜欢自己写文档。

我一直很认同技术人员应该持续写技术文章,可以总结经验,打造个人品牌,等等。但加上公司内部分享,实际也没写多少篇,这可能也是很多技术人员的通病吧。

对我个人来说,没有坚持写首先是时间因素。并不是真的没有一点时间,而是时间管理任务规划的问题。对自身认知不足,制定了太多没想清楚的计划。经常键盘一敲,这个月要写三篇技术分享,洋洋洒洒做了一堆计划很有满足感,好像已经成功了一半。但做计划时没规划好落地细节,比如什么时候写,写什么方向的内容。总有更紧急的事情要做,于是转眼就一个月过去了,没写的等以后再写吧。很快,一年也过去了。

其次,有时想真正沉下心写点东西,又没有什么特别想写的内容。个人也看了很多别人的技术文章,像复杂系统的介绍,各种开源产品的使用心得、架构、源码分析,等等。到自己写,不知道写什么了。写自己做的系统吧,好像没什么好写的,除了必须写的内部设计文档,并没提炼出多牛想分享的内容。写使用心得吧,都是照着官方文档做,遇到问题谷歌,感觉没什么有深度的东西可说。写开源架构、源码分析吧,都是看别人总结的文章学习的,总不能直接抄吧。

虽然没能坚持写文章,但至少做到了持续阅读技术文章,好的文章收藏有链接。自己也做工作记录,各类问题有记录,需要的时候也能说出个123来,似乎一切还好。


想清楚了写作对自己的意义

写作对我来说,最大的意义,就是强迫自己克服惰性,深入思考研究,总结提炼,提升段位。

较长时间里,工作主要在解决具体问题。做新功能是在解决问题,改bug是在解决问题,帮助用户是在解决问题,自己解决了很多问题,也帮忙别人解决了很多问题。在此期间了解了新的业务,拓展了技术体系边界,但感觉自己的段位并没有显著提高。为什么?

因为对工作内容的总结提炼不够,无法站在更高层面“悟”,段位提升不明显。

虽然我开发了很多具体的功能,解决了很多具体问题,但大多数问题是碎片化的,单纯碎片化救火并不能有效提升自己的段位。只有持续有深度的总结提炼,将碎片化问题抽象提炼,更高层面考虑问题域的方法论和通用解决方法,高屋建瓴,才能有效提升段位。

而要强迫自己深入思考研究,并不容易。因为深入思考不像解决具体问题那样有即刻的收获感、工作紧迫性必要性。要主动,要克服自己天然的惰性。而写作是一个非常好的强迫自己深入思考研究、提升段位方法。

不同于给自己看的工作记录,随便写写,即使像密电文也能理解。给别人分享,必须要让不了解你的人感同身受,了解到所分享内容背景是什么,是否找到问题的本质,如何解决,有什么方法论做理论支持,做了哪方面取舍,还有哪些可以提高的地方。写作过程就像自己对自己的面试,深挖下去,发现之前没去想,没觉得是问题的问题,甚至会发现即使想到了问题也想不清楚答案的问题。另外一些紧急凑付事的临时解决方法,也不好意思拿去分享。只能思考,再思考,去想所有问题的答案。联想自己做过的其他事情,读过的资料,继续去搜索,去尝试,给出至少让自己信服的答案。如此写完,虽然感觉很疲惫,但有感悟,自己得到了提高,很有收获。


写作可以消化所读的技术文章,将被动记忆的知识,通过写作,变成自己真正掌握的知识。

为了提升段位,自己看了一些书,很多技术文章。不能在工作中立即用到的技术知识,也坚持做了不少积累。像系统架构,源码分析,算法实践,有意思的分析都看了不少、努力理解这些文章讲了什么,收藏了很多有用的链接。年度总结,似乎学了很多,可依然没感到段位有显著提高。这是为什么?

这是因为之前的学习,实际是在用应试方式去理解,记录要点。虽然一段时间内能像复习考试般清楚自己学过什么,但没有结合自己经历深入的“悟”,没有变成真正掌握的知识,日常工作用不上,慢慢就淡忘了。

解决方法依然还是靠写作,来强迫自己深入思考。写阅读的收获,自然不能把原文抄一遍,要有自己的理解感悟,要结合自己做过的事情写点新东西出来,需要把知识体系打散了重新提炼。一旦有了深入思考,写出自己认可的阅读分享,自然就真正掌握了所学的内容。


写作可以提高拆解问题,分层细化的能力。

以前迷信敏捷快速迭代,认为不能过度设计。去解决一个问题时,才会思考这个问题的解。遇到新问题,case by case解决新问题。规划不够清晰,缺少对需求,业务流程,业务建模,数据建模,架构建模,接口建模的有效拆解,没有从上到下,一层层将问题域拆分的足够清楚。规模不大的问题可以轻松解决,一旦要处理涉及面广,流程复杂的多业务域问题,就会因为考虑不足经常要修改原来的设计和实现。

而写作要让别人容易读,就不能像头脑风暴那般想到哪写到哪。要提前确定好分享的主题,按照主题整理写作提纲,层层细化,分解章节目录,各级要点,控制写作范围,避免写的文不对题。这就很好锻炼了拆解问题,分层细化的能力。

我在这方面做得还不够好,包括本文在内,即使提前规划好了要点,在写作过程过程中依然有几次超出规划调整了结构。需要继续提高自己的写作能力。


写作可以获得反馈,走出思维盲区。

再多的自我思考,实践验证,依然可能存在思维盲区,有常识性错误而不自知。分享可以让更多人了解,更多获得反馈修改错误的机会,帮助自己进一步提高。


写作可以提高自我认知,认识更真实的自己。

技术人员往往会高估自己。我的错觉之一是总觉得存在某条提升能力的捷径,研究各种方式方法而忽视了脚踏实地的前行。错觉之二是做了一堆计划就很有满足感,好像已经成功了大半。最后计划往往没完成,安慰自己是太忙的原因而不是能力问题。

实际上,时间管理是技术人员最需要的能力之一。做了计划完不成,首先是对自己认知不足,过于高估自己能力。写自己认可的文章,会认识到自己知识的不足,思考的不足,写作能力的不足,直面更真实的自己。认识到到写一篇自己认可的文章,原来需要这么多时间精力。认识到要想提升段位,必须投入更多时间精力,一步步前行,没有捷径可走。


写作方向

因为写作的目的是提高自己的技术段位,让读者和自己都有收获,所以我写作的方向是自己在开源大数据领域的经验总结,心得提炼,分析解决一类问题的方法论,尽量避免写没有多少个人思考的操作流程帮助文档。

上一篇:Step by step,学习EMR集群的fair类型资源池


下一篇:区块链共识算法的分类 POW POS DPOS PBFT的区别