我的观点是:程序员应该写技术博客,并经营好自己的技术博客。
下面我将从技术能力、思维方式、成长三个方面去论证这个观点,最后聊一聊如何写技术文章。
技术能力
提升技术能力-费曼学习法
我相信有一部分的人和我当初有同样的疑问。学习完新知识就真的会了吗?学习知识有什么好的学习方法?对的,我要说的就是费曼学习法,即以输出倒逼输入,以输入帮助输出。费曼学习法是由理查德·费曼发明的学习方法,理查德·费曼是诺贝尔物理学奖得主,他被认为是继爱因斯坦之后最睿智的理论物理学家。美国学者埃德加·戴尔于1946年提出了“学习金字塔”的理论,同样证明了,通过传授给他人知识是最高效的学习方式,如下图:
费曼学习法的原理包括四个步骤:
- 确定要学习的概念
- 假装将这个概念传授给5岁的小孩子,记住要用自己的语言而不是简单的复述作者的原文
- 如果卡壳了,就回顾一下学习资料
- 简化和条理化自己的语言
我们应该使用费曼学习法这种高效的学习方式来提升自身的技术能力,而费曼学习法需要一个稳定的输出系统,写作就是一个稳定的输出系统。
展示技术能力
写技术文章是展示技术能力的一种方式。有过多年面试经验或面试官经验的程序员都知道,有很多程序员技术能力不错,但表达能力真的很差,要他们靠自己编写的一份简历和面试那几个小时的表达去找到心仪的工作,真的很难。如果你没有十足的把握,在面试的几个小时向面试官证明自己的技术能力,那么写作积累的技术思考将是向面试官证明自己的另一条途径。
更有甚者,如果你技术文章写得不错,得到了一些技术大咖的赏识,还会有面试官主动来找你,相当于多了一个找工作的渠道。
思维方式
为什么我这里会聊到思维方式?因为我认为,思维方式与专业能力同等重要。
训练结构化思维能力
在日常工作生活中,我们是否在与同事沟通、向领导演示方案、向上汇报、晋升答辩、面试时写简历和表达、写作等等场景困惑过?是否遇到过逻辑混乱和表达不清晰的情况?我们在那些场景下,表现得如此不自信,唯唯诺诺,害怕去表达,因为我们不知道如何表达才是正确的。
你该读一下《金字塔原理》这本书,学习其中的结构化思维,并在写作中反复训练。结构化思维可以帮助我们用简单清晰的逻辑组织我们的知识。
训练批判性思维能力和提问的技能
领域专家也有犯错的时候,我们怎样才能发现权威专家的逻辑错误且该如何提问才能避免被专家欺骗?条理清晰的表达很容易说服我们,它们没有逻辑错误吗?我们该如何提问?该问哪些问题?怎样才算是一个好问题?
你该读一下《学会提问》这本书,学习其中的批判性思维,并在写作中反复训练。批判性思维可以帮助我们学会如何提问。
工作之外的成长
训练写作能力
写作能力或者说文字功底是一项终生有用的能力。在工作中,我们在做向上汇报、写简历等等,需要一定的文字功底。在日常生活中,我们在反思某个问题或者对某个问题做总结时,也需要一定的写作能力。较强的写作能力一定是需要较强的逻辑思维能力,这样才能够将事情清晰有条理化地表达出来。
扩大影响力
在增强自身工作能力的同时,也在工作之外尝试另一个方向的成长。写好技术文章,帮助目标受众学习知识,为他们提供了价值,同时,也扩大了自己在该领域的影响力。影响力对于读者和作者而言,是双赢的。不断写作,随着我们的技术能力和写作能力的提升,我们就能够为更多的粉丝提供价值,我们就拥有更大的影响力,最后我们将拥有更多的机会,这无疑形成了一个良性的正循环。
如何写技术文章
文体类型
在写文章之前,我们需要了解一下两种常见的文体类型,即议论文和说明文。
议论文是以一个问题为起点的,对这个问题给出自己的论点,围绕论点为中心而展开,寻找充足的论据来支撑论点。需要注意的是,论点是具有强烈的个人色彩的和个人价值倾向,每个人的价值观不一样,所以得出的结论都不一样,正所谓一千个人有一千个哈姆雷特。这种观点没有对错之分,只代表了作者本人的价值观倾向。
说明文同样是以一个问题为起点的。有可能会将回答拆分为几个抽象的概念,按照某种逻辑顺序说明;也有可能会将一个大问题拆分成几个小问题,按照某种逻辑顺序进行回答。说明文以一个主要对象为中心进行说明。需要注意的是,对主要对象的说明要尽量保持客观,说明文的目的是揭示事物的客观特征并告诉读者这些知识。
技术文章多数是说明文,少数是议论文。我们在写技术文章的时候更多地是揭示事物的客观特征和原理,当然我们也可以有少量自己的思考和个人的观点。
问题类型
要写好技术文章,首先我们得提出一个好问题。好问题能够迅速地吸引读者注意力和共鸣。这个问题必须是读者脑海中已存在的问题,或者读者对周围事物进行短暂思考之后可能会提出的问题。
除此之外,我们也得大致了解有哪些常见类型的问题。如果我们能够事先就知道这些类型问题的回答框架,那么在面对每种类型的问题时,我们就可以胸有成竹。
- 描述性问题
比较常见的问法比如:“谈谈这个的原理”,“谈谈对这个的理解”,“谈谈这个是什么”等等。这类问题主要要询问的是某个对象在客观上是什么。我们的回答一般是抽象出几个概念,并将概念按照某种逻辑顺序来表述。
- 方案问题
比较常见的问法比如:“谈谈这个问题的技术方案”等等。这类问题稍微较复杂,一般针对的是多个对象,我们需要回答多个技术方案的原理、每个方案的优缺点以及各自的适用场景。
- 项目总结分析
比较常见的问法比如:“聊一聊你的这个项目”等等。这类问题也稍微较复杂,一般针对的是多个问题,我们需要从项目的业务性问题(即这个项目是做的什么)、项目的架构设计问题、技术的难点问题等等多个维度去做分析
- 新技术的科普
比较常见的问法比如:“谈一谈这个新技术”。这类问题的回答我们需要从背景、冲突、问题、旧技术解决了什么问题、旧技术存在什么问题、新技术解决了旧技术什么问题这样的思路去思考。