Category Archives: 打工日记

进入2.0时代

  刚接手pFind 1.5版时就提过,软件的2.0研发是个危险路段, 前方路况复杂,但既有架构又往往需要大动干戈甚至推倒重来,就好象给高速行驶的火车换轮子。反过来说,微软的很多著名软件,例如DOS、Windows、 Word、Excell、IE等,在最初阶段都被嘲笑为拙劣的模仿者。但这些软件一到3.0版,总能把原来的市场领跑者打得满地找牙,这体现了微软出色的 执行能力,把握细节的设计和竞争中的韧劲。

  所谓Web 2.0概念,就是商业上形容那种感觉:网络创业开始成熟,开始总结套路,为后面3.0、4.0、5.0……打基础。对玩家来说,千头万绪之中找到方向和走法至关重要。

  回过来再说自己的事,经过漫长的Beta,12月初,pFind Studio 2.0套件终于计划正式Release了,包括质谱和数据库预处理软件、搜索引擎、后处理平台和谱峰图形化标注界面等一整套鉴定工具。这几个月的痛苦前所 未有:海量数据测试,现场调试,打电话发邮件开会,重构,Features取舍,修改方案,熬夜加班,咳嗽两个月不好……总感觉快扛不住了。自我安慰:等 正式发布那一天,俺就是“世界上最棒的蛋白质鉴定软件系统”的Architect了,到时候充实地好好歇几天,阿弥陀佛,一定要爬到那一天呀。

  下面记录点具体案例,等俺老了,可以借此回忆激情燃烧的岁月(说别人都没意思,俺们现在的战况是:大老板H都上阵肉搏了):

  上周六临晨2点,BOSS H给我打电话报喜:“解候选肽理论库的不定方程组的代码编出来了!”昨晚,这一幕惨剧再次发生,11点多BOSS H又来电:“通过各种生化条件限制,我把理论候选肽数据库的数字从两千万缩减到六百了”,他兴奋地描述组合生成深度优先算法中的小招数,一直打到手机没钱 为止。

  这还不够疯狂,和BOSS H电话断了,打着哈欠收邮件,我靠,fy大侠也没闲着,半夜00:40邮件:“有线索了!”,看了好久的谱,他有个惊人发现……

  于是今天打乱私人安排去加班(幸亏没耽误晚上的蓝色宝石周年聚会)。BOSS H和fy先PK,排优先级,决定先写fy这边……明早新程序跑出结果,刚好赶上生物学家们过来开会,希望可以把鉴定出的糖修饰谱个数提高一倍。

  最后预告一下,刚好在pFind 2.0发布前,我计划参加2007软件开发2.0大会,我主要关注系统开发的这个Track,希望多交流。

加班和躬身入局

  一整天才搞定一个BUG,规划好久的新流程总算基本调通了。初步测试效果相当令人振奋。加班回来晚了些,今天的节气是“霜降”,十点走出轻轨站,雾蒙蒙的。

  细节是魔鬼,所谓核心竞争力全在这儿。比如leo遇到的问题:理论上,蛋白理论酶切和肽序列统计排序是简单的算法,用STL的hash表就可以实现。但实际应用就没那么容易了,真正对付业界常用的蛋白质库,hash表里的海量数据一下就把32位进程的3G内存空间耗尽了。怎么重构,是外排、索引还是用AWE API实现自己的hash表?看来leo得踅摸两天了。

  要拥有比赛资格,就得面对细节和变化的挑战。曾国藩说:“在局外呐喊议论总是无益,必须躬身入局,挺膺负责,乃有成事之可冀”。拼凑一个根本不考虑2.0版的demo,几百个数据模拟一下,在论文里讲个好故事,不屑或不敢考虑实用?差得太远了。

奇迹出现了

  在北京蛋白质研究中心这两周,掉进深坑又爬出来的感觉。pFind系统首次投入实际的一线生物科研,这是个里程碑。

  从第一天开始就不断出状况,几乎所有模块都面临没考虑到的选项。困难的“周全”程度,似乎是有意考验一遍团队里的每个成员。俺的最主要工作就成了不断呼叫“家里”火力支援,几乎把组里每个人都搬来呆了两天……

  28日deadline,我却不得不在15:00离开现场,去医院检查心脏。之前好些天胸闷,从27日开始胸口后背刺痛,影响到工作。 坐在出租车上打了几个电话,情绪低落。领导来电:”我判断不可能出现奇迹,别再指望了,安安心心去医院,先把身体情况搞清楚”。

  到医院请主任级专家看,结果心脏没事,肋间神经的问题,放射性的疼痛类似心脏症状。哈哈,长出一口气,这是长期坐在电脑前姿势不正,过于劳累造成的。

  晚上坐在电脑前反复刷邮件,等到21:00,按耐不住打电话过去,原来他们刚刚干完。给领导发短信:“奇迹发生了”。pFind终于跑 出了结果,帮生物学家得到了迄今为止公开报道的最好鉴定数字(当然,主要是人家的生化分析方法特别巧妙,pFind只是长长的实验分析链条的最后一环)。 发邮件给现场的四位大侠:“传说中的英雄,传说中的温酒斩华雄,哇啦哇啦……”

  今天又跑去。假期路上都没人了。看到了刚印好的精美Poster,生物学家们要在10月5日在韩国召开的HUPO 2007(第六届人类蛋白质组学大会)上公布这个结果。我在4月份写BLOG,希望有朝一日,pFind成为顶级刊物生物实验中的数据分析工具,也许这个愿望有机会实现了,比我预想的时间更早。

  贴张照片,背景是昂贵的LTQ-FT(线性离子阱-傅立叶变换离子回旋共振质谱仪)。超导的东东,强磁场能把附近的银行卡消磁。这几天刚好出问题,请了一位德国工程师来修,从下飞机就开始按小时计费。

开始用户现场开发了

  今天又搬着服务器去北京蛋白质组研究中心安营扎寨。接下来一个阶段,要和生物学家战斗在一起了,用pFind 2.0 Beta4(刚刚发表在RCMS上的论文)分析蛋白质质谱样品数据,根据情况随时进行现场开发。

  每次去生物实验室一线,都是我最兴奋的时候。因为可以亲眼看看自己的代码如何运行、如何发挥作用、如何逐渐赢得生物学家信任;当然还会发现更多可以改进的地方,收集真正有意义的需求。现场开发对灵活性和鲁棒性的要求很高,是检验系统中各个层次模块的设计编码工程水平的最好标尺。

  除了看人家配药剂,摇试管,最有兴趣的就是了解那些几百万美元的精密分析仪器和软件。软件算法上,俺们pFind正在努力追赶国外的产品;国内做硬件的兄弟们什 么时候才能搞出足以对抗热电、安捷伦和岛津的仪器来呢?只有整个产业链条都起来了,才能支撑单一关节的产品去冲击世界顶尖的位置。

重新启动

  五月全力参加在职研究生全国考试,还有修改论文。

  下午,上传论文修改稿和回信,最后检查一遍,然后按submit。这下世界清净了。一个Major Revision拖了三个月,师兄帮忙一遍遍改,被俺折磨得奄奄一息。说起来惭愧,从开始写到现在,花了一年时间,这次提交的论文到了第27稿,感觉脑袋里的英文细胞都被这12页纸吸干了。

  有天在轻轨上看《经济观察报》,副刊里有篇“Google里的80后”的报道,林嘉澍写的。突然发现tj的名字,小半篇幅都在介绍他的事迹。马上给tj打电话,崇拜如滔滔江水。不过记者只是浅层次地描绘一个IT精英超酷的工作状态,却不能与读者分享这人实际的想法,了解他以往的尝试、选择和遗憾。在俺看来,真正原版“tj故事”要精彩得多了。

遇到King了

  调查国内质谱仪器的市场现状,找了半天,只见到这么模模糊糊一句话:“2004年进口色谱—质谱仪器600余台,总价值近一亿美元,是进口数量较大的分析仪器中价格最昂贵的一种。”

  这当然远远不够,需要更精确的比例和趋势,比如:仪器类型(离子阱/QTOF/FT……)、用户(企业/科究院所/分析测试机构)、用 途(研究/制药/能源/化工/医疗)、使用强度(支持多少实验人员,每周跑多少数据),服务形式(内部自用/对外服务)、预算结构(软/硬件)等等。

  搞清这些,我们才能估算出几个重要问题的答案:软件免费升级的期限多长合适?如何计算多核系统的licenses?算法订制开发的接单下限应该是多少钱?Web Service形式有没有推广空间?

  杀到海关总署的网站去查。原来人家要收费,查单项商品的进口额,一次2元。那么想知道“色谱仪及电泳仪”和“其他质谱仪”两种商品在06年的进口总额,就要花4元,似乎还可以接受。再试试逐月统计,一下变成48元了。点到收款台,居然用打印或光盘的形式速递,速递费最少20元。

  什么叫Data is King,垄断部门赚钱真容易,Wuwu~

列车准点到达

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

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

  玩得很惊险刺激,比如最艰难的Web新版,好象是天生命运不济似的,从.net运行时安装缺失,到COM组件编译链接失败,到注册表异 常,到MFC DLL调用约定,到STL版本兼容,再到Windows操作系统漏洞……几乎每个有可能出错的地方都一个不落地出了问题。直到昨天,我还发邮件预计无限期拖延,没想到两位英雄奇迹般地击毙了所有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还要头疼好些天。想在国际期刊上发表学术论文,哪里有那么容易。

到Evaluating Recommendation了

  这个春节没过踏实,眼巴巴等着论文的回音。今天网站上的状态终于从漫长的Under review变成了Evaluating Recommendation,估计一两天内就会有反馈邮件,紧张,感觉像等待最后判决的犯人。

  BTW:所谓的胸襟器宇,毛泽东有诗“贾生才调世无伦,哭泣情怀吊屈文。梁王坠马寻常事,何必哀伤付一生?”(乱翻《诗词读写丛话》的随感,没头没尾,先记下来再说)