程序员的困境

0
程序员 HTML Github C/C++ Go 8005 次浏览

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

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

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

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

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

为什么会出现这种情况?

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

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

如何摆脱这种困境?

对于个人——

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

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

对于团队/公司——

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

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

译文链接: http://www.codeceo.com/article/programmer-dilemma.html
英文原文: Programmer’s dilemma
翻译作者: 码农网 – 小峰
请尽量让自己的答案能够对别人有帮助

45个答案

默认排序 按投票排序
1 2 3