周源源:弥合学术界和工业界之间的鸿沟
点击上方“中国计算机学会”轻松订阅!
来源:《中国计算机学会通讯》2017年第2期《专栏》
我首先声明一下,我不像李彦宏或者我的导师李凯那样,我不是神。并不是因为他们都姓李我姓周,而是因为他们确实很厉害。但是相比之下,我可能比他们更接地气。因为首先我是女生,成长在湖南一个小地方,从各方面来说都是一个创业非典型人物。这也许对大家的激励会多一些。
另一方面我的很多观点可能比较片面,只局限于我个人的经历。今天来参加CNCC的大多来自高校,所以我会更加强调学术研究的产业化。另外,我无论是做学术研究还是创业,都是在美国,所以很多地方可能不符合中国国情,所以我今天所讲的大家只能做个参考。
我的职业生涯始于北大学号
你们猜我在北京大学求学期间的学号是什么?大家一说到创业就觉得是发财,认为我的学号是888,实际上我的学号是男生都特别羡慕嫉妒的007。这个学号对我的影响是:我的职业历来都是双重的。与高校很多教授创业不同,我是先创业后进入高校教学的。当时我从普林斯顿大学博士毕业之后,我的博士毕业论文吸引了风投公司投资,因此我开创了第一家公司Emphora,两年之后被一家上市公司收购。之后,我的导师建议我回大学去任职,其实当时我不想教书,因为觉得自己无德无能,怕误人子弟。后来我还是听从了导师建议,去了伊利诺伊大学香槟分校(计算机排名全美第五),在那里工作了7年,并转变了研究方向——这实际上也是受创业的影响。我的博士论文研究的是存储系统,但是我创业的时候发现缺乏软件诊断工具。当时,我看了一些软件工程方面的文章,觉得很多从事软件工程的人可能自己都不写软件,做出的软件诊断工具都不适合我们这些做软件的人用。所以我到伊利诺伊大学香槟分校之后,就下决心换一个研究方向,想自己研究一些工具来给做系统的人来用。后来在这个方向上终于闯出了一条新路,我们做的工具在很多方面都比较实用,也慢慢影响了软件工程领域的研究人员。也是运气闯了这条新路,所以伊利诺伊大学香槟分校在三年半后就给了我终身教授。
2006~2007年,有好几家大公司看到我们的文章后联系到我,希望我们能把研究原型做成产品,并且他们愿意预付钱,让我能雇用开发人员。我当时觉得机会很好,伊利诺伊大学香槟分校也很支持创业(因为知识产权属于学校,如果教授开公司,学校要在公司占一定的股份)。我觉得天时地利都很好,就和几个刚毕业的博士和硕士生开了一家叫Pattern Insight的公司。它主要是做系统数据分析的,引用了早期的人工智能、数据挖掘等一些方法,到2012年被VMware公司收购。我们的产品“Log Insight”被VMware被推广到了很多数据中心,也是VMware唯一的大数据分析产品,至今VMware仍保留“Log Insight”这个名字。在这期间我被加州大学圣地亚哥分校挖过去做高通讲座教授(Qualcomm Chair Professor),继续做类似的研究工作。
我观察到很多学生参加学术会议时不知道如何与人交流,就像我的一些博士生,都不知道怎么社交。我想,我们为何不开发一个App,让大家知道该如何社交呢?所以我在2013年底,和我的几个博士/博士后,创建了我的第三家公司Whova。 这个想法实际上与我的研究方向非常不一致,它主要是针对会议管理和社交,现在主要面向欧美市场,已经被3000多个会议用户使用,每月有100~150个欧美的会议使用,公司估计到2017年能收支平衡。
我喜欢创业
我在高校任职的同时开公司,这样的双重职业对于我来说有双重的好处:
第一,在学术界,只要我能静下心来,就能够深度地思考一些问题,而不需要去考虑细枝末节。
第二,我觉得创业比较接地气,解决的是实际问题,并且能马上看到效果。当你看到一个陌生人使用你的产品时,心里就会有一种满足感。
此外,我喜欢创业其实另有隐情。不知道在座的有多少人喜欢玩游戏,其实我一直就玩游戏,甚至我在伊利诺伊大学香槟分校做教授时还在玩游戏。我最喜欢的一个游戏叫“文明(Civilization)”。2008年,有很多学校包括卡内基梅隆大学和耶鲁大学聘请我,而加州大学圣地亚哥分校特意送了我第五版的“文明”,就把我给“收买”了。我为什么要提这个游戏呢?因为这个游戏不是打打杀杀的那种类型,而是一个决策性的游戏。在这个游戏里,你可以投资科技,也可以招兵买马去打仗,或者是发展经济。我觉得创业很多时候更像是玩游戏,因为你一定要享受这个过程,你攻克一个小小的关卡,或者有一小步长进,都会很高兴。另外,我们玩游戏的时候,从来没有想过我万一失败了怎么办,万一闯不过这一关,我是不是很没面子?其实创业也是一样,我们也不需要考虑太多,因为你要去享受创业这个过程。
另外一方面,我特别喜欢金庸的武侠小说,因为我觉得金庸的小说是跨时代的。创业类似于小说里边的“闯江湖”,带一些朋友和一些难兄难弟,大家一起去做一番事业,尤其是那些别人认为你不可能完成的事情。创业就是闯江湖,有福同享,有难同当。
我觉得女性应该多去创业,因为我们没有太多的压力。而且女性创业也可能对家里的经济有帮助,因为这样我们网购的时间就少了,所以男士应多鼓励你太太去创业。赚钱不是最主要的,赚钱只是创业成功以后的一个附产品,真正要享受的还是这个过程。
跨越学术界和工业界之间的鸿沟
什么是创业呢?我觉得创业好比组装一辆车,将各种各样的、破旧的零件攒在一块,希望能够风光地带着队友到达目的地。什么是学术研究呢?学术研究就好比制作汽车的引擎,梦想着能让汽车飞起来。从某种意义上讲,创业与做学术研究的人是相似的,都怀揣着一个梦想。
但创业与学术研究也有不同之处。如何实现学术界与工业界的融合,跨越它们之间的鸿沟呢?解决办法就是扩大相同的地方,弥补不同的地方。学术界与工业界相同的是都需要从实际问题出发,但是学术界考虑得会少一点,大概有30%,而工业界在产品化上考虑得更多一点。例如某项研究,作为一个学术研究是很好的,但是作为一个产品,就不是特别实际。
另外,工业界和学术界都需要实验评估,学术研究做实验,做到30%就可以了;而在工业界,产品实验要做到九成,这样别人才会购买这个产品。不同的是,学术研究做的是一项研究的一个点;而工业界做产品,实际上是一个面,要做成一个系统,也许还要考虑与其他系统的结合。
案例分享
下面将从三个方面分享我个人的经历,说明如何跨越学术界和工业界之间的鸿沟。我举的这些例子都是我自己的教训,作为反面典型。我是从教训中逐步成长起来的。
从实际问题出发
如何从实际问题出发,从学术界的30%做到工业界的90%?我觉得学术界,包括我自己,做学术研究的时候有两个盲点。
第一,我们喜欢从别人的文章里寻找问题。其实别人的文章都是已经消化过的,是对一个问题的侧面、片面的了解。就像盲人摸象,摸到的也只是大象的一个侧面。但是如果你只是从别人的文章里寻找问题的话,就好比你连大象都没有摸,就直接去问盲人“大象长什么样”。所以至少你要自己摸摸“大象”,寻找问题。
第二,我们很多时候不考虑问题的大小,从来不去问到底有多少人试图解决这个问题?这个问题的影响力有多大?很多时候,我们的目的就是为了写一篇论文。我在伊利诺伊大学香槟分校做教授时,和我的一个师姐说我有一个缓存方面的想法,这个想法至少能在USENIX ATC上发表一篇论文。我当时很激动,特别希望能得到师姐的支持。但她并不支持我。我当时很不理解,后来我冷静下来一想,师姐的做法是对的。因为每一个项目,至少要投入6个月到1年的时间。而实际上有很多问题可做,所以要选择有影响力的问题去做,一定要考虑问题的大小,而不仅仅是为了发表一篇论文。
实例:CP-Miner(研究)→ Code Insight(产品)
我们在2004年的OSDI1会议上发表了一篇CP-Miner方面的论文。2001年,斯坦福大学的一篇论文中说,操作系统的很多缺陷(bug)都是因为复制-粘贴(copy-paste)造成的。受此启发,我们觉得这是一个不错的问题,于是用数据挖掘方法自动查出和分析代码里的copy-paste以及相关的bug。后来在OSDI上发表了,并且吸引了一些工业界开始与我们合作。
上述论文中关于CP-Miner的想法其实就是从别人的文章里发现的问题。直到后来工业界与我们合作,我们才发现,我们对问题的看法实际上是很片面的。我们研究的课题只是代码重用很小的一部分,更普遍的是产品线以及定制化的代码重用。比如华为生产新型号的手机,硬件上会有一些变化,但对于软件部分的代码,华为不会全部重新写,一定是重用前一个型号的代码,然后进行部分修改。如此这样,很多手机型号需要支持,因为产品的分支越来越多。像思科、高通这种公司,有时候需要对特定用户做定制产品,这样又出现了很多分支。有时候一个公司可能要同时维护几百个产品分支,这样它面临的一个问题是,其中一个分支出现了bug需要打补丁,我们就要考虑其他哪些分支也要打补丁。
当时我们在学术界,从来没有意识到这个问题。所以你一定要与企业合作。后来我们把产品从原来的CP-Miner转向了Patch Miner,只要找到了其中一个产品分支的bug,就能够保证所有的产品分支都能打上补丁。
另一个教训是我们从来不考虑市场有多大。当时很多大公司,像思科、高通、华为,都购买了我们的产品Patch Miner,但最多也就100个客户,因为它必须要有很多分支才需要我们的产品,这样的话我们的市场太小了。所以,我们在2010年开发了第二套产品——Log Insight。这样,我们从软件开发市场转向了数据中心的管理。因为大学、银行都有数据中心,这样市场就变大了。2012年,VMware恰好需要这样一种能够对数据中心加强管理的产品,所以最后收购了我们公司。
实例:Whova:人员搜索→会议App
我们做的Whova也是反面典型。最初Whova不是做会议的,而是做人员搜索的。研究动机是,谷歌和百度的搜索都是关键字搜索。例如在百度上搜索“周源源”,检索结果是唱黄梅戏的周源源,而不是我;如果用英文在谷歌上搜索“Yuanyuan Zhou”,检索结果就是我,而不是唱黄梅戏的周源源。所以我就想能不能开发一个真正能做到对人员的搜索的产品,也就是在互联网上搜索人员信息,分析并归纳(entity resolution),把同类人的信息放在一起。最后通过比较发现,我们的算法比KDD2上一些论文的精确度要高。
我们最先做了一个人员搜索的App,每天有200次左右的下载量,但是大家重复使用的频率很低,这样就不存在一个固定的商业模式。其实连我自己使用该App的频率也很低。比如说我想找一个人,我会习惯性地在谷歌上搜索,虽然谷歌用的是关键字,我可能要点击很多网站,花5~10分钟的时间才能把这个人的信息收集全,但这个代价我是能接受的。
所以从这个角度来讲,我们的App实际上只是个“维他命”,而不是“止疼药”。后来我想到有人参加会议,参会的人比较多,不能一个一个去搜,所以我们如果把人员搜索应用到会议社交上,利用人员搜索的自动引擎,建立一个所有参会者的档案,由此可以知道哪个参会者是北京大学的,哪个是从百度公司来的。这样,你就可以在会议之前下载App,事先与他们建立联系,在会议期间约时间单独交流。这样我们就将会议的随机社交变成了计划社交。
我们转型以后发现产品用户的增长速度很快,说明了这个问题的重要性。当时我们看的人员搜索,虽然是有这么一个需求,但是很多搜索引擎基本解决了,只是个快慢问题。所以这是一个反例,也是一个经验教训。
实验评估
学术研究做的实验不够,很多实验用的是仿真器、小数据集,这只是让实验结果看上去好一些。而这样做产品是不行的,因为客户是花钱买产品,足够的实验评估才能保证产品质量。
实例:CP-Miner ——从百万行到十亿行
我们做CP-Miner研究的实验评估时,扫描了Linux、FreeBSD等代码。每个评估软件都有几十万到几百万行代码,我们自认为已经超过大部分软件工程的实验数据。而客户却给我们泼了一盆冷水,说扫描几百万代码根本不够,他要扫描10亿行代码。因为他们有500~1000个产品分支,每一个分支至少有千万行代码。
那我们怎样支持大规模代码分析呢?做法是把分析并行化,分布到20~100个节点;减少分析之间的相互依赖关系;提高分析容错功能,不要一出错就停止分析;支持增量分析。
实例:日志分析
我们做日志分析时,用了一些机器学习方法,精确度达到了75%。但是工业界的客户说75%的精确度是远远不够的,他们要求精确度能达到95%。如果做图像匹配,假设匹配出错了,人很容易看出来,但是做数据中心的诊断,使用产品的人没有能力来判断哪个是对哪个是错。因此我们只有删掉那些准确率不太高的机器学习方法。
另外令我比较惊讶的是,客户让我们提供一些很简单、很基本的统计分析方法。虽然一些简单的方法对于我们来说基本上没有什么研究价值,但对于工业界来说却非常有用,因为客户有时可能连最简单的技术都没有。
点到面
学术研究只须专注某个点上的问题,比如系统容错。而产品需要考虑产品界面、产品安装、监控、工作流程、与其他系统的集成等方面。还需要考虑商业模式,比如是提供软件还是软件即服务?盈利模式是不是靠广告等。
实例:Whova会议App
我们做Whova的核心技术是人员信息的收集与自动归纳。但是因为这个App是会议组织者买单,所以必须实现很多技术含量比较低但是对他们有帮助的功能,比如移动会议日程、室内地图、会议赞助商广告、参会者现场投票、参会者名牌打印、会议照片分享、会议文档分享、会议展销商广告、会议注册、会议笔记等等。
另外一个功能是和别的会议注册软件以及社交平台集成。
其他创业教训及建议
1.要定睛在客户身上,而非投资人,客户才让你的公司有造血功能,维持生命。
2.不要犯“大脑病(Permanent Head Damage)”,要听得进别人的建议,不要总觉得自己是对的。
3.一个很有名的风险投资人跟我说过:“你有两个耳朵,一个嘴巴,那就意味着你要听两倍,说一倍。”所以一定要多听别人意见,少说话。
4.招人要人才互补。因为公司需要各种人才,不能都是知识分子。
5.跟着兴趣走,无须为了装酷而创业,或为了金钱而创业,因为创业真的很苦很累。
6.跟着市场走,即入乡随俗,创业应该是在商言商,而不要太清高。
7.团队精神,遇到困难永不放弃。
有时候创业就是这么简单,只要你贵在坚持。
(本文根据CNCC 2016特邀报告整理而成)
作者:
周源源
Mark Weiser Award得主 ACM / IEEEFellow
加州大学圣地亚哥分校讲席教授
研究方向:操作系统、数据中心等
加入CCF
关注CCF服务号
点击菜单“加入学会”,选择“会员注册” ,加入CCF
更多CCF精彩报道请关注微信公众号