编程语言五花八门.所以,同为程序员,又用同种编程语言工作,才真正算是同行.在我所干的这一行中,能够在编程语言的某个方面或在某个细节上有独到见解,从而能发表论文作交流,或有同等能力的,大约只占5%到10%.也就是1/10到1/20.
先定义程序员的能力系数,如果把从职场上随机选取的N名同行的程序员按水平从高到低排序.而你是第m名,那么,当N很大时(以几百上千为宜),你的能力系数为:k=N/m.
再定义编程任务的难度系数,如果一项编程任务的难易程度正好适合一个能力系数为k的程序员在全面发挥其水平的条件下做出,那么,这项编程任务的难度系数是:k
能力系数大到10,可称为准高手。能力系数大到20,必为高手。我要讲的就是这类人的故事。
我去东岸一家中型公司工作时,遇到高手X,中国人,理工科出身,10年工作经验,宏编程能力超强。我工作到3个月,也被刮目相看,派去做QC。不久,就开始给他的产品(程序)作QC。‘行家一出手,就知有没有’,我见过他的代码,简洁流畅。我评出他的能力系数:30。他是我熟悉的人中能力最高的。
后来,我又给别人QC,就发现公司其他人中,还有个西人,能力系数曾接近于10。但以做管理为主,编程时间不到50%,能力就降下来了。而公司里较难的编程任务的难度系数多在10与20之间,从而,程序员们错误百出,QC特别费时。因为原产品没做好,该公司的QC任务更难,难度系数有时达到30以上,这在以后的职业生涯中也没遇到过。程序员走了2个,于是,QC任务都压过来还有时限,只好加班。我每周常常工作70小时,公司付加班费。结果,各个项目接连完成。不久,冒出一项难题,几经他人试做与推逶,就交给了我。一上手,很难,我干脆又接受了一项附加要求,难度系数增加到60。当我完成后,已被誉为作图专家。又作了几个形态各异的图后,6个月合同期满。公司说要再续半年,可我说累了,执意要回家,走了。
一睡就是一个月。我一睡醒,猎头们来了。旧猎头问我过得怎么样.我说,睡觉,拉小提琴,或逛曼哈顿。他说:好了,接着干吧,有家公司免面试。我就说这可前所未闻。他说免面试仅对你,就是你刚干过的那家公司。我说别的都行,那家公司干得太累就免了吧。他说可以涨工资。我考虑到上班近,就又从了。
当我回到原公司,看到了7个新招的程序员,其中两个西人老头。高手X还在,廋了。我奇怪:有这样疯招的吗?他说:近期公司编程项目进展不顺,没能按时完成,统计师也坐立不安,只好乱招人。又问:老头子行吗?他说:其实不行,公司又外包部分任务到一家外州的CRO,他们有3个程序员由我们遥控。
我先是给那3个远程程序员做QC,他们的能力系数都小于5。完成后,新任务是给一个30多的西人程序员J作QC,这人谢顶,有些列宁的风度.我问X:J 行吗?答道,新招的里面,他是最好的。QC开始,这人竟把代码藏着,看不到。别以为我没能耐,我可以不知道机器的运行状况,而照样把关产品质量。渐渐我觉得这人不差。但即使聪明,也常出错,那是因为任务的难度系数达到了20。不久得知,此人擅长宏编程,10年工作经验,自己开有小公司并雇有2人(怪不得来公司如同三天打鱼,两天晒网.),也爱写论文参加会议交流。我给此人当时的能力系数评为15。他是我熟悉的西人中能力最高的.(后来,我曾见到他2010年的会议交流论文和他的公司网站,3年了,想必能力系数应增长到20,或再高点。)
再不久,X生病住院了,还要开刀。打电话问他,他说干得太累了,尤其是我不在的那个月。我开始自责我那一个月的长觉。
继续与J配对工作,此人编程快,但我QC也快。J渐渐很听我这QC程序员的劝告,因为我指出他的问题,一般十有八九为真。我下班总是很晚,恐怕是大厦清洁工最熟的面孔了。笔记本电脑上又安了软件,偶而可在家编码。如果你看到一个程序的存盘时间是清晨5点,你知道那是我通宵编程做的?还是早起编程做的?
不知不觉又快半年了,我必须离开,而公司合同也只能聘11个月。又有新任务计划了,但我已不在那计划之中。一次,讨论该计划,J竟说要独挑编程产品的大梁,让另外4,5个程序员去给他作QC。其中一位会后叹道,J乃狂人发狂言,200多个报表,他能那么快完成?我知道, 没有好的QC程序员,J会孤掌难鸣的.
恰巧,一位上次无功而返的猎头找到我,电话中一阵嘘寒问暖后,便与我伊妹儿频频,并急忙为我联系面试.还关心地问这是否是我近期唯一的面试。我说那当然,因为我只对这一个工作机会感兴趣阿。终于,程序员们开始感叹:他就要离开公司了。
多年后,当我看到这家公司的股票5年走势图,心中总有些微感慨在那峰谷之间。