在大型公司中不能腐蚀自己的学习能力和时间能力。


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

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

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

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

这到底是怎么回事

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

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

如何打破这种困境?

对于个人:

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

对于团队和公司:

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

程序员的困境 - R中国用户组-炼数成金的更多相关文章

  1. dataguru(炼数成金)大数据培训基地印象

    dataguru访问地址:http://f.dataguru.cn/?fromuid=99611 课程优惠码:C4B6  这段时间一直在dataguru(炼数成金)上学习<hadoop数据分析平 ...

  2. MapReduce工作原理图文详解 (炼数成金)

    MapReduce工作原理图文详解 1.Map-Reduce 工作机制剖析图: 1.首先,第一步,我们先编写好我们的map-reduce程序,然后在一个client 节点里面进行提交.(一般来说可以在 ...

  3. 截图:【炼数成金】深度学习框架Tensorflow学习与应用

    创建图.启动图 Shift+Tab Tab 变量介绍: F etch Feed 简单的模型构造 :线性回归 MNIST数据集 Softmax函数 非线性回归神经网络   MINIST数据集分类器简单版 ...

  4. 炼数成金(dataguru)IT技能修炼

    2016我定的目标就是要走出舒适区,进入学习区!为了少走弯路,节约学习的成本和时间,我选择了dataguru.看到心仪的课程毫不犹豫的就报了名. 分享了炼数成金邀请码,使用邀请码报名课程可以减免50% ...

  5. Python数据分析【炼数成金15周完整课程】

    点击了解更多Python课程>>> Python数据分析[炼数成金15周完整课程] 课程简介: Python是一种面向对象.直译式计算机程序设计语言.也是一种功能强大而完善的通用型语 ...

  6. 炼数成金数据分析课程---14、Logistic回归

    炼数成金数据分析课程---14.Logistic回归 一.总结 一句话总结: 大纲+实例快速学习法 主要讲Logistic回归的原理及编程实现 1.事件的优势比(odds)是什么? 记y取1的概率是p ...

  7. 炼数成金数据分析课程---10、python中如何画图

    炼数成金数据分析课程---10.python中如何画图 一.总结 一句话总结: 主要matplotlib库,pandas中也可以画一些基础图 大纲+实例快速学习法 1.matplotlib的最简单画图 ...

  8. 015_[小插曲]看黄老师《炼数成金Hadoop应用开发实战案例》笔记

    1.大数据金字塔结构 Data Source-->Data Warehouses/Data Marts-->data exploration-->Data Mining-->D ...

  9. 炼数成金hadoop视频干货01

    视频地址:http://pan.baidu.com/s/1dDEgKwD 最开始还是讲hadoop的起源,但是和其他垃圾视频不同,不是照本宣科,听了还是受益.作者给人一种感觉就是他是确实把他的经验和体 ...

随机推荐

  1. PIM-DM协议内核触发机制及协议执行机制记录

    PIM-DM和PIM-SM是组播路由ASM(随意信源组播)中的两种不同模式.相对PIM-SM的组播注冊机制.PIM-DM的扩散机制显得更加粗犷. 一.PIM-DM无需向内核注冊pimreg虚接口. 可 ...

  2. IOS基础学习日志(七)利用dispatch_once创建单例及使用

    自苹果引入了Grand Central Dispatch (GCD)(Mac OS 10.6和iOS4.0)后,创建单例又有了新的方法,那就是使用dispatch_once函数,当然,随着演进的进行. ...

  3. ip6tables: ipv6-icmp vs icmp

    ip6tables: ipv6-icmp vs icmp资料来源 https://www.jethrocarr.com/2013/02/09/ip6tables-ipv6-icmp-vs-icmp/I ...

  4. mysql查询最新一组数据

    public function getDetail(){ $sql = "SELECT * FROM (SELECT * FROM Z_CFTC_GOV_NEW ORDER BY UPDAT ...

  5. id---显示用户ID

    d命令   id命令可以显示真实有效的用户ID(UID)和组ID(GID).UID 是对一个用户的单一身份标识.组ID(GID)则对应多个UID 语法 id [-gGnru][--help][--ve ...

  6. 【习题 8-10 UVA - 1614】Hell on the Markets

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 证明:前i个数一定能凑够1..sum[i]中的所有数字 i=1时显然成立. 现在假设i>=2时结论成立 即前i个数字能凑出1. ...

  7. UVa10397_Connect the Campus(最小生成树)(小白书图论专题)

    解题报告 题目传送门 题意: 使得学校网络互通的最小花费,一些楼的线路已经有了. 思路: 存在的线路当然全都利用那样花费肯定最小,把存在的线路当成花费0,求最小生成树 #include <ios ...

  8. worktools-不同分辨率下图片移植

    1.下载需要移植的平台代码 1)查看手机需要的项目平台信息:adb shell getprop | gerp flavor     ----->mt6732_m561_p2_kangjia_cc ...

  9. Android学习笔记进阶16之BitmapShader

    <1>简介 具体的看一下博文:Android学习笔记进阶15之Shader渲染 public   BitmapShader(Bitmap bitmap,Shader.TileMode ti ...

  10. Linux系统捕获数据包流程

    Linux系统捕获数据包流程 为了提高数据包的捕获效率,瓶颈问题是一个需要非常关注的焦点.减少在捕获数据包过程中的瓶颈,就能够提高数据包捕获的整体性能.下面本文将以Linux操作系统为平台,分析捕获数 ...