如果你有装修过,或者家里造房子的经历,你会发现,大多数“技术工人”都是半瓶水,让你满意的人实在是凤毛麟角。就算你要找一个很有责任感的,不需要你去监督,做事情精益求精的人都基本上是没有的。
你或许在装修,并正在抱怨那样的技术工人。但是,你的老板或许也同样的在抱怨你:只有半瓶水,还吹牛吹的不行。当没有人监督,没有项目任务的时候,你就开小差,偷懒。做事情,也都是在赶进度,凑合,蒙混过关就行。
我想,这或许就是技术工人吧,我们的工作实际上没有什么创造性。所以,当我们工作很多年,也就不再有激情了,变成江湖小混混了。你可以学会N种编程语言,学会怎么更好的组织代码,学会如何在unix上写代码,只要花出时间,功夫,你就能成为一个优秀的程序员。技术,说白了,就是熟能生巧。不管,你挂了什么架构师的头衔,还是你在搞什么云计算,听上去在弄一些别人不知道的技术,其实学习这些技术不需要一个人多少悟性,多少创造性,只要花下时间这些东西你都能很精通。像处理大数据,正如我一个在淘宝的朋友说的,大多数觉得这个神秘,是因为平时工作的时候接触不到,实际上,如果每天都接触,也就是这样一回事,这就是技术。我想,每个人,当它学了很多技术了之后,肯定就会发现这样的一个问题,我学了这样多,情况也就是这样,可能水平比别人好一点,但是也搞不出多少档次,难道我这辈子就这样学下去了吗?于是,慢慢的,我们就会变成正常的“技术工人”了。
在我研究高性能服务的时候,我研究了很长时间的 IOCP ,linux 上的 aio,libev,并读了一遍nodejs的源代码。我突然发现,我学的是比别人多一点,但是仅仅是这样而已,因为一门技术,公开的技术,每个人都可以搞清每一个细节,然后就可以实现一个很高性能的服务器。所以,本质上,我们没有什么竞争力。也不能为我们这个世界做出突出贡献。
我经常会听到某人某人技术有多牛,我就会很崇拜,我一直很羡慕一些人,懂得很多东西,为什么他们有这样多的时间去学这样多的东西。去年,我认识一个人,他会写编译器,我羡慕不已,于是我也学了半年,最后,我也会写编译器了,但是,会写了之后,我发现我并没有什么升华,而只是又会了一样东西而已,而且,也只是学了半瓶水,比如,其实,要真正编写一门语言,必须要学会编译器优化,而这个实际上很难,要学会又要很长的时间才能会。世界上,一直不缺少这样的人,只要给他时间,他就能学会一样东西。但是,就算懂的再多,也只是懂了一个东西,怎么样用出来,解决一些别人还没有解决的问题才是关键。
Node.js 可以说是一个个人作品,但是,却成为了一个平台。为什么其他人没有想到这样一个想法呢?我想,只要你要想到 Javascript 和异步IO 结合起来,你也能写出这样一个作品。这背后的想法是关键。
最近有一本书很流行,黑客与画家,里面有一个垃圾邮件过滤的章节。在2002年前,没有人想到用很成熟的贝叶斯公式来实现,而当被人一语点破之后,我想世界上有一半的程序员都能解决这个问题了。
有一个好想法,比你会一百门技术还有意义,技术可以在你有了想法之后再学,但是,你会100门技术,不见得就能一语惊人。在我以后的程序生涯里面,我想我不应该再完全沉浸在学一门又一门的技术,而是,要学会思考,学会思考那些技术背后的思想和本质,期待,自己也能创造一门技术,而不再是每天学习别人的。