一个平庸程序员的自白

Jacob Kaplan-Moss是著名Python框架Django的Co-Creater和核心开发者,在Heroku担任安全部门的Director,他常年参加Python社区的年度聚会PyCon,并经常上台演讲。在这次PyCon 2015上,他声称自己顶多只是一个平庸的程序员,幻灯片上也写着:



 

"Hi,I'm Jacob,and I'm a mediocre programmer."

这次演讲非常精彩,视频可以在Youtube

上看到(如果不想看视频,这里也有一篇文字总结:https://lwn.net/Articles/641779/)。Jacob以马拉松为例,试图说明大部分人在大部分领域都是平庸的(Most people are average at most things.),特别好的和特别坏的都是极少数,但在程序员领域,我们听到的大都是某某程序员 rocks 或者sucks,基本没有中间状态,这是一件非常奇怪的事情。他还提到“真正的程序员”(real programmer)这个概念,也就是所谓的 "10x programmer",你只有精通某些原理或者长得像Mark Zarkerberg才算是一个real programmer,而一个使用各种云服务以及API快速搭建自己应用的人就不算,这非常可笑。顺带一提,Jacob的Twitter个人简介就是"not a real programmer. "

Jacob认为这种关于“编程天才”的神话非常有害,一方面它把行业门槛设置得特别高,令很多人望而却步,另一方面它也在折磨行业内的人,因为你如果不能rocks,就会变成 sucks,所以不得不用一切时间来努力学习和工作,导致影响生活。他认为我们应该改变这种态度,编程只是一些技能,并不需要太多天分,它是可以学习的,而且做一个平庸的程序员不丢人,"it's cool to be okay at these skills"。跑步的人有很多种——短跑运动员,纯粹为了锻炼身体的人,参加马拉松的人,等等。为什么编程就一定要做 real programmer,而且做不到就觉得自己不配编程呢?

这个演讲在大会现场赢得很多掌声,在提问环节也可以听到一些怯生生的声音说:“我也是一个平庸的程序员。”不过在其它地方也引起一些争议,有人认为拿跑步和编程对比并不恰当,有人说程序员能力的差距确实大得惊人,有兴趣的人可以去看Hacker News上的讨论。

对于我个人来说,Jacob的演讲触动了我多年来的心结,让我非常感动。我一直认为自己顶多只是一个平庸的程序员,而且无论多么努力学习,总觉得自己不是一个real programmer,而且好像越走越偏。Jacob的演讲让我明白,有此苦恼的大概不只我一人,所以这里写一下自己的心路历程,希望对别人有一些启发。

公开承认自己平庸是一件危险的事情,如果不能说明你智商低或者没有天分,至少说明你态度有问题:“平庸就应该去努力练习,而不是写文章为平庸辩解”。而当你说Jacob这样的人也承认自己平庸时,就会出现一堆带有“资格论”的反驳:“Jacob至少写了那么多代码,你怎么能和别人比”“人家那样说是谦虚,你这样就是无耻了”,顿时你就会觉得自己和那些只会从伟大人物身上挑毛病的小人没什么两样。幸运的是,今后我很可能不会以编程为业了,所以这些事情都无所谓了,可以诚恳地说一下自己的经历。

我对real programmer的印象始于大学,尽管对于其它专业的人来说我们和修电脑的没什么两样,但专业内部已经隐约有对某种高级事物的崇拜,记得大一时一个同学对我说:“我们现在还学C,外面早就开始 Java了”。那个时候专业内也已经流传了不少程序员的传说,比如某个学长多么厉害,或者微软某个程序员一个人做完了一个项目组的工作。相信很多人都听说过那个故事,大意是一个人电脑坏了,于是找一个电脑高手来修,电脑高手拿来电话,连上电脑,花了整整一夜的时间用0 和 1写了一个操作系统,故事的结局是“这个电脑高手去了美国,杳无音信”。当时我听到这个故事的时候半信半疑,居然宁愿相信它是真的!因为如果万一它是真的而我不相信,只能说明我的技术水平或者智商无法理解那个层次的东西,那就太糟糕了。那个时候真的很想变得厉害。

随着对专业的了解,很快我们就开始嘲笑那种“Java比C新,所以比 C好”的看法,转而去相信“越底层越牛”的论调,写C的比写Web的厉害,写汇编的又比写C的厉害,为什么呢?因为他们“基础更扎实,更了解原理。”这种论调发展到一个极致就是:学数学或者物理这种“硬科学”的人如果转行写程序,肯定比我们厉害。他们算法一定比我们好,而且就是这帮家发明的计算机啊我靠。有一段时间隐约觉的别的专业的转行写程序都会比我厉害,哪怕是一个钢琴家——因为他手指灵活打字更快。

大学里另外一个让我印象极其深刻的传说就是:高手写程序不用IDE,都是直接记事本。高手摘花飞叶皆可伤人,谈武器和工具,那就是落了下乘,只有不入流的才整天研究哪个工具更有效率。所以在很长一段时间内我都因为自己没用记事本写程序而怀疑自己的能力,直到后来工作之后我接触到了Vim,发现它长得和记事本还真的挺像的。

除此之外,还有对经典书籍的顶礼膜拜,MIT的Introduction to Algorithms和SICP,Knuth的The Art of Computer Programming ,TCP/IP详解,以及一些其它的经典操作系统、数据库等方面的书。不啃完这些就说明你天分不够,或者没有热情,还是趁早转行比较好。在我一直很喜欢(现在依然喜欢并推荐)的一篇文章Teach Yourself Programming in Ten Years 中,作者在结尾推荐了SICP,他说:"The book is challenging and will weed out some people who perhaps could be successful with another approach." 所以尽管我一直没有读完这本书,而且应该也不会去读了,但对它总有一种情结,以至于两年前出国的时候还把它带在身边。

毕业之后开始做职业程序员,每天都是和程序员打交道,关注的也都是科技新闻,那时候硅谷文化也越来越流行,所以更加向往和崇拜real programmer。Joel Spolsky 写过一篇《飙高音》,其中的两段可以算作是对real programmer的最佳诠释:

用许多平庸的程序员取代少数优秀的程序员,这种做法的真正问题在于,不管平庸的程序员工作多长时间,他们做出来的东西,都无法像优秀程序员做得那样好。

……

一流的歌唱演员不管在什么时候,都可以很轻松地唱出高音,而平庸的歌唱演员就是永远做不到这一点。莫扎特的歌剧《魔笛》中有一段著名的咏叹调"Queen of the Night",音高必须达到F6(女高音的最高音高)才能唱好这首歌,世界上能达到这个标准的女高音都快要绝迹了,而飙不到著名的F6,你就是不能表演"Queen of the Night"。

(责任编辑:安博涛)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

英国官员:让华为参与英国5G建设风险可控

英国官员:让华为参与英国5G建设风险可控

2月21日,英国金融时报报道称,在布鲁塞尔发表的一次演讲中,英国信号情报机构政府通...[详细]

西媒:以色列打造网络安全“硅谷”

西媒:以色列打造网络安全“硅谷”

2月13日报道 西媒称,凭借每年超过10亿美元的企业投资,以色列已经成为全球网络安全领...[详细]

俄罗斯力推脱离互联网计划 确保应急状态下

俄罗斯力推脱离互联网计划 确保应急状态下网络安全

俄罗斯新闻机构 RosBiznesKonsalting(RBK)上周报道称:作为计划实验的一部分,当局正...[详细]

GSMA呼吁欧洲守住网络安全和网络基建供应竞

GSMA呼吁欧洲守住网络安全和网络基建供应竞争力

5G将改变欧洲公民的生活和工作方式。5G作为现有4G网络的补充,与之协同工作将比以往更...[详细]

涉嫌窃取近千政界人士信息 德国20岁黑客遭

涉嫌窃取近千政界人士信息 德国20岁黑客遭逮捕

涉嫌窃取德国近千政界人士信息的黑客落网 政府拟修法加强网络安全 德国当局8日宣布,...[详细]

返回首页 返回顶部