董延明应声说:“就算有老员工也不能保证REVIEW的质量啊,大家都很忙,并不是有那么多时间去检查与自己工作无关的文档啊!”
黄大仙说:“这个问题我也考虑了,我会累计评审专家的发现问题数目,会选出评审之星进行通报表扬。最主要的是,我会亲自跟他们沟通!评审也是工作的一部分,直接跟他们的季度考评挂钩!”董延明和小蔡都不说话了,觉得这种保障明显是黄大仙自我感觉良好,实际上也仍然是靠大家自觉,不免有些气馁。
据宋江说,黄大仙觉得大家对他的管理意见都表现出一种执行力上的亏欠,简单来说就是不听他的。因此他异想天开了一回,他要求老巩把V7项目组里的人的季度考评权限留给他。因为按照公司的制度,PL仅仅有权力对项目组里的同事打评语,各资源经理在季度考评的时候,会根据这些意见来斟酌员工的考评成绩。这种评语的影响力和直接主管的主观意志还是有很大的距离,所以有时候PL的地位也不是很被人看重,命令会被打折,所以老黄才有这样的想法。
这想法被老巩拒绝了,原因很简单:“员工在项目里就你打考评?那还要资源经理干什么?你把高守这样的资源经理放哪里?员工都是这个项目接着那个项目,考评都给你们打了,项目之外的工作怎么控制?你只管负责项目,资源经理负责协助你,有问题你可以去资源经理那里投诉,不要想搞乱局势。你这么大岁数了,怎么还……”
这也是高守私底下说老黄这个人手伸得太长的原因。
订了一个小时的会议室,五十九分钟会议进程完事了,老黄回头问高守还有没有什么要跟大家说的?高守说,有。
这时候会议室的门被人推开了,推门的人是预订了下一个时段的人,高守回头说:“五分钟,马上就完事。”那人没说啥,见怪不怪地关上了门。
“今天的会议人来得还很全,QA也来了,测试经理也来了,咱们自己兄弟也一个不漏都来了,这在咱们部门的会议里可不多见呀,由此可见老黄对项目的控制能力。我接替这个PM也是很费思量,原因是这样的,因为众所周知的原因,老黄在V7里又当PL又当PM,而且干得风生水起,所以我是不愿意做这个PM的,我希望老黄可以兼任,就好像他一直以来做的那样。但是老巩不同意,他觉得没有这个先例,而且他也希望我可以来分担一下老黄的压力,因此呢,我才迫于无奈接手了这个项目。”
高守看看时间,接着说:“长话短说吧。我跟大家强调几个事情,第一,项目的事情还是老黄负责,我不了解这个版本,也对人力安排不太熟悉,所以大家仍然要以老黄为核心,有事情要优先请示老黄。第二,我听老黄说,大家对于项目经理的很多计划安排的执行力都不够,这是不行的,我们部门乃至我们公司要求的就是执行力,你抵制老黄就是抵制我、抵制公司。所以我要重申一下老黄的职责,以免大家无意地抵触。老黄是业务组的PL,这个项目的大多数人都是业务组的,当然数据组、平台组也有自己的版本PL,但是我们部门的惯例是以业务为主,数据组和平台组跟从业务组,所以老黄这个V7业务组PL也会承担着整个V7项目的职责,会对数据组和平台组工作进行分配和指导。我说的大家都明白吧?”
墙角的数据组和平台组总共也就三两个人,都面无表情地点点头。高守又看看表说:“大家要各司其职,配合好老黄的工作。做好自己的本分最重要,你们的工作老黄监控,老黄还有数据组、平台组的PL的工作我监控,如果你们对老黄的计划有意见,我建议你们在执行中理解,如果理解不了可以找我来反映,如果我不能让你理解,你可以找老巩。我们的项目里绝对不允许出现消极怠工这种情况,你可以和任何你觉得对你有帮助的人反映,就是不允许憋着生闷气,影响工作效率。第三,其实我们有个风险大家刚才没有提到,就是试验机的问题,老员工还好,但是现在我们V7有九个新员工,都没有试验机,如果项目CODE结束进入UT阶段的话,将会出现人力大量闲置的情况。老黄,请把这个添进RMP,解决日期就是CODE结束的时间点。好了,我的话就这么多,老黄如果没有什么补充的就散会吧。”
据说,金吉走了腾出来V7产品经理(PM)的位置,黄大仙觉得自己本身就是金吉组里老员工,又是V7版本的PL,非他莫属,结果却变成了高守,他有种近水楼台变竹篮打水的感觉。而且在年终奖上,PM和PL有很大差异,老黄干了那么长时间的PM兼PL,结果成了为人作嫁,心里难免不甘。
高守也没惯他那毛病,上来就扔出来一个配九台试验机风险让老黄限期解决,老黄去哪里搞九台试验机?折腾了几天最后还是要求助高守——高守名下有二十多台试验机,随便一拨就拿出九台来,马上就让老黄颜面扫地,迅速分清楚谁领导、谁该被领导。
后来项目进行到转测试阶段,测试部的测试用例和研发组的测试用例对应不上,研发这边明明没有问题的特性在测试部也测得千疮百孔。究其原因是项目前期研发和测试没有讨论规格,结果两方面的人对同一份规格产生了不同的看法,而且各执一词死活不退步,本来就互相较劲的两个部门更是一步不让。那个时候黄大仙刚在CODE阶段受了一次沉重的打击,看到这么复杂的局面更一筹莫展伤心欲绝——转测试后再大量修改代码肯定不可以,但是测试部如果咬死了,那么就肯定过不了测试点,那这个版本结局就是一个失败。这时候,半隐身状态的高守又站出来谈笑风生一通电话解决问题,颇有谈笑间樯橹灰飞烟灭的意境。
2007年高守跟董延明吃饭,说,我有很多无形资产,能左右部门任何一个项目,你信吗?
董延明鸡啄米一样的点头,高守本就高大的形象立刻如金刚一般耸立。结果没过几个月,高守被老巩调离业务组,名下所有资源全都转移出来,从前的资源组被拆分,不知道还有没有无形资产了。
* * *
[1]即风险管理计划。
18
金吉离开那天下着雨,不过这不是电视剧里面的煽情,只是深圳这鬼天气,到了那个时节就天天下雨,想不煽情都不行。
据董延明说,他和金吉不熟,一直到金吉走的时候才知道他是朝鲜族——基本上朝鲜族跟董延明都能扯上小同乡关系。金吉和董延明的交集仅仅限于工作——V7PM和V7的开发人员。金吉这个PM在V7版本中是隐身的,因为金吉从V7开始之前便有了去意,老巩和老丁苦苦挽留,金吉的态度也几番变化,最终还是下定决心离去。这几番挣扎再到离职流程完结,中间就过去了两个月,这正好就包括了V7开工到即将进入CODE阶段,这也造成了V7版本的PM真空期。金吉给董延明留下的印象是没什么精神,喜欢叫错新员工的名字。新员工们不知道他要离职,只看他每天不工作不管理,自己猫在桌子上看《读者》,大家都很奇怪这人在部门的定位。而且因为他总讳莫如深的样子,导致了董延明总觉得项目就是PL当家,PM仅仅是抵挡高层压力的挡箭牌。
据高守说,金吉算是他的导师之一,当初也教过他很多东西,BAR产品硕果仅存的首个版本的开发人员。据说定位问题不用看代码,胸中雄兵百万,一个人顶三个开发团队,程序员里的战斗机,男人里的擎天柱。因此他走了,BAR的损失没法计算。
据部门同事甲乙丙丁说,金吉走了是要过“生活”去了,他嫌公司里面工作每天都那么大压力、都那么亢奋、都那么紧张。据说老巩给他开多少钱他都不要,只有一个条件:要下班时间可以回家,周末不用加班。老巩尽力挽留却怎么都留不住,还曾经对金吉说,你再多看一眼代码吧,就一眼。不过董延明认为,这口气好像怨妇一样,不太可能出自老巩的嘴巴。实际上董延明在两年后,觉得下班就回家、周末不加班不是什么难事,那么如果是这个原因导致金吉的出走,那就只能解释为这两年间华为的变化——有管理的进步也有执行力的下降,也许还有更多不为人知的原因。
据宋江说,金吉去了QQ,一个月工资两万。
据高守说,金吉在腾讯待了几天觉得企业文化不好,还是有点忙,又跳到移动下属的研究院,天天闲得要命,终于找到了“生活”。
据董延明说,大家都传说金吉去的地方又轻松又高薪,却都缺少佐证,也不想佐证,这似乎是个激励大家的梦,让大家工作有方向,不会总想起胡君。
得知胡新宇君撒手尘寰的时候,天还是下着雨,董延明和小刘下班就走,因为那天是周五。俩人第二天报了加班,所以都不愿意晚上再加班了。俩人打着伞走到研发区南门,只见一片雨伞撑满了整个南门口。每到站一辆公交车,便拥上去一伙人,可车开走后,南门外还是没腾出一丁点空间,这样的情况在下雨的周五一般会延续到七点钟。
据小刘说,胡君是他的校友,人称胡板子。董延明以为板子和瓜娃子、锤子一样都是骂人话,可是小刘解释说,因为胡君上学时专攻硬件,画得一首教科书似的好板子,名动本校,所以才美称胡板子。
他说,胡君这样的牛人进了我司也一样牛,四个季度拿了三个A,最后一个季度还是因为领导怕他太出风头,出于保护目的给了他B。据说胡君工作积极,刻苦程度跟吴海波不相伯仲,热爱公司的床垫子更胜于自己的席梦思。他把别人上厕所喝热水的时间都用在了工作上,真正的鞠躬尽瘁死而后已。
小刘说完后,董大侠想想自己从前的偶像吴海波,鄙夷之情油然而生——吴海波依然健在,胡君却已作古,说俩人不相伯仲就有失公平,董延明自动地把吴海波的工作态度拉低了一个档次。
据董延明说,他记得胡君这事在当初来说算偶然事件,举公司震惊,后来接二连三的自杀才让他以及一众旁观者都有些无奈的恐惧。甚至天涯上有人揶揄,难道华为有英年早逝的传统吗?
至于胡君,他在去世两年后依然被屡屡和华为一同提起。董延明想,胡君应该是永远被绑在了华为这个名字上了吧,他是真正做到出尔反尔的乔帮主经常说的“生是华为的人,死是华为的死人”的战士。
乔帮主走的时候也在下雨,雨已经把人下烦了。董延明跟乔帮主握握手,目送他坚决的背影消失在公交车上。
据董延明说,他在当时是有些伤感的,这是他第一次送走并肩战斗的战友,与后来习惯了迎来送往的心情大不相同。据他说,乔帮主是被老巩逼走的,或者是被老巩给骗走的,或者是被老巩气走的。老巩答应兢兢业业的乔帮主,这个季度打完考评后就给他转华为。有了这种底子,乔帮主果然如有神助,HP[1]、MP[2]全面爆发,V6的重担一个人挑了一大块,结果季度完事,高守也打了A,老巩却一翻本子说:“哎呀呀,学峰呀,你怎么是专科呀?!我一直以为你是本科呀,这可难办了呀,呀呀呀……”
据说公司有制度,华为技术员工必须是本科学历,但是这种制度有没有转圜余地不好说,反正老巩是说自己没有能力转圜,但同时也表态了:乔学峰你继续这样表现下去,我巩正仪是肯定不会亏待你。
据高守说,乔帮主没去深究老巩是否真的如他所说的那样,他走得异常坚决,同时公司的流程也尽全力配合,从申请到彻底离职两天就OK了,和金吉的两个月漫长等待不可同日而语。在一年后,董延明才体会到两天是一件多么疯狂的事情,尤其是对于在入职和离职都以冗长繁琐的流程著称的华为。
高守还在一天晚上吃夜宵的时候小声说,乔帮主走的那天犯了事……
故事情节犹如悬疑片一样紧张,传说乔帮主临走前把整个V6的系统测试用例发送到了自己的163邮箱里了。匆忙回家打开邮箱准备下载之际,然后我干警从天而降破门而入,将乔帮主擒获于电脑前,从此乔帮主也成了公司的罪人、蠹虫、害群之马。
董延明说,这个故事漏洞太多,比如,在华为大家是上不了外网的,而且研发人员的公司邮箱也是默认没有外发权限的,乔帮主就算申请了邮件外发权限也会在离职前被取消掉,他是怎么发送出去测试用例的呢?而且测试用例……天哪,你不发代码居然发测试用例,乔帮主,难道两年华为就把你待傻了吗?测试用例拿出去连一毛钱都不值,代码才是真金白银的宝贝,没有人会连这两者都能弄混吧。
不管怎么样,乔帮主以后还真的只出现在大家的传说里。后来董延明屡次看到公司的内部通报,“张×王×盗窃公司代码获利××万元,公司提出起诉,两人被判……”他都很希望可以看到“乔×”的出现,可惜从没出现过。
高守禁止大家讨论乔帮主的前尘往事,说那都是道听途说,会影响公司形象,他又说,他不禁止大家无聊的时候做顺风耳,但是非常不推荐大家做顺风嘴。
* * *
[1]HEALTH POINT的缩写,意即体力值,系游戏参数用语。
[2]MAGIC POINT的缩写,意即魔法值,系游戏参数用语。
19
潘安升职了,接替了金吉,同时成为最年轻的资源经理,手下十来条枪,其中便有黄大仙。黄大仙最近打击不断,先是PM失手,又是资源经理失足,当头一闷棍,背后一板砖,犹如暴露在流星雨下的太空船,一浪又一浪的击打,打得他连北都找不到了。于是他的V7PL似乎也做得有些心不在焉——虽说老板都说要有“板凳要坐十年冷”的良好心态,但是这话这心态肯定不是坐冷板凳的时候感悟出来的。
资源组周例会的时候,高守宣布潘安以后就是三组的资源经理,然后顺便加了一句:“我们部门与公司一起发展壮大,去年还一百人,今年就两百人了。在扩张和壮大中这种机会便会不断地出现,哦,是不断出现这种机会。有了机会我会给大家尽量争取,但是有个条件是大家一定要好好表现,好让我推荐的时候有筹码。潘安在V5的支撑工作中就有非常好的表现,老王就评价过潘安是大将之才,所以当有机会时我一推荐就成功。”
后来大家都讪笑董大侠,说他怎么不跟导师一起去三组当副组长,董大侠说怕被黄大仙掐死,大家笑得更欢快了。
高守进入V7后也没见比金吉做得更多,也许是因为黄大仙管理项目时日太久,他不好多插手。老黄在CODE阶段结束后没有再开例会,以往各阶段他都会开一个针对所有人的阶段文档培训,给出阶段性的文档模板的同时,还会详细讲解本阶段的质量要求。可能是考虑到大家都会写代码了,老黄就只发了一份邮件附带公司的编程安全规范,嘱咐大家要遵守安全规范来编程。
自打V7进入了CODE阶段,大家的工作态度一下子产生了泾渭分明的变化。宋江一派的老员工神情轻松,击节赞叹说:“×他妈总算过去了,能喘口气了!”董延明这拨新员工却如临大敌,把肾上腺素的日均分泌量又提升了一个层次——不管文档写得如何,最终交付的还是代码,就好像董延明家乡的俗语,编筐捏篓全在收口。而且董延明始终没有转换思想,总觉得写代码才是他应当应分的工作,写文档总有些隔靴搔痒的意思,再加上整个流程中,董延明和方志久写的所有的文档质量都晕乎乎的,所以更重视代码阶段。实际上,董延明的这些文档写完后,他依然既不知道该怎么写,也不知道要写什么,更不知道写了后会怎么样,结果导致文档和文档之间的关系非常的辩证——既不是没有联系也不是很紧密的联系,可以联系起来看,也可以割裂开来看。
总之,董延明和方志久的文档没有起到CMM流程中各个阶段该起的作用,属于真正的为了写而写,俩人到了CODE阶段脑子里还是一盆糨糊。哦,两盆糨糊。宋江之流就不同了,在流程的各个阶段,他们按部就班地将协议中的描述对应到文档中去,到了CODE阶段已经是瓜熟蒂落喷薄欲出,万事俱备只欠东风,拉过一张键盘就能浩浩荡荡倚马万言。
董延明和方志久俩人写起CODE非常郁闷,因为之前LLD文档中有太多遗漏的点,让他们手足无措。他们发现LLD对于写CODE帮助不大的时候为时已晚,掰着手指头一算七天的CODE阶段过了两天,俩人一下子汗如浆出。董延明故技重施,跑到黄大仙桌子前一屁股坐上去,诉苦说LLD文档评审的不充分,导致LLD文档没有起到伪码的作用,现在CODE阶段肯定完不成CODE,黄大仙如果不能派人支援那肯定要延期。
结果黄大仙白他一眼说:“小董,你行行好吧,你LLD我给你的评审专家是最好最负责的,你自己点没写到所以才会有遗漏,你有上我这哭的工夫,说不定能出十行代码了!”
董延明一惊,从桌子上下来,尴尬的奉承马屁犹如潮涌——黄大仙明察秋毫电光火石目光如炬不怒而威风凛凛如万兽之王……
老黄有些落寞地叹了口气,抬头正色说:“小董,我发现其实有很多道理我不说你不明白,你就喜欢抖机灵。不过中国人讲究人际关系,讲究外圆内方都几千年了,把话说漂亮了这都正常。但是凡事都有个度,你身上有点社会气,我闭眼睛听你说话以为你是做市场的。不是骂你,咱们部门你现在拉出来一百个,有九十九个都想去做市场,剩下那一个不想去的是老巩。你说这帮人,也不知道犯什么邪了,都觉得搞技术没前途,我就不明白,你技术都搞不好就能搞好市场?哦,我跑题了。我是说,你呀,你身上呀,程序员应该有的稳重和实诚你都不太多。别胡扯,不是木讷,你知道我想说啥。那个谁说的那个……重剑无锋大巧不工你也听过吧?嗯,万言万当不如一默你没听过吧。”
老黄不胜感慨的样子推推头发,接着说:“其实你说这个社会也好这个群体也好,咱俩也好,你想搞好关系怎么搞,不是光说漂亮话吧?你说各取所需?嗯,那你说,各取所需的话你要知道对方需要什么吧?就说老巩吧,他要什么?要能干活的,要关键时刻能举炸药包的!为啥?你说,同事之间最需要什么?肯定要实在人,能共事能承担责任的!下属需要什么?要有担当的领导。你说咱们部门吧,缺聪明人吗?高守那都是上学时候拿过奥数冠军的,刘自明参加建模大赛得了第一的。哎呀,至于我都算麻绳提豆腐了。聪明人一抓一把的时候,你说什么人最吃香?靠,不是笨人!靠,也不是蠢材!是实在人!如果你是老巩,你想要个干活实在的人还是总哭穷的人,你自己想要同事,你是要老老实实跟你一起干活的还是天天想着怎么推卸责任的……”
董延明惭愧地点点头,听到长者说他的不是的时候他还是很虚心的,但如果是同学朋友说起,他就死活也不认账。他已经习惯了同事朋友都随波逐流的混日子,大家蛇鼠一窝沆瀣一气,多少年没有人这么指出他的问题症结。他想了又想,觉得这些话似乎二十多年前老娘就讲过,只是自己没有认真听,再推广一下,董延明又发现,他成人之后看到或者听到各种让他深受启发的道理,其实早在童年时代便已经通过许多渠道有过了解,只不过人总是要自己亲身经历才肯接受,他又默默点点头,离去。
后来老黄的话让他受益好久,董延明自称一日三省,时刻克制着自己的虚伪狡猾各种市民的小欲望,尽量令其缓缓蔓延,因为总是今日难过来日且长。
CODE阶段完工后董延明自己说,虽然他跑到黄大仙那里去哭诉LLD文档评审不利导致CODE寸步难行,但实际情况却是——在黄大仙真正将特性对应的评审专家落实之后,评审专家们还是非常尽心地评审了的,他们都秉持着程序员特有的执著和细心,对董延明的文档做了最大限度的评审。
比方说宋江虽然每天总是很滑头的样子,却可以加班阅读文档,而且他居然会自己主动把相关的协议看完,并理解后再去评审文档,这一来二去所花费的时间往往不是两倍这么简单。他提出来的意见不仅仅是语法上的,更多的是设计和实现上的。他会要求董延明设计的时候考虑到其他特性,避免因为新特性的加入导致老特性出错。同时也要考虑性能,因为通讯软件追求处理速度,一个NEW的位置也会影响整个软件的速度。还有,董延明本来认为,自己无暇去了解本业务以外的代码逻辑是件很有道理的事情,但是宋江的评审意见却说,他的业务处理放置的位置肯定会让自动机提前结束了,因此,一定要把整个自动机的机制搞清楚才能添加代码!
董延明头大如斗,因为BAR这种大型软件几百万行代码,使用自动机队列来处理业务,总共也有几十个类别自动机,一旦系统启动,同时存在的自动机数目就是天文数字。任何一个自动机都是几万代码数十个函数,处理了若干的细节、若干的参数。
宋江却说大家都是这样过来的,你必须把关系弄明白了才能写好,否则一定会引入新BUG[1]。他看董延明不情愿就说,其实你写规格写SRS,写那么多文档加那么多班,还不是为了最后把CODE写好,你要是不把握好这临门一脚,那你从前那么多工夫、那么多辛苦不都白费了?
董延明觉得有理,不过最终还是没能把全面阅读代码这个愿望落实,也因此导致CODE阶段才发现从前遗漏了很多点。董延明和方志久在别人优哉游哉的时候手忙脚乱,眼看七天过去了,仍然还没找完到底遗漏了多少点,总觉得好好一个特性让自己写得仿佛大眼筛子筛沙子一样泥沙俱下,俩人这才怀念起写文档的时候。
每天写CODE的时候,都要试图从与之相关的边边角角老CODE中,寻找与当下相关的地方,这种大海捞针的工作让俩人精疲力竭绞尽脑汁,但是又不敢停止不敢放松,因为细一想宋江之前的危言耸听,那就是掏心掏肺的金玉良言——俩人实在没有足够的信心,可以保证自己的CODE和从前的CODE之间没有冲突,如果有了冲突……
正当俩人惶惶不可终日时宋江又神经病似的跳出来说:“大佬,后面还有ST和UT呢,没关系,慢慢改吧,谁的代码没有点BUG呀。”于是董延明又放了自己一马,好像坐在滑梯上的孩子,禁不起别人一推,哧溜滑了下去。
* * *
[1]直译为虫子,软件开发中指程序缺陷、错误。
20
SRS
STC——ST
LLD
UTC——UT
CODE
按照CMM的标准开发流程V字图,开发阶段从SRS开始到CODE结束完成了V字左边的一条线,之后测试阶段构成了右边的另一条线。
那天中午,黄大仙给所有CODE打上基线后,群发了一封邮件表示CODE基线化,这说明V字图完成了一半,接下来进入测试阶段的那一半,他还通知了明天上午九点到中午十二点半,在F1大楼A05会议室培训UT工具TCL。
董延明看看表现在才三点钟,知道从现在开始到明天培训完后,都不会有实质性的工作了,立刻浑身通泰。他听着办公室里的声音,虽然大家看邮件的时间有差池,但是从办公室里慢慢变化的声音中,他能感觉到全项目的人都松了口气,于是办公室里的气氛一下子活泛起来了。董延明更是个中翘楚,连上厕所都要迈着方步,迎头看到走路带风的同事就恨不得拉住人家问,你们现在什么阶段啊,我们都UT了,哎哟,闲着的感觉太爽了。
但董大侠是干大事的人,短暂的喜悦是无法冲昏他的头脑让他失去理智的,而且就在他迈着四平八稳的步子走向厕所的时候,他那颗擅长居安思危防微杜渐的心里,依然隐隐约约保持着一些足以令他头脑清明的不舒服。那种感觉就好像……医生一身释然地走出手术室后,却发觉手上少了一只手套。后来董大侠身经百战埋雷无数,真正做到杀人不见血之后,这种感觉也没能消失,而且有愈演愈烈之势,那种感觉也随之演变,到后来几乎形成了一个完整的故事——一个英俊的外科医生成功地完成手术,走下手术台后却发现手套不见了,重返手术台如此这般一番后,取出手套又发现手术刀少了一把,再返回……最终医生一身轻松走出手术室,自豪地宣布:手术很成功,只是病人禁不住折腾死掉了。
扯回当天,董大侠心里想的是CODE阶段虽然基线了,但是他负责的特性其实仍然没有完成,而且最可怕的就是,他心里一点底也没有——到底还有多少遗漏的点没有处理。他回想了一下自己这段时间的工作,按照CMM流程来说是V字曲线中左边下降的那条线,可是他的感觉却是爬山坡一样的一条向上曲线,SRS写得又糊涂又累,STC更糊涂更累,LLD的时候完全超越了STC,等到CODE阶段突然不糊涂了,可惜的是仅仅明白自己从前的阶段写错了很多,结果自然是累上加累,这种步步登高让董延明恨死了CMM。他认为如果从SRS阶段开始他就直接写代码那现在应该不会有遗漏,他觉得他浪费那么多时间去写不知道对错的文档是真正错误。他从心里渴望传说中的无文档全面裸奔的开发流程,他甚至可以想象出那种没有负担的释放,那种与自然最接近的洒脱……
两年后董延明带一个突击小分队突击一个紧急开发版本,那个版本要求一个月交付商用版本,虽说荒唐却是王守义在运营商面前拍胸脯应承下的,因此这是一次典型的给领导擦屁股项目。
老巩让当时有大活人美誉的董延明来带这个小分队,老巩和员工沟通分几个阶段——考评沟通去小黑屋(学名沟通会议室)低吟浅唱,分配任务在自己座位上高谈阔论,分配紧急任务直接到员工座位上站着手舞足蹈。
给董延明分配任务的时候,老巩跑到他座位上指天画地捶胸顿足,董延明一看架势就知道又是一次擦屁股。他经过几年的锤炼以及烘烤,早已淡忘了初入公司时那种凤凰的理想,就好像小孩子长大后总会疏离那些英雄的梦想,前进的动力由雄心勃勃变成了不由自主别无选择,他只能像鸭子一样被赶上架,而且再也无暇顾影自怜这只鸭子走起路来是不是很像凤凰。老巩有过一个很有趣的比喻,他说,我们就好像是鲨鱼,为什么像是鲨鱼,是因为鲨鱼特殊的生理构造使之停下来就会沉下去、就会窒息,所以只能往前游。所以我们没有选择,自然选择了我们只能向前游,不停地游,慢慢的我们只知道向前游而最终忘记了为什么要向前游。
董延明接下这个任务却拒绝了老巩裸奔的要求,他要求必须要有一个写SRS文档的阶段。当时老巩很意外董延明的态度。他以为大家对于文档写作都不胜其烦,一旦有机会摆脱还不感恩戴德感激涕零感动致死。
董延明解释说,SRS文档是个思考的过程,程序员写程序跟文人写文章一样,一挥而就的往往总会有这样那样不尽如人意的地方,所谓萝卜快了不洗泥。而且写完的代码总跟自己家孩子一样怎么看怎么顺眼,思维会在自己代码上面不可思议地转弯,明明是BUG就是看不出来。所以董延明的说法就是:“你得让我们想,想完了再讨论下,然后再写,怎么也得有这么几步,要不脑子一热,代码写出来就不好改,因为修改也往往是顺着自己从前的思维去想,很难换个角度,太容易进入思维定式。代码要BUG少,怎么也要从根上就想好了再写,我是受够了咱们现在那个代码了,地雷都串成糖葫芦了,补丁摞补丁,摁下去葫芦浮起来瓢,就跟打鼹鼠似的,BUG突突突的往上蹿,恨得我真想把从前的开发抓过来当鼹鼠敲。哪来那么多地雷啊?还不是我们自己开发的时候片面追求速度,把问题留给将来。反正以后我经手开发的版本绝对不能这样。”
老巩听完了董延明一通借题发挥,不叫也不跳了,拍拍董延明的肩膀说,我听你说完就觉得踏实了,你去搞吧。
后来董延明还厚颜无耻地写了一个总结来鼓吹自己对开发流程的理解,满篇的举世皆浊我独清,文章的最后还很哗众取宠地用了饮水咒来描述部门产品代码的现状“佛观一碗水,四万八千虫”,然后又用骚诗“问渠哪得清如许,为有源头活水来”来表达自己的看法。文章出来后起初被传颂了几天很快就没声了,董延明开始觉得奇怪但略一思忖也意识到这似乎是否认前人工作呀,于是也不敢声张赶紧夹着鼠标线做程序员。
21
董大侠在UT阶段栽了一个大跟头,主要是因为TCL语言不熟悉,把测试用例转换成语言脚本进行得很慢。大家叮叮咣咣把测试用例都写好了,测都快测完了,他还没有写到一半。黄大仙说:“你别着急,你现在也就是把整个项目时间点拖住几天,没什么大不了,你慢慢写。”
他这么一说就搞得董延明连续几天都是下半夜回家,可是又怎么都完不成似的。他那几天精神状态不好,白天脑子运转太多,晚上也停不下来,闭上眼睛满天都是一条条TCL语句,脑子里一直有个声音催促自己“快快再快点”,总是忍不住回头看后面,总觉得有冷风在吹,心总在嗓子眼上悬着,打喷嚏都能喷出来似的。
董大侠后来算算,居然没日没夜的忙了两个月了,每天工作十多个小时不打紧,关键是这十多个小时都精神集中到老僧入定的程度,就差把影子在墙上刻出痕迹来了。他天天想的都是如何更快,累得狗伸舌头之后居然发现才刚上路,原先以为自己到了极点,结果只是爬上了一座微不足道的小山峰,后面峰峦叠嶂望不到边。
他想起那个笑话,一个人吃大包子怎么吃也吃不到馅,干脆用铁锹挖,挖了半天挖出个“此处离馅还有三十里”的石碑。董大侠现在就是看不到馅也吃不到的阶段,连前面有没有馅都不知道,完全迷惘了,不知道自己在干啥。他算算自己这两个月加班数量,心想以后有了吹牛的资本了,谁敢说自己自虐过我就抽他。
他看看身边的人,大家都完成得七七八八,只有自己被逼得连吃奶磨牙的力气都用出来了,居然还落后别人一头。这种进度上的差距最终总要理解为能力上的差距,这在崇尚能力和效率的华为是令人沮丧的。董延明真的累了,觉得浑身无力,想想这两个月的付出就心酸,想想以后还有望不到尽头的付出,就死活也不想再写一个字母了。他就好像长跑运动员到了长跑的困难期,之前老巩的鼓励、自己的雄心都被生理和心理的不适打垮了,他就好像登陆的鱼,张大嘴巴却呼吸不到环绕在四周的氧气。
从前他的大学同学桑军说自己在日本累得要吐血了,董大侠还背后说人家娇气,觉得再累也只是磨上的驴,转几圈习惯了就好。眼下自己遇到这种情况,他才发现,虽然大家都是上磨的驴,但自己这盘磨却越来越重,身后挥鞭子的人也越来越急,与此同时被蒙住双眼的小驴在不知道拉到何处是个头的时候,这种打击是会让人,哦,让驴绝望的。董延明想起桑军他妈跟桑军说,太累了就别干了,回家待着妈养你。顿时特想找个人也这样安慰自己,可惜董妈鉴于小董读书这么多年养成的干吆喝不出力的习惯,推测小董现在一定闲得腰疼,死活也不会说出这样的话来。搞得董大侠英雄一世,却满脑子都是想大哭一场、宣泄一次的冲动。
董大侠哭不出来,翻来覆去睡不着,越睡不着越担心明天没精神,任务更加完不成,一边敦促自己赶紧睡,一边又想到睡醒了就要去单位去面对永远完不成的任务,于是又特怕自己睡,怕见到明天,这样一挣扎就完全不知道要不要睡觉了——董大侠矛盾到无以复加的地步。
深圳是过夜生活的城市,董延明的楼下全是大排档。五元一份炒米粉,十元一份炒田螺,楼下满是早早出来打工的少年,过剩精力伴随着叮咣的炒勺一直翻炒到凌晨三点多。
董延明爬起到楼下买了烧烤麻辣烫和两瓶啤酒,算计着即使自己是海量,喝了两瓶多少也该有点困意了。结果上楼一顿吃喝,把吃的吃光了,啤酒却喝了一瓶就撑得下不去了。他看看时间已经一点多了,看看另外那瓶酒和圆滚滚的肚子突然放声大哭——想喝多了睡觉都能计算失误。
后来董延明跟他侄子说过,你他妈别跟我说你吃过苦遭过罪,我们这拨都不算吃苦,顶多受委屈自己憋屈,要说憋屈……你啥时候憋屈到哭不出来,睡不着觉,一定要喝瓶酒才能哭出来睡着觉,那你才跟我有一拼,但也是有一拼而已。
他说的就是这次V7版本的UT阶段,他总是祥林嫂一样重复那段时间,“哎呀,活人真差点让尿憋死啊”,“哭都不会哭了”。究竟怎么度过了那个阶段的,董延明已经记不清楚了,似乎是靠着厚脸皮熬过去的,又似乎一个字母一条语句那么实打实的挺过去的,不过都不重要,重要的是董延明以后都再没有遇到过这种压力了。
到了ST阶段,董大侠又摔到自己挖的坑里面了,先前文档写作和CODE阶段所有遗漏的点在这个阶段哧溜哧溜的都冒出来,每一个CASE都会牵出来几个遗漏点,那真是坑连着坑,坑摞着坑,坑外有坑,坑中有坑,董延明哀叹:真是吐口吐沫都砸个坑啊。
好容易熬过了ST,熬过了BBIT[1],转了测试,董大侠和大家一样如释重负,有种两世为人修成正果的感觉,就在这个时候,他又被老巩打击了一下。
项目阶段完工会上,老巩很诚恳地跟大家说:“辛苦了两个多月,我为大家感到自豪,接下来这几天大家可以休息一下,请几天假吧!老员工可以休年假,新员工没年假可以休事假,我都批,不过要轮着请假,别一下都走光了。”
董延明想,我这两月累死累活怎么也给我放两天假吧,怎么让我们请假呀,这也太无良了吧,你早说这话……我干慢点啊,累死累活就等着完事能休息两天,靠。
完工会之后董大侠去上厕所,结果出厕所时被干部部的一个小子堵住了,问他为啥不戴工卡。董大侠是忘在桌子上了,不过看那人的架势似乎要把这个事情当个事故来处理,搞不好要弄个通报批评什么的。
董大侠想想最近的倒霉事就火气一冲,喊了句,我落厕所里了。说完自己跑回厕所找个坑蹲下,那人也没敢追进厕所,悻悻地离去。
2006年董延明终于在部门声名鹊起,成为了大家茶余饭后喜闻乐见又经久不衰的话题。事实上董延明在这一年里,对于公众人物这词有了深刻的理解,一举一动都被暴露在公众面前,一言一行都成为大家谈论的作料,这让他感到恐慌。董大侠最受群众喜欢的谈资当数以下几个:“产品线史上最牛开发人员”、“吐口吐沫砸个坑”、“喝口凉水都塞牙”、“大活人真让尿憋死”。每每穷极无聊昏昏欲睡的时候,众人拿出来讲讲都能哈哈大笑重振精神,气得董大侠一佛升天二佛涅槃。
产品线里有个转发率颇高的邮件,叫“产品线史上最牛开发人员”。邮件转到BAR部门时,大家才发现这么拽的名字说的居然是董延明的事迹。邮件里是个问题单的地址链接,发邮件的人注明了要看“打回问题单原因”那一栏开发人员的注释。大家打开一看发觉是董大侠的一张单子,董大侠在那张单子的注释栏用加红加粗的字体嚣张地写着:“请测试人员用眉毛下面的窟窿看清楚,你们种族叫这个是问题?!”大家当时都笑得不行了,后来董大侠还在例会上被点名批评了。
董大侠一开始以为是有人针对他,追查之后又觉得不是——邮件的源头发现居然是外产品线,估计是谁无意中在问题单数据库中发现了这个单子,然后出于娱乐目的转发,结果让董大侠吃了一闷棍。
董大侠此后的问题单语气都缓和了很多,但是总还隐隐约约皮包骨头,让人不舒服,“你要改我便改”、“你敢提我敢改”、“为了和你们搞好关系,这张单子我认了”。
测试部对于这种人自然上下一心同仇敌忾,齐心协力保佑董大侠的问题单比其他人的更多更爽更闹心。董大侠天生是不能吃亏的人,隔三差五都要找回气,只要发现问题单提错了,他就要打上门去,逼测试工程师承认自己错了。
几个回合下来,董大侠有些吃不消,觉得全世界都在跟他作对一样。这时还有人在一旁煽风点火呢,小成就总说“董大侠,挺住,给孙子们瞅瞅纯爷们是啥样”。他不说小董还不觉得自己有问题,他说完小董才赫然发现,“整了半天大家都跟测试部对着干,可就我一个人冲最前面啊?这不让我一个人挑一个部门嘛!我说怎么这帮家伙都光见龇牙不见叫好呢,都等着看热闹呢吧。”
董延明搬了座位,坐到高守附近,这样方便日夜聆听领导教诲,也方便让领导观察自己的工作——他晚上加班再也不用担心高守看不见,再也不需要大晚上的搜肠刮肚寻找名目群发邮件,以示自己加班多刻苦。
高守和董延明说:“跟测试部一定要搞好关系,吵没有用,人家说不让你问题单回归,你就回归不了,把问题说明白就好,一手软一手硬,别总觉得人家是找你毛病。就算找你毛病怎么了?人家本职工作就是找你毛病,难道还找不得了?你下次打问题单回去的时候,注意点语气,别再让人当最牛的开发人员了。”
董延明讪讪地说:“行,我当最菘的开发人员他们该满意了吧。”
高守笑说:“那肯定也不行,任何事情都有个度。测试他们是以问题单数目为考评依据,你要是不限制他们,肯定天天给你提非问题单,你光打回都累死你了,还干什么工作啊。你要一拉一拽,保持好这个距离……”
董延明想,还吹拉弹唱呢,我做个程序员怎么这么累啊!
* * *
[1]即构建模块集成测试。
22
开发和测试的矛盾越来越多,测试提的非问题问题单也越来越多,所有的开发人员都和测试人员吵过架了,这时测试经理又扬言要退回版本,黄大仙一筹莫展,只好天天长在测试部,协助开发和测试的沟通。这是所有项目经理都做过的工作,潘安之前也是这样,可是测试一点不买老黄的面子,该吵一样吵,吵大了直接把邮件抄送给老巩,投诉开发不配合测试工作。这样的邮件累计三封后,老巩一看见黄大仙就把脸刷黑,而且随着测试部的投诉增多,他的脸也黑得越来越具水准,到后来就算没看见老黄,只要有人聊天时提了句“老黄”,他也马上从晴空万里变成乌云密布,就跟条件反射似的。
据宋江说,已经快到老巩发飙的时候了,大家都注意最近别犯错,而且千万别离老黄太近,溅一身血还是次要,关键是老巩发起飙来毫无人性,攻击范围之内即使NPC[1]也不放过。
不过这些都不关董延明的事情,他只希望自己那块不要有太多问题,至于版本会不会被打回、老巩会不会发飙,他一点意见都没有。
后来在老巩的怒值即将达到临界点的时候,高守出手了,跟测试部一沟通就解决了问题。原来是对于规格文档的理解有差异,测试部设计用例的时候没有和开发人员做足够的沟通,自己认为读懂了规格就设计CASE,所以测试结果是一张一张的问题单。根源找到了,解决就很简单,高守先安抚住测试经理,又组织开发人员集中有序的给测试人员培训了各个特性的规格,通过讨论把意见彻底统一了,再往后的测试工作就没起什么风浪。
董延明觉得高守很牛,因为之前老黄也是这么解决的,可是谁也不给他这个面子,想法有了,却根本推不下去,这就叫知易行难吧。这让董延明想起小时候,他跟表哥一起踢球,表哥就能踢进门,他就能踢到别人头上。有时候事情就是这样,只看结果往往是人比人气死人,捅破了就是窗户纸,捅不破就是鸿沟天堑。