程序员的困境及如何摆脱这种困境

摘要

近日笔者采访了几十位求职内核程序员这个岗位的候选人。这些候选人均来自大的优秀公司——公司多以芯片或嵌入式OS /系统而闻名。他们中的许多人都声称自己拥有至少10年的内核在职经验。他们的简历非常耀眼——各种相关的项目,流行语和奖项……

近日笔者采访了几十位求职内核程序员这个岗位的候选人。这些候选人均来自大的优秀公司——公司多以芯片或嵌入式OS /系统而闻名。他们中的许多人都声称自己拥有至少10年的内核在职经验。他们的简历非常耀眼——各种相关的项目,流行语和奖项……

但大多数人却无法回答一个很基本的问题:当我们调用标准malloc函数时,内核会发生什么。

web

不要惊讶。当我要求其中一位候选人基于glib哈希函数编写一个简单的LRU缓存框架时,他一开始表示他从未使用过glib——这也在我意料之中——我给他展示了glib的哈希API页面,并详细解释了API,然后在将近一个小时之后,他只写出了几行乱七八糟的程式码。

我不知道其他国家的情况是否类似,但在中国,或者更具体地说,是在北京,这是现实。那些曾为大型著名外企工作多年的“高级”程序员往往在简单、基本的问题上束手无策。

为什么会出现这种情况

我越是思考这个问题,就越是觉得问题的原因不仅仅在于他们本身,也在于他们工作的公司。这些公司通常会提供稳定的代码堆栈,而且多年以来一直没有产 生显著的变化。围绕代码的技术封闭了程序员的技能,使得他们只需要遵循现有路径,而不必积极创新。如果你在这种代码上工作了很长一段时间,同时没有很好地 与时俱进,那么总有一天你会发现自己进退两难——在团队或公司内部,他们叫你“专家”,但却无法在市场上找到同样棒的工作。

这就是所谓的“专家陷阱”。日复一日,程序员梦想着成为团队/公司内部的专家——然而,当这一天真正来临的时候,却是我们困住自己的时候。我们对现 有代码挖掘得越深,我们陷入的泥潭就越深。我们渐渐失去了从头开始编写完整项目的能力,因为现有的代码是如此之稳定(如此之大,如此之有利可图)。更糟糕 的是,如果我们的主要工作就是维护现有代码,那么一段时间之后,无论我们阅读和学习了多少代码,都会发现,自己不会写代码了——即使问题简单到如研究生院 的作业。这就是程序员的困境:我们靠编码为生,但培养了我们的大公司往往会破坏我们谋生的能力。

如何摆脱这种困境。

对于个人

首先,要做自己的个人项目。你需要不断地“提升自己”。如果工作本身不能帮助你提升自我,那么找一些你想在个人时间解决的问题。这样做有助于你学到新的东西。如果你发布个人项目,比如说在github上,那么你就有机会认识那些能在你换工作时拉你一把的人。

不要停留在同一个团队超过两年。强迫自己换岗位,即使是在同一组织,同一公司中,这样你就可以面对新的挑战和新的技术。每隔18个月去参加工作面试。这不是为了跳槽,而是为了让自己知道现在市场需求什么,以及你该如何适应。

对于团队/公司

给予员工压力和挑战。轮换岗位,让所谓的“专家”有机会扩充他们的技能。开启新项目,用实战来磨练大家。

定期举办黑客马拉松。这将有助于建立一种拥抱创新和创造的文化。大家会因彼此而受到激励—— “哎呀,那个家伙能用24小时写出这样一个美丽的框架,我得加油了”。

译文链接:http://www.codeceo.com/article/programmer-dilemma.html
英文原文:Programmer’s dilemma

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: