开发管理|英雄不问出处 程序员不问岁数

英雄不问出处 程序员不问岁数 吴旻
泰岩网络工作室

钱钟书在《围城》中教导我们说:“科学家像酒,愈老愈可贵,而科学像女人,老了便不值钱”。按理说,这程序语言和科学接近,程序员和科学家接近;但实际上呢,程序员到底更像哪一个:科学,还是科学家?

我是93年上大学时第一次接触计算机,94年开始学Turbo C 2.0的,96年学Borland C++,98年学VC++ 6.0。我的第一份程序员工作是97的一份兼职做FoxPro程序,而后的工作基本上都是C++相关的,虽然也写过ASP和VB。我做程序员的时间至少了说,也有10年以上了,基本上算是古董级的了。
97年的时候,说自己是程序员很好找工作,基本你把谭浩强的《C程序设计》从头到尾做一遍,出去都能找到工作。工资不会太高,但也比去国有单位强,那时候3000元就算是高薪了,而有两三年工作经验的程序员,挣2000元不是难事。
2000年的时候正赶上科技泡沫,随便挣个6000元不太难。那个时候北京中关村的房子也才刚过6000元。我当时的几个学数学的研究生同学毕业后去的南天信息,基本上都是这个价,虽然他们对编程知道得很少。
2002年前后几年是程序员不太好找工作的年代,虽然如果你是名校出身,也会有很多大公司开高价相请,但绝不是2000年遍地黄金的那个样子。
再后来的日子,软件开发这个行业的生态环境一步一步恶化,对程序员的要求也越来越高。从前会写几行代码就能找到工作,而现在却要求你有工作经历,要会写设计文档,会单元测试,懂项目管理,甚至要能搞定客户!
2010年的时代,我早就过了传说中的35岁,但我依然是一个程序员(至少我确实是还在写代码,还在和同事不停的讨论代码)。我曾用《十年目睹之怪现状》来描述程序员这个行业的生态环境,一方面它看起来很迷人,一方面它又如此之糟糕!

90年代中期,大家见面常问的一句话是:离(婚)了吗?如果对方说还没呢,那一定会有人接下去说:怎么还不离呀?!没人愿意相信你是日子过得好,反而觉得你挣不来钱倒是真的。要知道放眼望去,有钱的都离了。
今天的程序员面临的35岁年龄尴尬就像上面的故事一样,如果过了35你还在写程序,没几个人会觉得是你喜欢,而一定是觉得你没有能力往上爬,最惨最惨也应该是个项目经理嘛!好一点的,就应该是个什么O才对。
做个不太恰当的比喻,如果程序员相当于作家,那在35岁前混成中国作协的某个官员就比较理想了。当然,如果将来能混到国家文化部或中宣部去做官,则善莫大焉!地球人都知道官多大跟作品有多好没多大关系,但程序员35岁以后说我能写出一手好代码,则工作都难找!

软件开发这个行业的生态环境现在到底有多差?我没法用数据描述,但我接触过的程序员,没有几个说好的。用我自己的话说,代码永远比你想的要简单,管理永远比你想的要复杂!这个行业的最复杂之处在于它的管理,有些人甚至把它管理得一无是处!有些团队甚至到处是潜规则,而规则竟然是用来对付外人的!

程序员本来是个需要不断提高自身修养的行业,二十多岁入门,三十多岁是成熟之年,本应完全有能力凭“十年磨一剑”之功,从此叱咤江湖;然而不幸的是,竟然大家一个个要从此退隐江湖!不想退的还会有好心人来“劝退”:赶紧转行吧,青春饭不是你该吃的啦!
一方面,程序员语言的门槛越来越低,像Delphi、Java、.Net等语言,确实三两个月就能入门并且能写出可用的代码;但另一方面,软件开发管理的门槛却又是越来越高,高到无论是CIO还是CTO,一样会面颜无存,扫地出门!

公司不愿意招“大龄”程序员(跟大龄男女青年没关系),基本上也是出于管理上的考虑。
首先是价钱问题。现代的程序语言不需要那么多年去学习,某些语言的生手与熟手能力差别没大到决定性的地步,但工资差别却很大,一个熟手顶三个生手的工资是很正常的。一旦项目完成了,甩掉三个生手会很轻松,生手也乐得换个单位,没准还能加加工资;反之则不然,熟手因为各种原因,常常要和公司谈条件。
其次是加班问题。软件开发行业偶尔加班是正常的,哪个行业偶尔加个班都不奇怪,但奇怪的是程序员必须能不停地加班。像律师这种行业加班也是常态,但人家总会有休息的时候,不过程序员不可以。我个人理解,绝大多数加班都是可以避免的,经常地加班是管理混乱的另一个表述。管理的目标本来是预防风险,但软件行业的风险一直都很高,也就是说,管理一直都很差。老程序员不愿意加班是因为他们知道如何可以不加班,从而调整自己的工作和生活,但好多公司宁愿程序员加班,觉得这是个态度问题,是愿不愿与公司共甘苦的问题。
【开发管理|英雄不问出处 程序员不问岁数】第三是程序员难以领导,并且一将难求。你可以让八只狗合作拉雪橇,但你无法让八只猫合作去拉雪橇!而程序员的性格就像猫一样(生手除外),想让他们听话,是不太可能的。你可以把一个愚蠢到家的方案拿给生手去实施而毫无阻力,但碰到老手,就会遭遇顽强抵抗!从另外一个角度讲,程序员的个人素质可以千差万别,让能力不同的人平等合作本身也是个问题。能力强的人肯定不愿意被人家均贫富,所以好多公司都有这样一个怪现象:留下来的往往是能力一般,但却非常能忍的那种人!之所以发生这种事情,完全是软件开发行业生态环境所至。微软和谷歌都相信高手的周围一定有很多高手,那么我看到的则是一个“太极高手”接着另一个“太极高手”。
第四是官本位思想导致无技术传承。中国的官本位思想深入到各行各业,软件开发自然也不能例外。只要有一些成绩,那就一定会升个“官”当当。如果业务能力不行,那就想办法用政治手段弄个也过过瘾。说白了其实就是定位不准,不知道自己应该做点什么。我遇到过不少“官”们都是这样要求别人的:功能越强大越好,时间越快越好!一听要么是外行,要么是二五零型的。我的两个同事对这样的人做出两个不同的评价:一个说,这样的领导很公平,让你找不出一点毛病;另一个同事说,上梁不正下梁歪!遇到这样的领导,熟手是没有多少生存空间的。也因为熟手有随时离职的风险,所以也不愿意把代码思想核心都交出来;就算是都交出来了,接手的人也不一定能学会。所以代码再好,经过这么几次折腾,也就变成垃圾了。“官”们是一定要显示自己的政绩的,“不怕自己做不到,就怕别人看不到”,所以那计划都是非常全面而且具体的,要不是客户资金有限,他能把Windows和Linux都统一到自己的平台里去!

问题说来说去,其实还是个生态环境问题,是“大龄”程序员很难在目前的这个环境下有近一步的发展,而不是程序员是不是“大龄”的问题。我个人对程序员的理解是,一开始是技术和架构问题,以为解决了技术和架构自己就是“大牛”了;再后来是沟通问题,用同一种语言表述,彼此竟然说不到一处去,真是晕死;最后才是管理问题,而管理是比程序语言及算法还更高一级的修养。
就像英雄不一定是名门之后,所以年龄也肯定不是问题。问题是我们想要干什么,以及我们如何去建设软件开发的生态环境!

    推荐阅读