意识到了自己没有办法成为 top 1% 的程序员,还应该选择程序员的道路么?

10,837 阅读17分钟
原文链接: www.zhihu.com
几年前,和霍矩一起吃饭,他很认真地和我说:周老师,今年我发现了两位神人,太NB了!静听他推荐,原来,这两位霍矩口中的神人,一个是刘未鹏,另一个是徐宥

最近这个帖子比较火:
GitHub 中国区前 100 名到底是什么样的人?
刘未鹏的名字也出现在上面了呀,但前几天,和未鹏在微信上随意聊,他说自己论编程技术只是普通,只不过做事认真,爱思考。

在我眼里,未鹏是独一无二的。

未鹏写过一篇博客:什么才是你的不可替代性和核心竞争力

翻开任何一本经济学的教材,或者直接翻开 wikipedia 的 economics 条目,都会看到物以稀为贵这条铁律。人才作为资源的一种,也是同样的道理。而稀缺性,换种说法也可以叫做不可替代性。一种资源越是稀缺,不可替代性就越强。再加上如果这种资源是一种具有实实在在使用价值的东西(而不是荷兰的郁金香泡沫),那么其价格就会越高

题主的提问,或许就是未鹏在这篇博客中提出的问题——
如何构筑你的个人知识体系,使得你的知识技能集尽可能成为不可替代的呢

未鹏在文中引用了孟岩的一段话:
那么核心竞争力是什么?我观察圈子里很多成功和不成功的技术人,提出一个观点,那就是个人的核心竞争力是他独特的个性知识经验组合。这个行业里拥挤着上百万聪明人,彼此之间真正的不同在哪里?不在于你学的是什么技术,学得多深,IQ多少,而在于你身上有别人没有的独特的个性、背景、知识和经验的组合。如果这种组合,1,绝无仅有;2,在实践中有价值,3,具有可持续发展性,那你就具备核心竞争力。因此,当设计自己的发展路线时,应当最大限度地加强和发挥自己独特的组合,而不是寻求单项的超越。而构建自己独特组合的方式,主要是通过实践,其次是要有意识地构造。

针对孟岩的观点,未鹏做了一番总结和分析,他认为——
我相信以下的知识技能组合是具有相当程度的不可替代性的
1.专业领域技能:成为一个专业领域的专家,你的专业技能越强,在这个领域的不可替代性就越高。这个自是不用多说的。
2.跨领域的技能:解决问题的能力,创新思维,判断与决策能力,Critical-Thinking,表达沟通能力,Open Mind ,等等。
3.学习能力:严格来说,学习能力也属于跨领域的技能,但由于实在太重要,并且跨任何领域,所以独立出来。如何培养学习能力,到目前为止我所知道的最有效的办法就是持续学习和思考新知识。
4.性格要素:严格来说这也属于跨领域技能,理由同上。一些我相信很重要的性格要素包括:专注、持之以恒、自省(意识到自己的问题所在的能力,这是改进自身的大前提)、好奇心、自信、谦卑(自信和谦卑是不悖的,前者是相信别人能够做到的自己也能够做到,后者是不要总认为自己确信正确的就一定是正确的,Keep an open mind)等等。

一直和未鹏聊,觉得这篇博客很重要,但可惜并没有展开来讲。即便是上面列出的4点,光是抽象的概括,也是不够的。我试着来从这4点谈谈我眼中的未鹏吧。
1.专业领域技能
微软英库拼音输入法背后的技术和故事——刘未鹏译(未鹏是这个产品团队的骨干)

另外,未鹏翻译过的专业书籍口碑都很好,这是否也在一定程度上代表了他的专业领域技能水平:
1)修改代码的艺术 (豆瓣)
2)Exceptional C++ Style中文版 (豆瓣)
3)C++编程剖析 (豆瓣)
4)Imperfect C++中文版 (豆瓣)
未鹏早期在CSDN上的博客:刘未鹏|C++的罗浮宫

2.跨领域的技能/3.学习能力/4.性格要素
不少读者都很喜欢暗时间 的封面,而这个封面的诞生却经历了不少波折,前后差不多做了10多个封面直到后来找到在上海的一家荷兰平面设计公司后,经过仔细沟通,这才确定了封面。这个过程令我感慨不已。因为我看到了并未从事出版业的未鹏,对封面设计却有着直达本质的认识,令我这个做编辑的汗颜,幸好还能跟上他的脚步。

未鹏在给我的邮件中是这样谈及他对封面的认识的——

周老师,看到你这份邮件我很感动,也很开心!

虽然我不是学设计的,自己来肯定是做不好这行,但什么样的设计适合一本自己的书的核心理念,这个评价的能力还是具备的,而且不学设计的往往评价设计反而更客观,我记得多年前,国内图书的封面设计很多都相当花哨,用各种线条,图片和颜色,喧宾夺主,不着重点,做设计这行和做任何行当都有个类似的地方,就是手头有锤子总忍不住不去使,恰好我们最近有个Demo项目的UI的intern designer也正是体现了这一点,在设计上他用足各种花哨的技巧,结果导致不仅UI偏离了大家习惯的风格,而且对读者的注意力完全是一种分散,致使我们想要在UI上重点呈现的东西淹没在色彩和线条的海洋中。

最近几年也许因为一些设计方面的书籍引进,也许其他原因,不管是web设计还是平面设计方面,国内的水平和理念似乎也正在和国际接轨。less is more 的极简主义设计风格开始流行,我在前面的邮件中提到的国外一系列畅销科普书的封面设计就是我心目中成熟设计的一些典范,没有冗余的干扰读者注意力的细节,才能真正把该凸显的东西凸显出来。此外,这些好的封面设计大多有一个共性,就是在最能吸引目光的位置有一个具有象征意义的物体,虽然这个手法并不是最近出现的,但似乎正在变得越来越成熟,我还记得当年大量计算机书籍的封面都会有101010铺满了背景,当时就觉得很不优雅。

《编程之美》的封面设计不错,封面物体的隐喻明确而经典,且没有额外的分散注意力的细节
。但《把时间当做朋友》封面上选取的物体就不好,我的理由很简单,既然是象征性的隐喻,既然是在封面上,那么能否容易地让读者一下领悟其含义(但又不能太直白,要容读者有一种自己领悟的愉悦感),发出会心的“哦”,才是评价的唯一标准,我记得当时我也参与了《把》的封面设计讨论的,我的观点就是虽然海螺的隐喻可以说出一二三来,但绝对算不上明显,我猜90%以上的读者连一重隐喻都想不到(我就想不到),别说3重了(但设计者自己往往会受到自己知识的偏见,认为隐喻是显然的,这个经典的现象也被称为 “知识的诅咒 curse of knowledge”,与之相关联的一个心理学实验就是让一个人打拍子另一个人猜是什么歌,打拍子的人总觉得对方能很容易猜出来(比如打的拍子是“生日快乐”),然而实际上听的人几乎总是毫无头绪。

如果想不到,那么这个物体就跟任何漂亮的图片没有区别。
所以我认为封面——读者在买之前只会留意十几秒——不应该包含多于1重隐喻,而且隐喻不能牵强,必须一目了然。我还是忍不住提一下Blink,Freakonomics和Rework的封面设计,他们就跟封面设计的教科书一样,以简洁而大气的风格,具备一目了然的核心象征意义的物体代表了现代设计的优秀理念。

之前T老师未离职的时候不便如此长的明说,毕竟人家也是学设计的,但现在想来还是应该早点说出来(在第一稿的设计我已经有此想法了),早点说出来也许能够节省周老师出版社那边来来回回讨论和重构的很多精力。我记得周老师之前提过要做“诤友”的理念,我赞同。
T老师是化名。——周筠注

由于未鹏自己对封面有着清晰的思考,所以他一次次地否定自己不满意的封面,但他并不是做简单的否定,而是能一次次地耐心说明为什么他不赞成那样的设计,让我们心服口服。当我们决定放弃与那位始终缺乏耐心来理解未鹏想法的设计师的合作,转而找到上海一家荷兰平面设计公司合作时,这家公司的设计师根据未鹏提出的封面素材构思(沙漏)很快便设计出封面原型,未鹏十分高兴,但他并不因为已经初步达成自己的想法就开始马虎了事,而是继续一次次提出自己的优化建议,以下邮件是在荷兰设计师给出封面设计第五稿时他给我的回复——

周老师您好:
不管是暖色还是冷色,书名左上还是左下,我都喜欢。都非常好。如果非要仔细分辨的话,个人感觉和周老师一样,冷色+书名左下的方式似乎更酷更理性一些。

个人感觉书名左上和左下的区别应该是:左上是突出书名的设计,左下则是突出沙漏的设计。

由于左上角是人们视线最先和最重点停留的位置,所以在左上角放置书名方块的意义是书名重于沙漏,并且由于左上角在视线中的权重高,所以虽然不管怎么放占的地方都一样大,但放在左上的色块在主观感觉上所占据的空间更大。而放在左下则似乎给封面上沙漏留出了更多的空间,封面更大气和广阔,从而冲击力更强一些。

不过究竟如何取舍我相信设计师的判断和直觉,反正我都满意:)

P.S. 这几天忙于techfest和跟大伙到处跑,回邮件有延迟,望周老师见谅。

P.S. 我还注意到两版设计的一个细微区别,冷色版的沙漏左右更宽,直达封面的左右侧。暖色的沙漏宽度缩小了。不知道是我先入为主的印象还是什么原因,感觉上似乎第一版沙漏更具张力?(因为不仅上下溢出,左右也是填满的)


未鹏的细致认真,得到了荷兰设计公司上海分公司负责人Z老师的高度称赞,他在邮件中回复——
未鹏果然厉害,能看出两张图片的细微差别,这一点不容易做到。

我们设计师在图片链接时都搞错了(因为当初找了很多图片),我们已经在周五更正了,下周一在得到电子社logo的最小尺寸的说法后,我们会再试一下左下角的方式。

从未鹏身上,我们可以看到周老师合作的作者的素质,欣慰

我在这里展示的只是一小部分未鹏和我们沟通《暗时间》封面的往来邮件,实际上,为了这个封面的最终确定,我们总共往来了几十封邮件。为了整本书的出版,沟通的邮件就更多了,因为总有各种各样的细节需要敲定,文字的,图片的,其他。

我注意到题主在提问中讲了这样一句话——

跑通算法很开心,但是挑bug很痛苦,而连续几天挑bug总是做不好的时候更是痛苦

其实,上面讲未鹏和我们沟通《暗时间》的封面,其中相当一部分,就是在挑bug,而未鹏之所以得到设计方的高度称赞,是因为未鹏发现了他们的bug。

未鹏从南大毕业,进微软亚洲研究院,在邹欣老师的团队。某次聊天中和邹老师聊起未鹏,从不轻许人的邹老师夸奖道:未鹏啊,做什么都能做好

写到这里,我又想到未鹏的另一篇博客:不要过早退出循环

兴趣遍地都是,专注和持之以恒才是真正稀缺的。

很多人看了书中的故事之后得出这样的结论:兴趣最重要。然而,我觉得区别他们和其他人的,并不是他们拥有超过常人的兴趣,而是他们拥有超过常人的毅力。

其实人天生就对新事物怀有好奇心,难以找出谁没有对任何事物或领域产生过兴趣,然而不同的是,有些人的兴趣只能持续几天,当遇到第一个困难,第一道坎的时候,他们就熄灭了,然而另一些人的兴趣火花会变成火苗,火苗会变成火种,一直稳定的燃烧很多年。区别他们的并不是兴趣的有无,而是他们的性格里面有没有维持兴趣的火种一直燃烧下去的燃料

一个人有专注和持之以恒的性格,即便在一个没有多大兴趣的领域也能成为专家(更何况,兴趣的很大一类来源就是“我擅长做这件事情”);反之就算有兴趣也很快会被一些冷水泼灭。


未鹏在这篇博客里很实在地给出自己的建议:
专业技能的成功是最具可复制性的
它需要的只是你在一个领域坚持不懈地专注下去,只需要选择一个不算太不靠谱的方向,然后专心致志的专下去,最后必然能成为高手或者绝顶高手。世上有很多成功带有偶然因素和运气成分或出身环境,但至少这一样,被无数人复制了无数遍,否则就不会存在学校和教育了。

无独有偶,李笑来老师最近一篇流传较广的文章也在谈这一点——
学习(磨练技能)永远是创造惊喜的最根本手段
很多人其实是不相信自己会变得更好的 —— 本质的原因是他们各项技能在某个时间点开始彻底停止进步,而自己骗自己多少有些难度,于是已经接受自己“就是那样了”的现状…… 这样的人,是没有办法相信自己会有好运的,只因为他们没有办法相信自己会变得更好。这样的人,其实早已经不再有未来,也就更没办法对自己的未来自信 —— 只是他们自己意识不到,没有能力想得这么清楚而已。这样的人,没有坏事发生就已经该谢天谢地了,根本不可能有什么惊喜。

在我看来,正是因为未鹏有着这种“做什么都要做好”的认真劲头,所以他能够一边认真做着手头的事情,一边寻找最能发挥自己独特优势的领域,一旦遇到了机会,以他长期修炼(从不间断)的专注和坚韧,便能牢牢抓住机会。——暗时间 的出版,便是很好的例证。当年,和未鹏一样写博客出名的同龄人有不少,但真正能把握住机会,把博客变成正式的图书产品的,寥寥无几。而且暗时间 在上市的五年里,连续印刷16次(最近又要重印了),豆瓣书评300+(豆瓣短评3000+)。

软件工程的奠基人之一瓦茨·汉弗雷总结说,软件领域可以分为两个方面:一方面是技艺创新的大爆发;而另一方面是坚持不懈的工程工作,包括软件的改善、维护和测试等,这一方面占了90%—95%的比例。——我在邹欣老师的微博上,一次次看到了这样的坚持不懈——

倘若在自己所做的事情上,一次次地都忍受不了“挑bug的痛苦”,也许就只能是在消极地空等自己心仪的职业机会来临——由于在等待的过程中,自己并没有好好修炼做任何事情(无论是有兴趣还是兴趣不大)都需要的心智(专注和持之以恒的能力),那么机会对你来说,很有可能也就是竹篮打水一场空,稍纵即逝。

这种能够持续挑bug的耐心和毅力,不光对于编程很重要,对于做任何事情,都是重要的。在我看来,这便是一个人的核心竞争力。有耐心给自己做的事情挑bug的人,是具备反思能力的人。以未鹏在不要过早退出循环里的这几段话作为结尾:

反思是让人得以改进自己的最重要的思维品质

很多人在成年之后甚至未及成年,性格就难以再发生大的变化。性格是这样一种自我实现和强化的陷阱:如果你是不容易专注的人,你会发现生活中处处都是分散你注意力的东西,你的思维难以在一个事情上停留半小时,于是你的时间变得琐碎,你很难在一个领域有长久的积累和深入的思考,这样的现实可能会让你感到沮丧,后者让你更加无法专心,这样的现实可能会让你感到焦虑,为了避开焦虑你又会去寻求其他的刺激,结果是恶性循环。

反思是改变自己的第一步,我们常常容易发现别人的问题,别人的错误,却难以发现自己思维中的问题,因为我们很少会把自己的思维当成目标去思考。

作为程序员,相信没有人不知道能修改自身的程序,而能修改自身的程序的前提就是,首先这个程序必须有法子能够指向自身

推荐:
警惕:那些对深入了解事物缺乏巨大兴趣的人 - 虚晃一枪 - 知乎专栏

有哪些可以提高程序员技术档次的书或博客?

作为一个帝都码农,现在的处境很迷茫,不知道未来在哪里,我该怎么办?

更多回答

知乎用户,midcore programmer