当我对着远程的大屏,给北京的IBM中国研究院几位面试官汇报完30分钟技术报告之后,心里忐忑不安,这已经是终面了……一关关拼得不容易,但却很精彩!
在之后的几天,很高兴接到了来自IBM两位高级经理的电话,分别给我介绍了他们部门情况和项目情况,表示我的报告“印象深刻”,“能力很突出”……真的是非常感谢他们能给我这个机会!
诀窍
我不是聪明过人的天才,但是我相信自己的研究能力,这来源于一个诀窍——我悟出一条“定律”,那就是:能力是一种态度!
简单解释如下:这世界上不缺乏聪明人,但是缺乏懂得运用自己聪明才智的人。
今天的帖子,我希望通过7个真实的故事,去诠释这条定律——能力是一种态度!
1. 我通过qq在课题组做了一次试验,将同一个问题群发给了6个成员,有3个人回复我:“这个我没遇到过,不会做啊……”;有2个去Google了下,大概告诉了解了应该怎么弄;有一个人,做程序试验了不同方法的优劣,告诉我最好的方法是什么。多年以后,对很多问题都报以“没遇到过,不会啊……”的人,和能力在积累的人,虽然一样聪明,但是差距就很大了。
2. 行人仿真系统研发的初期,我突然发现A*算法和Social Force Model特别有意思,就钻了进去,花了一些时间把它们研究透彻…当我兴致勃勃给老板介绍完各种模型算法之后,老板说:“你去给领导介绍这些模型算法是没用的,他们要的是效果,模型是无止境的…”。当时我也很沮丧,但是后来事实证明,我的“不务正业”是对的!因为智能化的动态寻路能力成为了我们系统的核心创新点,也是每次项目介绍中最得意的内容。
3. 给北京做的“城市轨道交通运营辅助决策系统”是要在08奥运前上线的,时间很紧,临近系统调试的时候,北京测试人员突然打电话说发现某些车站之间候选路径似乎少了一条……当时大家都认为可能就是边界条件问题,稍微改改就好了。我研究了下这个K短路算法(其他人负责开发的)发现竟是理论上的缺陷……
一时半会儿又没办法给领导解释清楚,我就决定重写这个部分,用数据来说明。由于时间太紧,在北京回上海的火车上看这些很多文献,凭借着良好的A*算法基础,很快设计出新的算法。通过测试发现,老算法共丢了500多条路径!(总共十几万条左右),这时候大家总算舒了一口气了……
但我并没有罢休,因为匆忙,算法速度不快。继续花了几天,将北京轨道网络中2万多OD之间清分计算时间优化到10多分钟,最后优化到1分钟(在我笔记本上)。上线调试当天,领导赞叹道:“这算法可真是又快又准啊!”
4. 还是上面这个系统的故事:当时北京路网基础数据是一个硕士负责录入的,他毕业以后,上海路网数据没人弄了,老板叫我去做。虽然只是半天时间的体力活,但是心里很不是滋味……
虽然有人劝说:“花个半天搞定算了哦!”但是我决心不用笨办法——我花了一个星期,凭借曾经开发的“二维矢量图形库”,设计出一个智能化的基础数据管理子系统,只需要在图上简单点击,然后拷入excel中的车站名称和代码,系统自动识别,然后再自动生成区间、换乘关系等等6张数据库表需要的全部数据。后来课题组利用这个工具构建了很多路网,因为非常简单,这个子系统也成为了后来863中网络客流仿真系统的基础。
5. 上物流系统课老师提到一个著名的NP问题——Vehicle Routing Problem,要求大家回去写写系统设计书。我当时就决定要开发这个系统,后来的几个星期,我发现遗传算法和自然界的规律真的是如此的吻合,达到了如痴如醉的地步,被女朋友嘲笑为:“整天关在屋里下崽…”后来结果是,我设计的遗传算法,不但能够求解最少需要多车,还能找到总里程很短的方案。
6. 在斯坦福访学主要是参与一个疏散仿真系统的研究。但是,由于有遗传算法的背景,另外一个教授介绍我参加他们的一个课题——办公大楼改造优化方案的辅助决策系统。
刚开始我认为这是一个确定性问题,因此采用A*算法得到了比较好的效果,已经可以满足项目需求了。我想为了作对比,又设计了遗传算法,居然发现在少数情况下能“变异”到更好解。大量实验后,我发现了两种算法虽然原理差别很大,数据结构上却存在内在联系,能够组合成一种具备通用性的框架,解决大量离散优化问题。
完全出于对科学问题本身的痴迷,我并没有罢手——自行设计了一种数据结构替换哈希表,将两个算法性能同时提升10倍之多(在遗传算法中提出了“花名册”的概念),后来又发明一种“交叉算法”,再次将遗传算法提升十几倍。当时测试案例的人说已经完全跟不上了(已经让他反复做了好多次了),因此最后我们paper里面的数据不是我最快的算法得到的。
7. 利用上面的“离散优化问题搜索框架”,我发现还可以解决《编程之美》中的许多问题。在大家都忙于找工作面试的时候,我却整整花了一个月关在寝室里研究《编程之美》,有时候挑战一个题目整整花去1天时间,当时我身边的人都说我“不务正业”,我自己都有点怀疑了。可是事实证明,这份研究不但证明了兴趣,还证明了我的算法能力,对后来找工作很有帮助。
结论
通过上面的故事,我想已经可以证明我这个定律了——能力是一种态度。如果要问态度是什么,那么我想是一种单纯的,没有任何功利的科学态度,对问题本身的执着。
这7个故事也可以用下面这张图串起来,一面的时候时间很短,我就打印了这个图,凭借它去打动面官。
在我编程之美的学习连载里面,大家看到了很多好的点子。但是,它们都是在平时走路、吃饭、散步的时候想出来的,我这个人从来不擅长考试,女朋友嘲笑我——如果你去微软面试估计危险,因为你没有时间散步……
我曾经想过,对于一个博士,面试不一定能看出其水平,但是,如果给他30分钟PPT时间,介绍他的研究,水平就一目了然了。
真的没想到的是,在IBM的后2轮面试,全部一一印证了我曾经的设想……用PPT去演讲是我最擅长的东西,因为太多次的磨练了:)
微软的技术是我多年研究和喜爱的东西,微软也是我多年梦想的企业。但是,如今却迟疑了,IBM这份《智慧地球赢在中国》的白皮书确实令人震撼——它能够站在世界经济大环境的角度务实考虑中国的未来……