程序员困境

jopen 9年前

程序员困境

英文原文:Programmer’s dilemma

最近,我招聘一个内核程序员的岗位,几十个人过来面试。这些应聘者都来自优秀的大公司,不是开发芯片的,就是开发内生的操作系统的。其中有些人声称自己在内核上开发的时间至少 10 年!他们的简历美轮美奂,各种完成的项目,各种获得的褒奖。

但是绝大多数人都无法回答一个最基本的问题:当我们调用一个标准内存分配函数时,在内核中会发生什么?

别惊讶。当我请其中一位应聘者写一个简单的,基于在 glib 库中 hash 函数上搭建的 LRU 缓冲框架时,他表示压根没用过 glib。这也正是我想要的答案。我给他看了 glib hash 的 api 页面,同时非常详细的给他介绍了 API。之后一个小时过去了,他所能给我的,仅仅是寥寥草草的几行乱七八糟的代码而已。

我不知道这种情况是不是适用于其他国家,但是在中国,或者准确点儿来说在北京,这就是现实。所谓的 “高级” 程序员,那些多年在大型的,有名气的外国公司供职的程序员,甚至无法在最简单、基础的问题上证明自己的能力。

为什么会这样?

我越想,越觉得原因并非简单归咎于他们自身,还和他们供职的公司有关。这些公司经常备好了一套代码,好几年没有重大调整。与这套代码相关的技术 已经形成了框架,人们的技术就在这框架中,遵循既有的路径走就好了,而创新精神就在这个过程中消失殆尽。如果你在很长时间内就跟这一种代码打交道,并没有 将触角伸向外面的世界,很快你就会发现自己置于悲惨境地。在公司或者团队里,你被尊称为 “专家”,但是很不幸的,在这个市场上你将无法找到一份胜任的工作。

这就是所谓的 “专家陷阱”。日复一日,我们程序员都梦想成为公司或者团队里的行家里手。但是,等这一天真的来到时,我们自陷囹圄,固步自封。逐渐的,我们无法从无到有 的凭借自己的能力,开发出一套完整的项目。因为摆在眼前的代码实在太稳定了(不仅全面而且还带来真金白银)。更糟糕的是,如果我们的主要工作仅仅是保证现 有的代码更好的存在下去,没有任何大的变动,那么过上一段时间,不管我们研究阅读了多少的代码,最终我们没办法写代码了,即使问题像学生作业一样简单。这 就是程序员困境,我们以写代码赖以为生,但是到最后,我们所供职的公司却让我们丢了谋生的手段。

如何逃离困境?

对于个人来说—

首先,做你自己的项目,你必须持续不断的打磨自己的能力。如果工作本身无法帮你做到这点,那么就在业余时间选择你想要攻克的难题。这样做很快你 能学到新的东西。如果你发布了个人的作品,比如在 github,很有可能你能遇到一些人,他们能把你从现如今的泥潭中拔出来。

另外,不要在同样一个团队待超过 2 年时间。即便还是待在一个公司,逼着自己不断的调岗,你会遇见新的挑战,学习到新的技术。每 18 个月走出去面试一次,你其实不需要跳槽,只是看看你与这个市场的结合能力是否如以往那样紧密。

对于团队和公司来说—

给你的雇员以挑战和压力。让内部职位不断调换,让所谓的 “专家们” 有机会丰富自己的技能,开发新的项目,让 “武士” 在 “实战” 中强大起来。定期举行 “编程马拉松”,这有助于培养创新的氛围。人们将相互你追我赶,那时候肯定有人在心里说:“我靠,那个混蛋竟然在 24 小时内写出如此漂亮的代码,我必须努力了!”

来自: 36kr.com