资深程序员:程序员的困境

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

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

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

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

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

[[83383]]

这到底是怎么回事

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

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

如何打破这种困境?

对于个人:

  • 首先, 打造你自己的私人项目。你需要不断地打磨自己的技艺。如果工作本身并不能帮助你做到这一点,就捡起那些你感兴趣的问题,然后用你的私人时间去攻克它。通过这个方法,你应该会学到新东西。如果把你的私人项目发布出去,比如在 GitHub 上,你说不定会认识一些人,帮助你大踏步地向前迈进。
  • 不要在一个团队中停留超过两年。强迫你自己四处转转,哪怕在是同一家公司内,你会面对新的挑战和新的技术。试着每隔 18 个月就出去面试工作。你并不需要真的换工作,但是这能让你看到真实的市给予员工压力和挑战。实行轮岗制度,让“专家”们有机会拓展他们的技能。启动新项 目,用战役来磨炼你的勇士。

对于团队和公司:

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

原文链接:https://medium.com/i-m-h-o/231d7499a75

译文链接:https://github.com/cssmagic/blog/issues/23

责任编辑:陈四芳 来源: github.com
相关推荐

2015-12-18 10:06:22

程序员摆脱困境

2011-05-13 14:34:02

程序员

2011-05-12 09:27:15

程序员创业

2011-05-12 12:45:54

程序员

2012-03-06 09:22:46

程序员

2012-11-22 14:00:26

程序员

2017-11-14 21:30:15

2013-04-15 10:55:09

程序员

2012-11-08 09:49:30

C++Java程序员

2009-05-21 15:58:12

程序员工作经验职场

2018-04-23 11:00:06

程序员养生健康

2020-07-17 09:55:11

程序员技能开发者

2010-09-01 11:06:16

程序员

2015-08-11 14:45:51

程序员

2010-08-27 10:34:51

程序员

2009-12-14 09:29:00

程序员

2015-09-24 08:43:13

程序员未来

2012-02-14 09:13:51

程序员

2012-03-13 10:55:00

程序员

2011-05-30 14:50:56

程序员
点赞
收藏

51CTO技术栈公众号