相传白居易写诗有股子“执拗”——总是不厌其烦地修改锤炼,执意要让不识字的老妪也能听得懂。因此他的诗在民间广为流传,很多都成为传世经典。
如果把代码比作软件工程师的“诗文”,郜龙胜对代码可读性的“执拗”也非同一般——每个软件项目有成百上千个变量,他要求每一个变量的名称必须一眼就能看明白;每个项目有成千上万行代码,他要求每一行代码必须一遍就能读清楚。
“郜哥这点就跟有代码‘洁癖’一样,而且平时看不出来。”与郜龙胜合作过的测试主管笑着调侃道。
生活中,身为长子的郜龙胜,像一个质朴温厚的邻家大哥,话不多,身材并不高大,语气也相当温和,面庞白净,嘴唇上方挂着一抹稀疏的胡须,笑起来有些腼腆。乍看之下,他更亲近随和,跟“执拗”并不沾边。但是那次前后持续了近一个月的代码审查,让很多人对郜龙胜的印象大为改观。
2016年4月,郜龙胜受邀给一个新的重点型号项目做同行评审(代码审查),客户要求年底务必完成首飞。“新研到首飞,剩下的时间很紧,而且该项目的软件开发主管刚离职,代码又经手了好几个人,缺陷纰漏的风险比较大。”测试人员回忆说。
多发现一个缺陷,就有可能减少一轮代码迭代、为项目抢回更多的时间。在那间10平方米左右的会议室里,一个月的评审,郜龙胜几乎把自己当成一个外行人来读代码,小到一个代码字符,大到整个程序架构,一丝一毫的疑惑和不解都不放过。
“郜龙胜声音不大,总是不紧不慢地给我提问,问题一个接着一个。”当时的开发主管略带苦笑地回忆说,“真的就和墙上挂钟的秒针一样,嘀嗒……嘀嗒……不仅有规律,还催着你按他的节奏走。”
“当时代码规模约有四万行,郜龙胜要求开发主管一行一行地解释清楚,变量一眼看不懂的就建议改名称,分支耦合的要求解耦到一遍就能读懂。”当时也在现场的系统设计师说,“到最后,我也基本上都能看懂了。”
“你不改没关系,我会把问题记录在CQ(缺陷管理工具)里。”对于代码结构设计不清晰、存在风险的地方,郜龙胜也不过多争辩,只是用不大的声音重复这句话。
“有些地方不直接影响功能,当时不太想改,但是拗不过他。”开发主管无奈地笑着说到。
新项目从研制到首飞,代码必然要随着需求变更经过多轮维护。“维护的人不一定是最初写代码的人,初期多花点功夫,后期维护会简单些。”郜龙胜说得很真诚,又忍不住微笑道,“我知道当时开发主管一定很烦。但是过不了我自己这关,没法给用户。”
最终,郜龙胜累计发现文档和代码问题300多个,他征服了自己这关,也征服了项目组的全体成员。得益于郜龙胜的“执拗”,不仅许多编码和软件设计缺陷得到修复,连系统设计也得到优化,为年底的首飞成功巩固了坚实的基础。该项目的开发主管自此后对郜龙胜心悦诚服,其他软件项目经理也似乎产生了共鸣:“请郜龙胜评审的时候,真的让人‘又爱又恨’。”
控制系统是航空发动机的“大脑”,而控制软件更是灵魂所在,其涉及的参数变量、逻辑分支千头万绪。郜龙胜琢磨的不只是可读性,而是产品质量源头的设计。他不仅研究软件专业本身,还经常向产品系统设计人员请教,从系统全局角度探讨软件功能的设计初衷,现在连系统设计师都非常认可郜龙胜的系统专业性。缺陷率是软件质量的重要标尺之一,郜龙胜负责的项目,缺陷率评价95%以上都是最高级别的A级。
去年,郜龙胜与另外两位同事一起从一百多位软件工程师里脱颖而出,被评为研究所的“优秀员工”,谈及获奖的感言时,他说:“每个人都有无限的可能,选定一种一直往前走,应该不会太差。”话虽简单,但确如其人——他似乎就如那根不停转动的秒针一般,嘀嗒不止,“执拗”向前。