第314期 | 郑晔:如何成为一个不把事情做复杂的程序员?
你好,这里是卖桃者说。今天,咱们接着聊郑晔老师的故事。今天主要分享 dreamhead 的三个高效工作法。
“不把事情搞复杂的程序员都是好程序员”
dreamhead 有个非常经典的金句:“不把事情搞复杂的程序员都是好程序员”。他还有一个签名档叫做“原来一切就是这么简单”,这是他在了解了很多软件开发相关知识后得到的体会。
像 Unix 命令行,每个命令都很简单,但它们组合在一起可以实现出非常复杂的功能;还有,很多人觉得设计模式非常多,不好学,但当你明白了 SOLID 原则之后,就会发现大部分设计模式其实就是这些设计原则在具体场景下的应用;再比如,很多人都会觉得持续集成很复杂,但其实做好持续集成只要知道一件事就够了,就是“快速反馈”,剩下的就是反复应用这个原则。
在 dreamhead 看来,任何领域最核心的东西,往往都是非常简单的东西。比如,大家都学过的数学是从 1+1=2 开始的,几何是从 5 条公理开始的等等。
他认为,能够意识到“简单”的程序员,往往都是在某些方面有过深入思考的程序员,是很多人心目中的“高手”。很多人都在抱怨软件行业发展得快,新东西多,学不过来,但很多高手却已经用这些新东西做出了自己的东西,还有比一般人还深的见解。其实,这些高手并不是学习了一个全新的体系,他们只是学了一点点增量而已。而这背后,是他们深厚的积累。
人和人的认知水平都是差不多的,能记住的事物数量也相差无几。这些高手之所以可以有这么深的积累,一个关键点就是他们把知识压缩成几条简单的原则,而普通程序员眼中都是一些具体的知识,二者的信息密度差别很大。
如何成为一个“不把事情搞复杂的程序员”?dreamhead 给了三点建议:
第一,构建一个完整的知识体系,比如软件开发的各种知识都能与之关联上。听起来很简单,但这往往需要长时间的积累。就 dreamhead 而言,他工作了 5 年左右,有了实际项目的经验,还利用业余时间写过一个简单的操作系统,参与了一个开源的编译器项目,这时候以前学的各种零散的知识才开始彼此关联,形成了自己的知识体系。
第二,有一个“刨根问底”的思考习惯。学习具体的知识很容易,这也是很多人都愿意讲具体知识的原因。但让它们成为自己知识体系的一部分,就需要把它们背后的东西挖掘出来,这些内容常常不是显学,需要自己不断地追问。
比如,他在《10x 程序员工作法》中讲过用户需求需要分解,在《软件设计之美》中讲过分离关注点,一个是由产品经理负责,一个是开发人员负责,看似没有什么关系,但二者背后同样是“分解”的思想。如果不去追求背后的原则,它们就是两个独立的实践,但“刨根问底”之后,两个不同的实践就关联了起来。
第三,多读大师级程序员的作品,比如罗伯特·马丁(Robert Martin)、肯特·贝克(Kent Beck)、马丁·福勒(Martin Fowler)等人的作品。他们的作品并不会教你如何用一个工具,而是告诉你如何思考。这是他们多年思考的积累,这些东西的适用范围会更广一些。真正这样的大师级程序员的作品并不多,集中注意力一段时间就可以通读一遍,这也是一种快速提高的方法。
之后就需要你自己反复练习,不断用更高的标准要求自己,看能不能把做的事情不断简化。
如何提高工作效率?
最后,和你分享 dreamhead 高效工作的三个方法。和多数人一样,他并不是那种可以把时间管理得井井有条的人,相反,他是一个拖延症患者。因为知道自己的这个特点,所以在工作的时候,他就会有方法地提高自己的效率。
首先,他会努力把事情做个优先级排序,明确哪些是重要紧急的,哪些是不重要、不紧急的,能不自己做的事情尽量不做。
其次,他会利用自己的人性弱点做事,比如,充分利用 deadline。很多人是 deadline 驱动的,所以他会尽量把任务拆小,这样每个小任务的 deadline 就离自己比较近。像写专栏就是一个典型的有阶段性任务的事,每篇文章都有 deadline,即便心理上再拖延,也要按时完成,自己给自己的压力可以让这件事能够很好地完成。
最后,他还会利用周边的压力。比如之前做 Moco,如果按照他原来的节奏,可能写一段时间就不写了,但随着 Moco 正式发布成一个开源项目,用的人越来越多,也有越来越多人不断地给他反馈,只好坚持写下去,这一写就写到了今天。
写《软件设计之美》专栏的时候,因为是疫情期间在家写作,缺乏压力,他就组织了一个读者的催稿群,每天在里面汇报进度,给自己制造压力。有了这个方法,他的专栏产出进度还是相当不错的。
对于一些没有压力的事,想提高效率,就需要具有目标性,明确自己想要什么。比如,自己想花时间研究一个开源项目,往往会因为缺乏压力,看了开头就坚持不下去了。但如果工作上需要用,就能够很快地把一个项目的来龙去脉弄得很清楚。
这就是他保持高效工作的方法,你有哪些高效工作的方法呢?欢迎在留言区一起讨论。
最后打个广告,dreamhead 的《软件设计之美》专栏已经上线。只会写代码,你可能是编程工匠,掌握了软件设计的艺术,你才能成长为真正的软件架构师。同时也推荐你订阅《10x 程序员工作法》,帮你忙到点子上,目前已经有近一万个订阅了。感兴趣的话,抓紧行动吧。同样,我为大家申请了专属优惠口令 MacTalk20,还可以有立减 10 元的优惠。
卖桃者说,我们明天见。
- 口令:MacTalk20
- 适用专栏:《软件设计之美》《10x 程序员工作法》
- 使用规则:立减 10 元(满 50 元可用)
- 有效期:7 月 16 日 00:00- 7 月 24 日 24:00
(编辑:夏天)