Liangshan

Inner peace.

七年之痒

“七年之痒”是个舶来词,人的细胞七年会完成一次整体的新陈代谢,可能七年后你就不爱这个人了。

我跟老婆不知不觉认识已经有七年了。

但今天说的跟老婆没什么关系。

因为再往前就是工作的第七个年头。

想到写这个话题是因为最近看 2 个不相关的开源软件,发现最终都指向了 TCP/IP 协议的相关细节。 最近一年总是有这种感觉,软件的背后总是指向「那几样东西」。

魂牵梦绕,挥之不去。

人总是会觉得以前的想法很傻。所以冒着被以后的自己鄙视的风险,说说现在我对技术的理解。

其实我并不是狂热的技术追求者,那种废寝忘食,涉猎技术的方方面面的人。我很钦佩那种人,但我清楚的知道我不是。 有时候知道自己不是什么,比知道是什么更可贵。因为这让我更具有专注力,知道怎么能够事半功倍。

在我看来,技术总是为了实现人类需求而发展。某些革命性技术的出现又会推动人类发展从而产生更多的需求。 但对于大多工程师来讲,基本上以满足需求为主要的工作内容。 在自由软件和开源软件运动的驱动下,我们非常便利的获取别人的软件和成果。 配合标准化的软件开发流程管理,好像开发软件变成了非常容易的事情,软件工程师甚至被称为「码农」。 但随着对技术了解的越多,越发现「根基」的重要性。

“Good developers know how things work. Great developers know why things work.”

我大概要给它加上一句 “ developers know how to work with things. ”

技术的知识图谱如果画出来,应该是一个枝繁叶茂的大树。 大树的每片叶子是一个个软件,大树的根基是我前面提到的「那几样东西」。 从每片叶子深入探索,你在最后总是碰到它们。

其实就是大学里面学到的那些基础课程:数据结构、编译原理、计算机网络、操作系统。

上大学的时候觉得这些课程很无聊,但最近却常常后悔没有把这些知识学好,或者常常有那种感觉「哦!学校里学的XX原来是这个意思」。 学校教理论没错,工作中实践也没错。我觉得问题可能出在学校里没有把理论和实践结合起来,这是题外话就此打住。

只有掌握了这些根基,才能更快的了解新技术、新软件,才能更好的使用他们,甚至是站在设计者的角度理解他们。 只有掌握了这些根基,才能在设计时像搭积木一样设计出优雅的系统。

说到搭积木,影响我最深的应该是 UNIX 的设计哲学:只做一件事,做好它。 一个复杂的系统应该是由多个简单的系统搭建而成,每个系统都应该有自己标准输入输出。再复杂的系统,看每个组件都应该是足够小而优雅。 这让我想起了上学的时光。上学的时候我总结出一条规律:任何难题都是经过很多小题组合嵌套而成,嵌套的层数越多就越难。

好像我从小就展露了工程师潜力呢:D

最后送上一些感悟吧:

面对这棵大树,必须保持一定的敬畏感,因为你知道它太大了,甚至无法看清它的全貌。

面对这棵大树,必须保持一定的自信,因为它每一个小的枝叶都足以给你丰富的养料。

面对这棵大树,必须保持一定的开放心态,因为它每一个枝叶都有不同的精彩,不要一叶障目。