宋宝华: 纪念金庸先生——程序员的武侠世界
在漫天的星河中,有这样一颗星,他朴实无华,却又熠熠生辉,照亮了无数人的人生。他就是金庸先生。随着一代大侠的驾鹤西去,“飞雪连天射白鹿,笑书神侠倚碧鸳”,成为绝响。
每一个少年心中,都有一个英雄梦。曾经幻想自己,长剑佩腰,浪迹江湖,十步杀一人,如闲庭信步;曾经幻想自己,青衣长袍,长萧悠远,百年等一人,诉儿女情长;曾经幻想自己,堕万丈渊,偶遇奇人,习盖世武功,救民于水火。梦醒时分,心碎了一地,结局只是一个猥琐大叔,面对代码与bug。忧虑着远方,焦虑着当下,侠义的心肠,英雄的梦想,都逐渐的远去。
但是,有人的地方就有江湖。程序员的世界,未尝不是另外一种武侠的世界。有的程序员,神功盖世,侠之大者如乔峰,以一敌百;有的程序员,似裘千丈,编程多年,不过一江湖术士;有的程序员,功名在身,却深居简出,低调隐居,如同风清扬。
我们总结金庸武侠小说里面绝顶高手的共同特征,可以发现如下特点:
有极强的内力修为
至少深入掌握一门绝世武功
对多种神功均有一定了解
我们下面来逐一剖析。
有极强的内力修为
令狐冲最开始在习得风清扬的独孤九剑之后,已经可以解决田伯光这样的senior engineer了。独孤九剑强调的是招式的牛逼,无招胜有招,但是,他还是有致命的弱点,那就是内功不强。令狐冲在独孤九剑大成之后,在地下室和principle engineer任我行对练的时候,任我行还是用内力震昏了他。直到令狐冲学到了《易筋经》,成功融合桃谷六仙、不戒大师分别注入的八道真气,方生大师给他输入的真气,黑白子全部内力,岳不群大部分内力后,这个时候的令狐冲,可以说是真正的独孤求败了。
这件事情对我们的启发是,内力不强,招式再多,也会限制最后在技术领域的成就。由于大学阶段计算机学习的整体缺陷,导致很多童鞋毕业数年后仍然不具备一些基本的内力
a. PV操作
b. 信号量,初值为1的信号量通常做互斥,初值为0的信号量通常做同步
c. 互斥
d. 通信分为同步和互斥
e. LRU
…
很多很多不可尽数,比如有的童鞋,在公司里面都工作几年了,还是不知道堆和栈的区别。你这个时候,练再多的招式,懂再多的语言,C/C++/Java/Python…全部都撸过一遍,也难逃程序员的终极宿命,那就是越到后期越悲凉,它的曲线类似:
因为到了35岁,这种大龄程序员,很多公司对他的定位,已经是要能够独挡一面,解决性能、架构等方面的需要突破的问题。这个时候,内力不强,计算机的基本原理都不通,就极可能在这个时间点上,技术生涯自由落体,变地非常被动。
我们认为,有两门基础课,对程序员练习内力尤其重要,一是微机原理,二是操作系统。微机原理让我们理解计算机是怎么工作,CPU、CACHE、内存、硬盘、外设彼此间的牵绊;操作系统让我们理解软件是怎么工作,系统的硬件资源如何被软件消耗,各个软件组件如何互动。这里我们推荐两门书:
《深入理解计算机系统》
《Operating System Three Easy Pieces》
“Linux阅码场”公众号也数次推荐了这两门书。相信有很多童鞋已经在研读。
至少深入掌握一门绝世武功
有很多童鞋,一生随波逐流,今天在这个公司干这个,明天在这个公司干那个,没有明确的兴趣点和技术成长目标,这样很难形成坚实的技术沉淀。比如你把凌波微步学一招,打狗棒学一招,降龙十八掌学一招,每个都学一招,一共学了100招,但是随便来一个会两招降龙十八掌的人就可以把你干掉。所以,任何一个顶级的程序员,必有他的成名武学,他在这个领域,成为大师。
乔峰、郭靖 | 降龙十八掌 |
张无忌 | 九阳神功 |
小龙女 | 玉女心经 |
洪七公、黄蓉 | 打狗棒 |
杨过 | 黯然销魂掌 |
张三丰 | 太极拳剑 |
… | … |
现在的技术领域这么多,热点层出不穷,追逐热点固然不是坏事,但也可能让你筋疲力尽。其实这样无穷追逐,不如找到一个自己的兴趣点,比如Linux内核也罢、TensorFlow也罢、GPU多媒体也罢、Android也罢,至少你要在某个领域里面成为高手,这是吃饭的本钱,也是行走江湖的筹码。就是说,只要想到某个技术领域,就能想到你名字;想到你名字,就能想到这个技术领域。
根据我们的观察,拥有成名武学的程序员,到了35岁,甚至40岁后,不仅没有在江湖上被遗忘,还逐步进入了更加顶级的公司的更加顶级的技术团队,待遇之高,达到如果在微信群透露,就会让其他程序员活不下去的程度。
对多种神功均有一定了解
既要低头拉车,又要抬头看路。有成名武学,也不能故步自封。仍然要看一看别人在玩什么,这是聊天的资本,在广泛的场合,可以和更多的人好好聊天。不能低估聊天的重要性,不能聊天,尤其是不能和高级领导聊天,会限制自身的可见性。另外一个方面,知识面广,对自身技术领域可形成交织互补,因为很多技术,做到后来,发现它们会交织互融。在金庸武侠小说里,经常出现练习某种武功久久不能突破,但是在练习了另外一种武功的情况下,突然前一种武功的最后一层就练成了的例子。
下面我们看看顶级高手的武功配置:
张无忌融合九阳神功、乾坤大挪移、太极拳剑和圣火令神功四大盖世武功为一体,当世无敌,此外还精研医术和毒术,术绝尘寰。
虚竹为少林派弟子,学以罗汉拳和韦陀掌。意外破解珍珑棋局后,承得无涯子七十年深厚的内力,而其中也含有无涯子本身所学的北冥神功以及小无相功。获得了天山童姥传授的逍遥派天山折梅手以及天山六阳掌和生死符。在继承天山灵鹫宫后得见灵鹫宫后殿壁上无数精妙武功。
令狐冲学会了华山的剑法,宁式一剑、思过崖山洞的其他门派剑法,之后习得独孤九剑,在梅庄地牢中习得吸星大法,最后一个阶段,习得少林易筋经。
…
因此,我们总结顶级程序员的三大特点:内功强(1),某个领域深(2),多个领域广(3)。这三者之间的关系是:1是2的必要条件(如果基础不牢,不可能在某个领域深),1+2是技术生涯成功的必要条件,3是1和2的补充(3是技术路线发展的充分条件,不是必要条件)。下面图示最好到最差的技术配置:
因此,我们总结顶级程序员的三大特点:内功强,某个领域深,多个领域广。当然,无论武功有多高,都必须具备一个品质:那就是仁义。
没有仁义,武功高强如任我行、东方不败、岳不群、欧阳锋、成昆者,都不会成为任何人的榜样。
谨以此文,纪念金庸先生。
(打赏的童鞋请在打赏的时候留言让在下知道是谁并感恩)
查看"Linux阅码场"精华技术文章请移步:
扫描二维码关注"Linux阅码场"