现在同样的事情降临到我的头上。也许你也是。即使现在还没有,很快就会轮到你的。现在你还笑得出来吗?是的,我是这么认为的。
来自:CRE Taulbee调查[译注],2007-2008,5月9日发布
译注:Taulbee调查:CRA 计算机研究组织针对北美计算机行业(计算机科学CS、计算机工程CE)从业人员就业、工作及薪资的调查,调查依据学位、性别等进行分类。往年信息可以参见CRA网站。
我们这行在很多方面都有年龄歧视。我们热衷热门的新技术,用从未听说过的速度学习新东西,疯狂地工作,将产品推向市场,这些在我们这行总被认为是年轻人干的事情。我说过年轻的工人会更便宜对吧?真的便宜很多。但是计算机学位趋势调查并不支持我们的经理可以永远拥有大量便宜的工人随意指挥。事实上,所有的数据都指向一个结论:在几乎10年的时间里,学习计算机科学(CS)学生数量略有下降或者与往年持平。甚至于如 Jeff Atwood 所言,雇佣程序员的选择也选来越少。你的下一个项目可能需要雇人来完成了,与此同时外包面临强烈抵制,Egon,你会向谁寻求帮助?
如果你以为能够避免软件开发的“灰质”问题,请三思而行。在IT行业里,有一些关于程序开发老手的误传根深蒂固,莫名其妙地让年长的、有经验的工人在行业中处于不利的境地。这些误传大部分都是无稽之谈,说什么每个人过了40岁以后都会不同程度地因为年纪太大而变得愚蠢。让我们一个个地击穿这些误传的真相。
误传1:年长程序员比新手要价更高,因而年轻的开发人员更受欢迎。
事实:有经验的开发人员之所以被打上“昂贵”的标签,是因为在任何软件公司里员工的薪水永远是最大的支出。事实上,年轻就意味着廉价。但是,尽管年轻但没有什么经验的开发人员能够帮你节省掉一些预算,但是如果你的团队里只有年轻人,长远来看你要付出的会更多。年轻的开发人员并没有经历过失败的历练。他们甚至还没有足够的时间来经历失败。猜猜他们会用谁的钱来教学费?你的。错过截止时间并且交付没有完工的项目会给你带来多大的损失?请再好好想想吧。
的确,年长程序员比年轻人的工资要高一些。但是你多花的钱究竟花到哪里了呢?一个经验丰富的软件开发人员,你付出的薪水买到的是他从过去项目开发中学到的经验与教训。这些就是在你成为他的经理期间需要付出的昂贵的学费。但是如果你招入一名有经验的工人,你就不会重复项目管理和软件开发过程中常犯的错误。也就意味着在年底的考核中你会因为雇佣了会做事的员工而得到良好的评价。
误传2:年长程序员受到他们已有知识的限制,灵活性和学习新技术的能力不及年轻的开发人员。
事实:事实上正是因为他们过去的经验,年长程序员能够在更深入的层次转向新技术、框架以及系统。例如,如果了解C/C++编写的GUI框架,你会对消息传递、事件处理、MVC模式有概念,而这些知识能够帮助你在设计系统时把表示层和底层的逻辑进行分离。
当你第一次接触GUI框架的时候,除了学习代码的文法,你还需要掌握示例以及相关的代码库,不仅如此,与之相关的所有概念也都需要了解。当第二次、第三次或者以后的更多次实现GUI框架时,你会发现在代码文法之外更深的地方它们有着相似之处。你甚至可能会注意到,新的GUI框架会克服以前你花费很大力气才能解决的潜在限制。这些领悟会以你不能直接衡量的方式提高生产率。
误传3:年长程序员有家庭以及其他因素的影响,因此不能承担艰苦的软件开发任务(解读:长时间、艰苦地工作),而年轻人没有这些负担。
事实: 公平地讲,有经验的软件开发人员较少会长时间、艰苦地工作,因为他们从实践(失败)中学到连续数月每周工作80个小时最终会到达生产率的极限。这种情况会让你精疲力尽,我敢打赌任何曾经历过这种情况的人都不想再尝试。即使有这样的倾向,所谓的“家庭负担”是不存在的。
有经验的高效的软件工程师是无情的时间管理者,那些已经有家庭的工程师会更积极地在分配的时间内完成工作。他们也许会参加舞会或者足球赛,但是他们会把这些时间安排在业余时间,在每个礼拜的40个小时工作中他们会高度专注在自己的工作上。已经成家的优秀软件工程师必须高效地管理自己的私人时间,否则他们很快就会被蜂拥而来的工作埋掉。
传说4:年长程序员不如年轻人思路敏捷。
事实:时光的确会对大脑产生影响,有很多证据显示年长的工人在思考速度上会稍逊一筹。但是思路敏捷只是判断标准的一部分。思考得更快并不总是代表考虑得更好。对于判断力情况又是如何呢?有句老话:好的判断来自经验,而经验则是从错误的判断得来。
想想他们具备比年轻人更多的见识、完成的工作以及经历的成功和失败,就知道以思维不再敏捷作为不雇佣年长的软件工程师是一个糟糕的借口。有经验的开发人员可以从大量的项目中汲取经验来为今天的项目避免错误的决定。年轻的开发人员有很多重要的新点子,但是却没有经过测试和验证。同时具备这两个方面会给你的团队带来巨大的价值。
误传5:年长程序员对于工作感到厌倦并且不屑一顾,因此在公司不如年轻人受欢迎。年轻的开发人员比他们对工作更有热情。
事实:说这些话的人可能不喜欢自己的观点被别人批评,批评他们的人已经在这个行业里面久经考验,一次又一次看到愚蠢的决定被付诸行动。有经验的软件开发人员会很早就发现问题。对于你所说的这个产品不会受到市场欢迎这样的说法,他们不会买帐。因为他们与客户打了多年的交道,并且知道你这么说只是为了不在将来某个时候被公司解雇。他们不会因为客户希望软件下个月交货就接受经理每周工作80个小时的要求。他们会告诉你要实现与客户定好的特性还需要3个多月。
年轻的开发人员并不经常遇到那样的情形,因此,对糟糕的管理习惯也没有什么抵抗力。管理者在这种情况下需要的只是天真的新手。如果你希望拥有一个伟大的团队和伟大的产品,那么有可以在你作出错误决定的时候能够提醒你的人,会为你一次又一次地避免遭受损失。但这得在你有勇气承认自己并不是无所不知的前提下才会发生。
热情会逐渐散去,所以你不能说是年纪抑制了热情。如果事实真是如此,Donald Knuth, Ward Cunningham, Bill Joy, Bill Gates 以及其他数以百计的突破40岁魔咒的人就应该因为年纪的关系而对软件行业不再有兴趣。但是他们不是。热情就是热情。如果在你40岁的时候具有热情,你还是可以爱上你所在的领域。这种热爱不是一夜情。年轻的开发人员仍然能够以短暂的热情开始他们的事业,但是如果面对困难和挑战的时候短暂的热情会很快消退。
最后,请让我澄清几件事:年轻不都是坏事,年长也不都是好事。最重要的是,一个人如果编程能力不行,那么无论年纪大小都不会被录用。保持团队年龄和经验的多样性。有差异存在,就能学习和进步。但是如果你是需要雇人的老板,请不要马上把坐在你对面有白头发的兄弟拒掉。忘掉你对年龄的偏见,看看他们能否打动你。
有一天那位兄弟(姐妹)可能就是你。