《房间里的大象》是Apache软件基金会副总裁Niclas Hedhman在2016中国开源年会上做的演讲。
完整的可以看原文,角度犀利,和有缘人分享一下。
我们可以以以下方式对我们的行业的程序员进行分类,天才,良好,一般,差和糟糕。
让我们看看每一个的特点。
天才程序员写的代码库很简单,可重复使用,且功能强大。
他们坚持不懈,持续发展,对代码库进行小而有规律的改进,添加新的功能。
他们写了足够多的相关测试。他们往往很谦虚,知识渊博。
他们也不完美,经常要从头开始重写整个库。但他们能写出更好的代码,而不破坏兼容性。
良好开发人员写代码库比较复杂。
通常他们留下了很多未完成的地方。因为他们不会在一个库工作很长时间,很快他们就会开始做另一件新人兴奋的事情了。
他们写的代码库很快变得陈旧,没有人知道如何操作它,而测试它则需要写太多的代码。
良好开发人员对自己和自己的工作感到自豪,但是他们的代码不能重写,因为这些代码写得没那么好,缺乏测试机制。
一般的程序员通常是大公司的维护软件的大神。
他们不计一切代价解决错误,砍掉新功能。如果测试中断,他们只需禁用测试,因为交付代码的时间到了。
他们也不喜欢与那些良好的开发人员工作,因为这些人会留下存在依赖关系的抽象概念和代码库。
这些东西用起来很不方便,而且有很多错误,还没有文件记录。
较差的程序员不关心任何东西。他们只会工作,写代码,回家,然后重复这一过程。
他们永远不会学习,他们不听取别人意见。即使告诉他什么是好的代码,什么事糟糕的代码,他们也不能分辨出来。
他们不应该成为程序员,一般也不会一直做程序员。
糟糕的程序员没有比较差的程序员那么糟糕,因为他们和他们周围的人都知道意识到他们没有经验的,代码写的不是很好。所以他们想学习,渴望成为更好的程序员。他们也往往会过渡成为良好的程序员,但有的也会变成比较差的程序员。糟糕是一个短暂的阶段,没有什么可以担心的。
这给我们带来了下一个神话。
如果我们问程序员,他们属于哪一类。
如果他们没看过这些类别的定义,那么我们将得到这样一个结果,60%的程序员认为自己是属于天才和良好类,只有30%左右的人认为他们是一般的程序员。
但依我的经验,统计数字应该是这样的。
极少数的是天才程序员,有一小部分的良好的程序员,大量的程序员属于一般、较差的程序员。好好思考一下吧。
所以,当天才程序员向我们展示其简单而卓越的杰作,有着漂亮的设计,简洁的抽象,简单易用……
我们就认为“我可以做到”。
在希腊语中,Primus Inter Paris意思是第一名也是平凡人。
这种观点认为真正优秀的人仍然只是我们中的一员,没有什么不同,我们都可以做到。
当我们看到别人写的漂亮代码,觉得很稀松平常。
但我们这些普通人太愚蠢了,看不到自身的局限性。我们知道最漂亮的代码长什么样,知道这是如何使用,但这并不意味着我们可以自己写出这种代码。
虚幻的优越感和达克效应分支理论告诉我们,我们太愚蠢了,却不知道我们是多么愚蠢。
我们对自己的能力有信心,写了那些在正常情况下几乎不能运行的复杂软件,这些软件即使在特殊情况下也无法运行。
我太愚蠢了,我写不出好代码。
所有人,现在,说出来……
这就是房间里的大象。