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

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

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



 

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

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

  为什么会出现这种情况?

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

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

如何摆脱这种困境?

  对于个人——

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

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

  对于团队/公司——

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

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

(责任编辑:安博涛)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

这八种方式教您最大提升网络带宽

这八种方式教您最大提升网络带宽

使用流量监管与WAN优化等技术能够帮助我们最大程度发挥带宽资源。 网络带宽是一种固定...[详细]

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

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

近日笔者采访了几十位求职内核程序员这个岗位的候选人。这些候选人均来自大的优秀公司...[详细]

这些愚蠢的事 数据中心管理中要避免

这些愚蠢的事 数据中心管理中要避免

很多时候,我们每个人并不会认为我们会犯愚蠢的错误。但是当错误发生后,我们往往追悔...[详细]

系统管理员千万别犯这十大安全错误

系统管理员千万别犯这十大安全错误

安全不仅仅是技术问题,而是人的问题。许多低级错误竟然经常是由那些应该懂更多的人犯...[详细]

应聘时回答好这四个问题 数据安全分析师的

应聘时回答好这四个问题 数据安全分析师的职位非你莫属

最近的数据泄露,比如发生在施乐、益百利和TalkTalk的几起,成为了数据安全分析师极度...[详细]

返回首页 返回顶部