旷世的忧伤

Huoty's Blog

【转】程序员的困境

最近我为一个内核程序员的职位面试了十几个候选人。这些候选人都来自一些不错的大公司,这些公司在芯片或嵌入式操作系统领域十分有名。这些候选人大多声称自己在内核方面有着十年的在职工作经验。他们的简历看起来非常耀眼——各种相关的项目、术语和奖项……

但他们几乎无人能够回答一个非常基础的问题: 当我们调用标准的 malloc 函数时,内核中会发生什么?

先别吃惊。当我要求其中一位候选人基于 glib 的哈希函数写一个简单的 LRU 缓存框架时,他先是表示从来没用过 glib——如我所料——于是我帮他打开了 glib 哈希 API 的页面,并向他详细讲解了这些 API;然后大约一个小时以后,他只写出几行凌乱的代码。

我不知道其它国家是否也有类似的情况,但在中国,或者更具体一些,在北京,这就是现状。那些在不错的大公司里工作了多年的“资深”程序员们无法在一些简单的、基本的问题上证明自己。

这到底是怎么回事?

当我在这个问题上思索得越多,我就更加相信,这不仅有他们自身的原因,同时也归咎于他们所供职的这些公司。这些公司通常提供了一个稳定的代码堆,往往几年都不会有大更新。这些代码的专有技术把人们的技能框进一个定式,以致于他们只需要遵循现有的路径,而不需要发挥创意。如果你碰巧为这类代码工作,而且与世隔绝了很长一段时间,那么有一天你会发现你自己已经陷入一个可悲的位置——他们在团队或公司内称呼你为 “ 专家 ”,但不幸的是,你无法在市场上找到一份同等待遇的工作。

这就叫作 “ 专家陷阱 ”。日复一日,程序员们都渴望在团队或公司内成为一名专家;但是,当那一天真正到来时,我们却早已作茧自缚。我们在既有代码中钻得越深,我们自己就陷得越深。既有代码是如此稳定(如此宠大、如此好用),让我们渐渐地失去了从无到有独立编写完整项目的能力。更糟糕的是,如果我们的主要工作就是维护这些既有代码、很少开发新功能,那么过不了多久,无论研读了多少代码,我们都会发现自己不会写代码了——哪怕是一个像毕业大作业那样简单的任务。这就是程序员的困境: 我们以编码为生,但那些养活我们的大公司却在无形中磨灭了我们的生存技能。

如何打破这种困境?

对于个人:

首先, 打造你自己的私人项目。你需要不断地打磨自己的技艺。如果工作本身并不能帮助你做到这一点,就捡起那些你感兴趣的问题,然后用你的私人时间去攻克它。通过这个方法,你应该会学到新东西。如果把你的私人项目发布出去,比如在 GitHub 上,你说不定会认识一些人,帮助你大踏步地向前迈进。

不要在一个团队中停留超过两年。强迫你自己四处转转,哪怕在是同一家公司内,你会面对新的挑战和新的技术。试着每隔 18 个月就出去面试工作。你并不需要真的换工作,但是这能让你看到真实的市场需求,以及怎样与时俱进。

对于团队和公司:

给予员工压力和挑战。实行轮岗制度,让“专家”们有机会拓展他们的技能。启动新项目,用战役来磨炼你的勇士。

周期性地举办黑客马拉松活动。这有助于营造一种崇尚创新和创作的企业文化,人们会受到同伴的激励——“擦,这个混蛋居然可以在 24 小时内写出这么漂亮的框架,我也得加把劲儿了!”

本文摘自:https://github.com/cssmagic/blog/issues/23

【评注】:

刚读完这篇文章的时候,我觉得作者说得很有道理。同时还反省了一下自己,发现很多基础的问题我也不会。继续往下看了大家的评论,才回过神来。我好像都是这样,在看别人写的文章的时候,总会陷入与作者同样的情绪里,好像拼命的想要赞同作者的观点,而失去了自己应有的判断力。

在工作中能用到的技术,毕竟只有那么一部分。很多没有被用到的,曾经掌握了的东西,会慢慢的被遗忘。我想,每个人应该都有这样的体会。我们不得不承认这样一个事实,大部分人工作都只是为了养家糊口,有一小部分人是因为兴趣才选择相关的工作,可能仅仅只有那么几个人是单纯的因为兴趣。所以大部分人只希望把当前的工作做好,而没有考虑其他的东西。

大公司的义务肯定都很繁忙,所以作为公司的管理者肯定会想方设法创建一些快捷的方法,比如做一套框架,所有项目都来套这个框架,否则公司可能无法正常的运转。本来公司里就还有很多事没做,员工们压力已经很大了,还怎么能给员工施压,还怎么实行轮岗制度。换一批新人过来,你觉得这个项目能够如期完成?如果压力太大,就不怕员工们集合起来兵变,集体跳槽了?

我说这些并不是想要否定作者的观点,我只是想要站在一个中立的角度,来阐述我的看法:任何人都没有错,都有各自的利益所在。

我该肯定,大多数的公司都不希望员工跳走。除非一些特殊的原因,例如公司亏损,需要裁员,或者的确有那么些人在公司里滥竽充数。如果我是老板,至少我不希望我手下的兵弃我而去,毕竟他们已经熟悉了公司的业务,再则起码他们在公司也呆了一段时间了吧,怎么说也会有那么一丁点感情的呀。那么,为什么现在跳槽现象还是那么平凡呢?哎,都是为了养家糊口嘛,给不了我想要的待遇,就只能另投他家咯。

我觉得我是一个记忆力非常不好的人。记得刚毕业找工作那会,面试中的涉及到的一些基础的问题,我都能够对答如流,而且感觉面试题也做得不错。那个时候是因为,要毕业了,必须要找份工作养活自己,所以是下了一番功夫的。我记得那个时候为了面试,我特意的复习了一些基础的问题,还先尝试着做了不少面试题。再则,那个时候刚从学校里出来,作为一个学生,一些基础的问题怎么也应该掌握吧。那个时候出去面试,感觉还是挺自信的。只不过去中科院计算所面试的时候遇到了点意外,一面过了,二面的时候要我做个PPT,讲讲自己做过的项目。我一个学生,能有什么项目可讲的呢。好吧,那我就讲讲我的毕业设计,以及在学校的时候做过的一些小项目吧。面试的时候,刚进屋,两个中年男子坐在椅子上,翘着二郎腿。带我进屋的人应该是公司的助理,进屋后我礼貌的递了三份简历过去,至此那两个中年男子一直没有吭声。顿时压力就来了,这官架子好大呀,在那里感觉自己好卑微。还是助理起身说,你把PPT拷到电脑上开始讲吧。讲着讲者,其中一个男的说话了:“你的PPT上有一个错别字,你知道吗?”该死的,这气氛本来就够紧张了,怎么偏偏还在PPT上留了个错别字。我赶紧去找,但是当时脑子有点懵,一时没有察觉。看我没有找出错别字,男的说没发现就继续往下讲吧。好吧,那我只有往下讲了。没讲多少,那男的又说,咱们今天就到这吧。面试就这样结束了。我能说我的PPT还没讲完么,可恶的是PPT上的错误字我没找出来,当时发现了错别字也好呀,起码我可以把字改正确,然后说声抱歉再坦然的往下讲。这是我最糟糕的一次面试。

在后来的工作中,我接触了很多新的东西,而且我对这些新的东西也比较感兴趣,所以就一直在学习新的技术。慢慢的我发现,很多以前掌握的东西,我差不多都忘了,刚毕业那会一些不用思考就能回答的问题,现在已经回答不上来了。仔细想想,我好像连冒泡排序都不会写了。但我确实觉得我长进了不少,我的见识更广了,视野更开阔了。而且解决问题的能力也提升了,至少遇到问题,我知道去哪里找解决方案。

但是,要我现在出去面试,我觉得我肯定会遇到像作者所说的困境。我很赞成作者所说的利用业余时间打造自己的私人项目,而且我也是这么做的,虽然我的项目质量并不高,但这是我的个人兴趣,我相信有一天我会写出高质量的私人项目。所以大部分人启动私人项目是因为兴趣所在,是像亲自去实现自己的一些想法,也就是说这并不能提高个人在某一方面的技能。而且,除非你对计算机科学非常的热爱,对软件开发非常的喜欢,对写代码没有抗拒力,那么你才可能很热忱的去做你的私人项目。要不是这样,谁愿意将时间浪费在这上面,还不如看看电影,爬爬山,旅旅游呢。我们都知道,在面试的时候,无可避免的会被问到一些奇奇怪怪的问题。或许我们在某一方非常的擅长,而在其他的一些领域却一无所知,以至于我们无法回答某些问题。

说到这里,其实我是想要为自己打抱不平。虽然我有些许的自卑,但我一直觉得自己并不比别人差,而且事实也是这样的,在我周边的人都觉得我比较优秀。但是我却觉得我一直没有遇到伯乐来赏识自己。面试的时候时间都很短暂,彼此都不可能很好的相互了解,所以也就只能采取某些特定的方式进行粗略的判断。通常面试者通过问出他觉得应聘者应该懂的问题来判断这个人的能力。而恰恰应聘者对这个问题不了解,但这也不能证明这个人就是庸才,有可能他在某一方面胜过一般人成千上万倍。有些人总是怀才不遇,你们干嘛要提那些无理的要求。

我想说的是,在这个环节中没有任何人错。公司招人,就是希望找个人来完成某些特定的工作,如果对我所要求的你不了解,我就认为你不行。出去找工作的人觉得,虽然你问的东西我都不会,但是我其他方面的问题能力都很强呀。这只是你没有找对地方而已。对于个人,可能大部分人都希望通过努力来提升自己的能力,但是在一个地方呆久了,慢慢也就怠慢了,没有了动力。对于公司,大部分的公司希望只希望员工把本质的工作做好,对于给员工增长和拓展技能的机会,恐怕只是少数。一旦员工的能力提升,就会要求公司提高待遇,而公司又不愿意多做付出,然后这一切就陷入了一个恶性的循环当中。

我觉得我们在出去应聘的时候,应该好好准备一番,复习复习所了解的内容,以保证在面试的时候能够充分的展现自己的所长。你不应该抱怨面试官对你的“刁难”,他也希望你能够证明自己。我也希望公司能够给员工带来一些提高技能的机会,但这恐怕只是一种理想状态。确实有些公司过于小气,大家出来混都是为了养家糊口,起码也应该给为你带来财富人应该有的待遇。在一个地方呆得好好的,谁愿意轻易就走呢。我就不信谁愿意总是跳来跳去,没事瞎折腾自己。所以说,“困境”是我们相互造成的,谁都没有错,而谁都又有错

说了这么多,我都忘了我要表达的中心思想。提笔的时候我没有想到这会是一片长篇大论,或许我只是像发发牢骚而已。我希望我们都能向那些理想的状态接近,我们共勉吧。

Top