最近,我面试了数万个应聘内核程序员职位的候选人。这些候选人是从大的、好的、著名的芯片或嵌入式操作系统/系统类的公司来的。他们中的许多人声称,他们至少有10年的在内核方面的工作经验。他们的简历看起来相当漂亮-各种最新的项目和各种大奖及奖励......
但是他们中的大多数不能回答一个非常基本的问题:当我们调用标准的malloc函数时,在内核里发生了什么?
不要惊讶。当我让一个候选人写一个简单的基于Glib哈希函数的LRU缓存框架,他首先声称,他从来没有使用过Glib - 这是我所预料到的 - 我向他展示Glib函数的API页面并详细的向他解释,将近一个小时后,他只写出了几行凌乱的代码。
我不知道,在其他国家情况是否类似,但在中国,或者更具体地说,在北京,这是现实。为国外著名大公司工作过的“高级”程序员,并不能在简单的基础的问题上面证明他们。
为什么会出现这种情况呢?
我越去想它,我越相信不仅仅是他们自身,而且也是他们工作的公司导致的这种情况。这些公司通常会提供稳定的协议栈的代码,其中有的多年没有显著的变化。围绕这这些代码所包裹的技术,让他们只需要按照现有的路径,而不是创造性的工作。如果你正好为这类代码工作了很长一段时间,并且没有达到外面世界的高度,有一天你会发现自己在一个可怜的位置 -在公司或项目组内部, 他们称你为“专家”,但不幸的是你很难在市场上找到相称的好工作。
这就是所谓的“专家陷阱”。从第一天的日子,我们程序员梦想着成为团队/公司内部的专家,然而,当这一天真正来临时,我们自己使自己陷入了困境。我们越深入到现有的代码,我们就更深的陷入。我们渐渐因为现有的代码是如此稳定而丧失了写出从开始到完整项目的代码的能力。更糟糕的是,如果我们的主要工作是维护现有的代码以及一些特色的开发,一段时间后,不管我们已经读了或研究了多少代码,我们将会发现我们不能写代码了
- 即使是作为简单的研究生院分配的问题。这是程序员的困境:我们靠编码养活自己,但是养活我们的大公司往往会毁了我们的谋生能力。
如何摆脱这种困境?
对于个人 -
首先,做自己的个人项目。你需要一直“使你的锯子保持锋利”。如果工作本身并不能帮助你这样做,拿起在你的个人时间内你要克服并征服它的问题。通过这样做,最有可能的是,你会学到新的东西。如果您在github上发布您的个人项目,你可能会得到机会认识那些可能会使你远离你现有的位置的人。
不要停留在一个项目组超过两年的时间。强迫自己流动,即使在同一组织中,同一家公司,你将面对新的挑战和新的技术。尝试每18个月做一次面试。你不需要改变你的工作,但你可以看到市场需要什么以及你如何融入。
对于团队/公司 -
给员工们压力和挑战。循环的工作,让“专家”有机会拓宽自己的技能。使用战斗来锻炼勇士。
定期举行黑客马拉松。这将有助于建立一个拥抱创新和创造的文化。人们会被他们的同龄人所激发 - “哎呀,那鸨24小时能写出这样一个美丽的框架,我必须得努力工作了”。
原文来自: https://medium.com/i-m-h-o/231d7499a75
作者:shijiebei2009 发表于2013-8-19 21:47:42
原文链接