程序员的困境

[很是有感触]程序员

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

但他们几乎无人可以回答一个很是基础的问题: 当咱们调用标准的 malloc 函数时,内核中会发生什么?缓存

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

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

(Credit: flickr编码

这究竟是怎么回事?

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

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

如何打破这种困境?

对于我的:cdn

  • 首先, 打造你本身的私人项目。你须要不断地打磨本身的技艺。若是工做自己并不能帮助你作到这一点,就捡起那些你感兴趣的问题,而后用你的私人时间去攻克它。经过这个方法,你应该会学到新东西。若是把你的私人项目发布出去,好比在 GitHub 上,你说不定会认识一些人,帮助你大踏步地向前迈进。
  • 不要在一个团队中停留超过两年。强迫你本身四处转转,哪怕在是同一家公司内,你会面对新的挑战和新的技术。试着每隔 18 个月就出去面试工做。你并不须要真的换工做,可是这能让你看到真实的市场需求,以及怎样与时俱进。
 

对于团队和公司:blog

  • 给予员工压力和挑战。实行轮岗制度,让“专家”们有机会拓展他们的技能。启动新项目,用战役来磨炼你的勇士。
  • 周期性地举办黑客马拉松活动。这有助于营造一种崇尚创新和创做的企业文化,人们会受到同伴的激励——“擦,这个混蛋竟然能够在 24 小时内写出这么漂亮的框架,我也得加把劲儿了!”
相关文章
相关标签/搜索