程序员困境
转载者自述:我对作者描述的这种困境深有感触,希望那些在大公司做着大项目的程序员们能看到这篇文章,如果你们还在用着那些公司牛人写的框架,每天都在写着,不,是copy、paste着代码,那么你就要好好想想了。
原创文章,作者:董老师,如若转载,请注明出处:http://36kr.com/p/5040630.html
![程序员困境](http://img0.tech2ipo.com/upload/img/article/2014/03/1394437209648.jpeg)
来源: Medium(by Try Chen)
最近,我招聘一个内核程序员的岗位,几十个人过来面试。这些应聘者都来自优秀的大公司,不是开发芯片的,就是开发内生的操作系统的。其中有些人声称自己在内核上开发的时间至少 10 年!他们的简历美轮美奂,各种完成的项目,各种获得的褒奖。
但是绝大多数人都无法回答一个最基本的问题:当我们调用一个标准内存分配函数时,在内核中会发生什么?
别惊讶。当我请其中一位应聘者写一个简单的,基于在 glib 库中 hash 函数上搭建的 LRU 缓冲框架时,他表示压根没用过 glib。这也正是我想要的答案。我给他看了 glib hash 的 api 页面,同时非常详细的给他介绍了 API。之后一个小时过去了,他所能给我的,仅仅是寥寥草草的几行乱七八糟的代码而已。
我不知道这种情况是不是适用于其他国家,但是在中国,或者准确点儿来说在北京,这就是现实。所谓的 “高级” 程序员,那些多年在大型的,有名气的外国公司供职的程序员,甚至无法在最简单、基础的问题上证明自己的能力。
为什么会这样?
我越想,越觉得原因并非简单归咎于他们自身,还和他们供职的公司有关。这些公司经常备好了一套代码,好几年没有重大调整。与这套代码相关的技术已经形成了框架,人们的技术就在这框架中,遵循既有的路径走就好了,而创新精神就在这个过程中消失殆尽。如果你在很长时间内就跟这一种代码打交道,并没有将触角伸向外面的世界,很快你就会发现自己置于悲惨境地。在公司或者团队里,你被尊称为 “专家”,但是很不幸的,在这个市场上你将无法找到一份胜任的工作。
这就是所谓的 “专家陷阱”。日复一日,我们程序员都梦想成为公司或者团队里的行家里手。但是,等这一天真的来到时,我们自陷囹圄,固步自封。逐渐的,我们无法从无到有的凭借自己的能力,开发出一套完整的项目。因为摆在眼前的代码实在太稳定了(不仅全面而且还带来真金白银)。更糟糕的是,如果我们的主要工作仅仅是保证现有的代码更好的存在下去,没有任何大的变动,那么过上一段时间,不管我们研究阅读了多少的代码,最终我们没办法写代码了,即使问题像学生作业一样简单。这就是程序员困境,我们以写代码赖以为生,但是到最后,我们所供职的公司却让我们丢了谋生的手段。
如何逃离困境?
对于个人来说—
首先,做你自己的项目,你必须持续不断的打磨自己的能力。如果工作本身无法帮你做到这点,那么就在业余时间选择你想要攻克的难题。这样做很快你能学到新的东西。如果你发布了个人的作品,比如在 github,很有可能你能遇到一些人,他们能把你从现如今的泥潭中拔出来。
另外,不要在同样一个团队待超过 2 年时间。即便还是待在一个公司,逼着自己不断的调岗,你会遇见新的挑战,学习到新的技术。每 18 个月走出去面试一次,你其实不需要跳槽,只是看看你与这个市场的结合能力是否如以往那样紧密。
对于团队和公司来说—
给你的雇员以挑战和压力。让内部职位不断调换,让所谓的 “专家们” 有机会丰富自己的技能,开发新的项目,让 “武士” 在 “实战” 中强大起来。定期举行 “编程马拉松”,这有助于培养创新的氛围。人们将相互你追我赶,那时候肯定有人在心里说:“我靠,那个混蛋竟然在 24 小时内写出如此漂亮的代码,我必须努力了!”