Monthly Archives: March 2007

Maverick

  黄健翔最近有句广告词“激情万岁!”,每次看都做认同状。老娘教训我:“别以为只有你们才特立独行,才个性,人人都年轻过”。经典,这话得记下来,将来让我的孩子看看。

  比如记忆里的外祖父,小时候总和他抢电视遥控器,不让他看京剧。等老人去世了,挂起遗像,原来年轻时是这么一个潇洒帅气的军人。

  外祖父是大地主家的少爷,在省城不好好上学,认识了外祖母(外祖父的岳父在北大读书时参加过五四运动,烧曹汝霖的家,关进监狱。放出来的同学合了个影,我见过那张照片,站得笔直),跟着思想左倾的女朋友去闹学潮。家里抓回来逼他成亲,婚宴当晚爬后院的梯子翻墙逃出去。这个不肖子从此被族谱除名。

  他索性改了名,谐音“入林”,铁了心当强盗去。先加入国民党,后加入共产党,曾经兵败被俘,又成功逃脱,经历戎马一生。(建国后外祖父一直没当官,几个儿女都是自食其力的普通百姓。有趣的是,骨灰回乡,那里又大操大办,要和那些前清举人葬在一块儿,光宗耀祖。老爷子遗嘱是:一半和外祖母合葬;一半撒在战场上。当年血战十倍敌军的山顶指挥所,已经变成了卫星信号转播站)

  那个时代的热血青年,够酷,maverick。政治观点未必认同,热血献身的激情值得尊重。

列车准点到达

  3月份大多数工程任务的最后一个里程碑都定在23日。下午5点开始陆续收到邮件,除了进度报告,还有大家各式各样的感想和致谢。

  这个月,机构调整,生物信息方向的三个课题组被合并,改换门廷影响到每个人;用户反馈和不断讨论激发出很多新想法,陆续添加到Todo List的工作量超过原计划的三分之一;博士们还在为申请科研基金点灯熬油……

  玩得很惊险刺激,比如最艰难的Web新版,好象是天生命运不济似的,从.net运行时安装缺失,到COM组件编译链接失败,到注册表异 常,到MFC DLL调用约定,到STL版本兼容,再到Windows操作系统漏洞……几乎每个有可能出错的地方都一个不落地出了问题。直到昨天,我还发邮件预计无限期拖延,没想到两位英雄奇迹般地击毙了所有BUG,在最后时刻上演胜利大逃亡。

俺和圆周率不得不说的故事

  今天是3月14日,圆周率“Π”的日子。

  最初接触圆周率是小学二年级。那几年似乎流行背诵圆周率。为了显摆记忆力,我一口气背到小数点后二十位:3.14159265358979323846,到现在都时不时拿出来吓人。其实吧,是上课偷看课外书,照着人家写的窍门背下来的:“山顶一寺一壶酒……”

  本科编过一段算圆周率的代码。不记得从哪本数学书上抄来的迭代公式。用rainbow实验室的服务器跑了一整夜,好象是算到四万多位崩 溃的。当时年轻气盛,还跑到学校的BBS上把结果贴出来,邀请高手来打擂台,谁写的程序算得更多,或者同样结果但运行时间更短,我都请客吃饭。只记得 BBS一次无法提交这么长的内容,是分几个帖子发表的。

BUG和战斗机

  上个月,F22隐形战机首次部署到美国本土以外的冲绳军事基地,以威慑中国。中外媒体为此大大热闹了一番。谁知F22飞越太平洋时出了点小岔子,刚过国际日期变更线,卫星导航系统就崩溃了,结果只好依靠传统的无线电导航方法飞回去,给软件打补丁。

  估计这个BUG将会像“金星探测器水手1号发射失败”和“阿里亚娜5型火箭发射失败”一样,成为软件工程课本里的经典掌故。

  客观来说,F22的软件共有170万行代码,完美无缺是不现实的。美国军队总在世界各地打来打去,有很多机会在实战中调BUG(照他们的说法,中国驻南斯拉夫使馆被炸也是某BUG造成的遗憾悲剧)。我对军事是外行,倒有点担心万一台海真打起来,解放军的战备程度能否应付。春节在家随便看电视,中央台报道英雄飞行员事迹,讲的就是半空中电脑操作系统死机,重启无效,飞行员冒死手动操纵飞机返航的故事。

进度和人

  这个月进度计划很紧。上周刚刚发了封特别长的EMail,列出组里4月1日前的Todo List:各个项目的主次目标、进度计划、里程碑、deadline、负责人、汇报和验收要求……但我却没多大压力。原因在于承担这些工程任务的“软件工程师”团队,那群博士。

  一般认为,比起职业程序员,博士承担工程开发并不一定合适,他们必须兼顾自己的研究工作:跑实验、写英文论文、申请专利、开题和答辩;大多数人的软件工程经验不多,有些甚至没有C++基础。所以最初几个月,我不得不把大量时间花在双人编程上,手把手培训STL、DLL和COM,进行严格的代码审阅,从变量命名这种细节开始纠正,强迫他们习惯CppUnit单元测试,不停地在大伙耳朵边罗嗦契约、流程、架构和设计模式……很多自己独立负责两小时就能搞定的事情,得扎扎实实赔进去一整天。

  但这些人毕竟是博士,骨头里就追求完美的人,更何况他们精通数学和算法,搜索阅读英文文档更是看家本领。耐心熬半年,一旦工程规范和习惯建立起来,一切就突然开始顺利。去年十月我得了一场病,三周的工作都受到影响,再去问进度时很担心,结果大吃一惊:工程开发任务都不声不响完成了,程序归档到VSS版本服务器,所有模块均有详细严谨的单元测试代码,系统在实际海量数据上跑过,测试案例说明文档和实验现场保存得很完整,真是干净利索。提前完成了进度,博士们利用节省的时间看论文去了。

  最近一年多我受过几次赞扬,都是团队精神、乐于分享什么的。其实一个巴掌拍不响,得看交流对象反馈的“投资回报”。《最后期限》里说:雇佣合适的人,他们能在关键时刻拯救你。

  这次春节回来,端着大水杯在办公区晃荡,和每个人聊了聊,再把Todo List抄送给全组,就开始埋头安心做自己的开发了,根本不用太操心。到今天,团队的进度已经比milestone超前三天,我有不错的预感。

反馈信息到了

  评审意见果然是Major Revision,算是取得阶段性进展。前些日子上网,BLOG懒得写,倒是EMail每天检查八九次,这下可以平静一会儿了。

  还得继续折腾。有个评审人的意见相当严厉,编辑也提醒:“Please pay special attention to the requests of reviewer #2 who was more critical when you revise the manuscript.”要写好这个argument还要头疼好些天。想在国际期刊上发表学术论文,哪里有那么容易。