Category Archives: 打工日记

OSS和OTS的区别?

  今天又到产品经理给营销部门作培训了。这次是鹿鹿介绍OSS,我和yj也跑去旁听,讲座很细致。

  结束的时候,有人问OSSOTS的区别,鹿鹿的解释比较正统,有些人还不能充分理解。我插嘴说,拿Office比喻,OSS类似Word,OTS就是Excel,后者有结构,有行和列。当然比起桌面软件,云服务可以存储T甚至P级的数据,通过网络访问,容错安全更强大。美女们纷纷点头说这个比喻用的好,听懂了。

  aliyun.com销售的不是最终产品,而是支撑程序员和创业者的后台服务。因此市场和技术的对接方面,产品经理就面临挑战。把艰深的技术词汇翻译成日常表达,其实还不是最难的。如何体会用户需求,再和技术部门合作炒出一盘好菜?这实在需要悟性、耐力和一点点运气。

  昨天动用领导,纠结的疙瘩总算有解,项目推动起来了。明天飞回北京。在杭州呆好久了,想女儿。之前说好的《伯罗奔尼撒战争史》的读后感,我会稍后补上。

技术出身的产品经理,以及《伯罗奔尼撒战争史》

  从杭州回到北京呆了三天,元宵节又飞到杭州。一般总喜欢坐14L座,靠着窗户,又能最近距离看到机翼和发动机。那晚从天上看下去,一路上经过的所有城市,都有千百朵礼花在闪,非常壮观。

  事情多,同时追两个产品。其中一个慢慢理清楚了。接下来主要就是配合商务和市场团队,观察他们如何操办推进。另外一个产品得更有耐心,目前就是和技术团队泡在一起。周六里程碑发布前,好几天都到很晚。今天办公室没什么人,这篇拖了好久BLOG才有闲暇收尾写完。

  技术出身的pd,和程序员们相处很容易。看大家都那么忙,我也就卷起袖子干点力所能及的活。把文档要过来,一个脚本一个脚本测试,还真发现了不少纰漏。我正在写一个新手入门实例的kick off文档。动动手,有一点实际贡献,而不只是在那里长篇大论指手画脚,团队就会逐渐把你当自己人了。

  另一方面,入职时领导拿亲身经历提醒我,技术背景强的pd,刚开始会对不敲代码有失落感。嗯,还好还好。读温伯格的《成为技术领导者》时,仔细体会过“技术能量减弱”的主题。这次转型我是想清楚了的。很喜欢现在的宽阔视野。(运营美女说,产品经理们各个都是八卦大王,无论后端平台、前端设计师、运营商务、市场公关……pd总能掌握各团队的最新版小道消息)。具体来说,我目前负责的数据分析产品线,对pd的要求更偏技术,招聘中也考虑到了我的背景。大头目说,俺这个月的重点就是沉下去,把后端团队的技术摸透,然后才有可能深入思考如何包装和销售Web服务。

成为技术领导者

  频繁飞行。在机场和天上又重读修昔底德的《伯罗奔尼撒战争史》。我很迷古希腊罗马的史书。以前说过,由于古希腊罗马的贵族大多实际上过战场,甚至自己就是指挥官,因此相比中国史官,他们对战争的偶然性和残酷性的记录要翔实客观得多。这里面最典型的当然要算凯撒的《高卢战记》。而修昔底德本人也是一个很好的例子。很明显他在安菲波里斯攻防战中并无大错,他的舰队赶到时,城市已经陷落了。这次失败,城市的守将攸克利斯的责任肯定更多。只可惜后者的家族背景强大,修昔底德成了替罪羊,以叛国罪流放。

伯罗奔尼撒战争史

  看了一下,《伯罗奔尼撒战争史》的读后感还有大段文字。BLOG不宜太长,今天就到这里吧,这几天会陆续发布。感谢关注。

  补:一开始写《伯罗奔尼撒战争史》读后感,只打算写一篇BLOG,没想到拖成了一个系列。我没有能力对这本巨著进行全景汇总,仅仅是对自己印象深刻的碎片做些记录。这个系列的5篇分别是:

 《伯罗奔尼撒战争史》读后感开篇
 《伯罗奔尼撒战争史》读后感之二:古希腊时代的冷战
 《伯罗奔尼撒战争史》读后感之三:战争之初,伯里克利VS阿基达马斯
 《伯罗奔尼撒战争史》读后感之四:弱国的内部党争
 《伯罗奔尼撒战争史》读后感之五:西西里远征

跟上

  又来杭州开会了。zw说我像打了鸡血一样。

  《社交网络》里Mark Zuckerberg对好朋友Eduardo Saverin说,快过来和我们一起,要不然你就落下了,我需要你。可是后者始终没听懂。他连自己的Facebook主页都不会改。那种连接起来发生共振的感觉,敲代码入魔的感觉,从二楼滑入水中胡闹的感觉,他始终没法真正体会。

The Social Network

  下面视频源于豆瓣的版本管理系统里面的代码提交记录。那些大名鼎鼎的ID头像,以及周围烟花般绽放的代码,羡慕嫉妒恨。视频是由Code Swarm制作的,具体技术参考Xupeng的BLOG

入职

  On board不到100小时,除了第一天领电脑找工位,后面都过得像旋风一样。飞了好几千公里,见了不少人,参加了十几个嘈杂激烈的会,读了上千页的文档资料。

  今晚6点几个人冲出会议室。让出租司机随便选路线,只要能尽快杀到机场,赶得上回北京的飞机。老大问我感觉怎么样。嗯,听了这么多吵架扯皮,我居然越来越兴奋。在飞机上看完了韩寒的杂文集《青春》。11点,降低高度,机翼底下远远看到灯火通明的东三环和巨大丑陋的央视大裤衩。

  因为是云公司,所以pd间讨论的总是涉及到RESTful的服务API。技术出身的惯性思维很强,听到某件事,第一反应还是先考虑怎么实现。然后就不断意识到,大家其实是在讲业务,关注的焦点是如何理顺上下游,让各团队都有安全感并且高效协同。

  除了内部的事。在客户产品方面做了初步了解。我没想到离开计算所以后,会这么快迎头遇到如此“学术”的工作内容,什么PCA、关联规则分析、神经网络……当然,我的背景决定了领导分派的任务。

  至于真正技术方面,抽空和核心团队的工程师聊了一下底层平台。比我想象的要好很多。具体内容不方便写(Google了一下,在一些博客出现过讨论底层平台的文字,但这些作者随后都收到了公司法务的信,作为商业秘密被删除了)。《程序员》即将出版一期阿里云的特刊,也许里面会有部分介绍。有兴趣的同志们可以关注一下。

  半夜11点59分进家门,女儿睡得像小猪。据说我又错过了关键瞬间,她学会了翻身,把自己卡在了床和椅子中间。

  时间尚短,但感觉这的确正是我想要的。所以还是那句话:愿老天保佑俺们和俺们喜欢的工作。

离职

  大家都知道了,所以就提前在BLOG上写一下。

  我将于今年12月底从中科院计算所生物信息研究组离职。到阿里云计算公司任产品经理。

  2003年5月,人脸识别课题组招聘软件工程师。当时正值非典,面试当天只有我一个人到场,其他应聘者都被隔离了。于是幸运地得到了这份工作。此后2005年6月调入生物信息研究组负责pFind引擎的产品和架构。算起来,在计算所服务了8年多,做pFind超过了6年。这期间,读取了在职学位,发表了两篇SCI论文,申请了若干发明专利、软件著作权和商标,还成了计算所内部培训师,买了房,买了车,结婚生子,交了一大堆朋友,由生涩的毛头小伙儿变成了三十岁大叔。

  我进入pFind组的时候,pFind还是一个学术demo,BOSS H对我的要求很明确:让它能真正在生物研究一线用起来。经过pFind Team这些年的努力,pFind Studio共发布6个重要版本,累计开发20万以上C++代码和10万行的python或Java代码,申请10项发明专利。到2011年年初,pFind引擎已经在国内外63所大学、研究机构和公司安装,其中包括Duke University, MIT, NIH, UCSF, LICR, Thermo等。在此基础上构建了“哪吒”云计算平台,为多家生物研究机构提供在线服务。在pFind组的大多数日子里,我都是“跳着踢踏舞去上班”的。不是所有人都能把兴趣作为职业,拥有pFind这样一个平台去施展才干,我对此心怀感激。

  另一方面,从2000年本科时代参加创业大赛接触风投开始,始终怀有创业理想。很早前就在pFind团队里明言:“如果pFind失去了创业可能,我会在第一时间离开”。最近两年pFind在学术领域进展顺利,我与BOSS H进行了坦诚交流。由于pFind在接下来几年内肯定不会创办公司,所以我选择重回工业界。

  我可能在阿里云参与研发离线计算平台,和科学计算有关联。所以还有机会与生物信息的朋友们继续合作。

  工作地点还在北京,手机和私人邮箱等联系方式都不变。祝大家新年快乐。我会继续写BLOG。

Do it yourself

  正在指导zk和wl在超龙一号超级计算机上安装配置pFind集群版。打算在960核情况下做一些加速比试验。和上次1024核试验很类似。很遗憾不能在龙芯CPU的节点上玩玩。

  哪吒系统在集群上全流程各环节并行。我一开始指望用点python有关的分布式并行框架,最后还是DIY。小马过河,有些地方挺困难(例如对虚拟机的管理和通讯),但总体来看,其实比想象简单。

  前几天提到,新版pFind核心使用了二级离子索引,但引入HBase不顺利。又发了些邮件开了些会,终于下定决心对查询部分推倒重来,抛开Hadoop等现有框架从头实现。方案确定,大家恍然大悟:原本就该这样做,花了半年证明HBase不行啊。

  上次BLOG最后写:“Java和C#逐渐不那么招人喜欢”,还链接了“Why do some people hate Java?"“Why we don’t hire .NET programmers”两篇文字,引来不少邮件和评论。俺的不少好友是Java和C#高手,并不想挑起语言口水战。那段文字也只是描述现象。具体从风格而言,这两种语言都是以“减少新手犯愚蠢错误”作为第一原则的,对初学者相当友好。不过也有点像乐高玩具,常规情况下简单易用,但面对更高的要求时(运行效率、开发效率等等方面),就不得不去了解大量水面以下的细节。相比起来,开源界的技术栈常常是哭着进去笑着出来。

从卫生巾说到生物云计算

  写一些技术感想,意识流,没中心,想到哪里写到哪里。

  12月12日,淘宝又一次大促销。一天时间不到,卖出去了三亿片苏菲。这是一个很恐怖的数字。随着淘宝占全中国零售额的比例一路超过5%,电子商务已经开始影响传统主体经济。

  体量足够大,就有数据可供挖掘了。

  例子一,去年到上海参加软件开发SD2.0大会,淘宝的数据可视化讲座,给出了女性内衣的尺码数据统计,平均值从前几年的A罩,迅速增大,目前居然达到了C罩杯。因此得到两个结论:<1>中国人的营养水平和肥胖率不断上升,<2>上淘宝买东西的女性年龄在增大,已经越过了婚育年龄均值点。

  例子二,2010年温总理去淘宝视察,马云的报告里说,由于阿里巴巴有真实的外贸订单数据,淘宝有真实的国内零售数据,所以可以据此预测未来半年的全国经济走势。那时候马云PPT里的预测,现在印证起来,相当准确。

  屁股决定上层建筑,有了数据金矿挖掘的利益驱动,相关的技术投资就会被重视,然后就构建出新的技术平台和商业模式来。Amazon的营业收入中,越来越大的比例源于计算和存储能力的对外租用,也就是云计算。它已经不知不觉变成了云计算市场的领袖,甚至威胁到了伟大的Google。

  回来再说我们pFind的事情。最近半年多lyz美女一直在开发pFind@hadoop。此前也讨论过生物信息云计算。

  首先用MapReduce创建离子索引还挺顺利,然后就开始写查询这一块。方案是利用HBase进行存储,利用Thrift进行结构化和远程调用传输。但性能一直是问题,hchi用C++写的单进程处理程序(把数据索引分块,逐个载入查询),居然和Hadoop版的64核集群的速度差不多。进行了大量的优化,并请教了在搜索引擎公司的Hadoop牛人,依然达不到期望。

  在很小的质谱数据集上,pFind就要发起接近百万次的离子查询,这种规模的并发,已经远远超出了HBase常见的应用方式。于是反思方案本身。HBase的特点是支持随机写入,引入了并发事务性管理机制。因此,它更合适需要增删改的online实时处理,其替代对象是传统的SQL关系型数据库。

  而对于全文搜索类的应用场景而言,其预计算索引一般只需要顺序批量写入,不必支持随机改和删除。所以可以直接把索引存入HDFS,自己实现查询。由于不用支持随机写入和删除。也就是几千行代码而已。最新2011.12期的《程序员》刊登了推特Nathan Marz的文章《如何打败CAP定理》,他们的方案是采用Elephant和Voldemort read-only这一类可以直接从Hadoop MapReduce中导出key/value的数据库。这些数据库都不支持随机写入,简洁使其鲁棒性特别好。这种方式不能更新数据,每次都需要全局重做。但生物数据库对实时更新并没有太高要求。

  (补:Guancheng大虾提示说,把Hadoop实现的版本跑在512甚至1024核上会不会比C++单线程版本快?把input size增加几倍的话Hadoop版本的Scalability会不会更好?)

  再记录一件事。大红大紫的redis的维护者刚刚拒绝了微软提交的补丁。补丁的目的是让redis可以在Windows系统下运行。拒绝的原因是Linux completely won as a platform to deploy software(作为工作软件的部署平台,Linux已经完胜win32)。维护者认为应该把精力集中在真正重要的问题上。

  这一期《程序员》杂志的企业软件专题里面,主编表达了与此相关的一些观点。最近五年以来,Java和C#这些语言逐渐不那么招人喜欢(看这个链接这个链接)。企业级开发、Windows开发的形象变得过时。像我这种有点年纪的程序员,难免总会有点三十年水流东三十年水流西的感慨。

  云计算是现在最热的buzzwords,小心,IT领域的大词,总会很快过时。

关于器量和勇气

  教主在42qu发帖转载摘录《历史的经验》说:

    曾子说过:“用师者王, 用友者霸, 用徒者亡。 ”,周围全是服从的、 听命的、 乖乖的人, 会有麻烦。

  我对此深有体会,回复了一下。

    领导身边必须有几个敢直言相告,平等讨论的人,告诉他什么时候皇帝没穿衣服。这就得考验说的人够不够有专业精神和放到桌面上说的勇气,听的人够不够有器量。这个问题处理得好,双方都能积累长远的职业威望。

    从我个人的经验来看,在国内尤其是公有单位,目前还普遍流行耍小聪明讲城府的处世哲学,物以稀为贵,坚持职业操守主动说真话会带来相当可观的口碑红利。当然,想高于均值,一开始总得多付出一点代价。直言相告很容易导致人际关系的紧张和冲突,会给双方都带来压力感和困扰。

  说虚一点,器量和勇气,跟潜意识里的自我认同和安全感有关。

  其实除了基本人品和信赖以外,最关键的是人际交流的方式方法。能不能用合适的方式表达和听取异议,这是个情商和修养问题。对于程序员来说,大多数人缺少这方面的训练和慎重思考,拙于表达又很容易情绪化。见过太多次,原本出于公心的讨论,当事人却没注意非技术因素,发生争执时控制不住语气,话都是横着出来的,导致矛盾甚至反目。上次提到PM的心态问题,其实也是这个意思

  职业精神和个人品牌需要着意维护,需要成熟,需要反省,需要磨练。

招聘、求职和早恋

  前两天的千核测试太累,测试报告发出去,老婆大人命令在家休息了一天。

  先帮朋友发个招聘广告。香港某大学正在筹备的文本挖掘和推荐算法实验室,招聘熟悉学术圈氛围,有软件工程经验,能带人做产品的工程师。这个实验室是与企业合办的,其目标是把学术研究成果向市场孵化。实验室负责人是从pFind组出去的帅哥leo。待遇不错,尤其是与国内相比。如果嫌香港租房比较贵,可以在深圳住。嗯,如果不是因为年纪太大,在北京成了家,俺是一定投奔的。有兴趣的同志们赶紧发简历到topmathchina at gmail。要快哦,亲。

  言归正传,最近招聘的话题在42qu和各个牛人的Blog上大热。例如刘未鹏刚发表的Blog《怎样花两年时间去面试一个人》 ,堪称经典。作为资深人贩子,我以前也在Blog上议论过别人的是非。类似的,挑灯看剑也在BLOG上叹息过豆瓣招人不易(这篇BLOG现在被隐藏了,如果你真想看,用Google Reader)。招人的机构找不到靠谱的人,大量求职的年轻人又在纠结郁闷,出现这种局面责任在教育机构。

  反过来说,总有人能超出环境均值成为Outlier。前两天蓝色宝石聚会,rainbow学长愈发内敛强大,喜欢把他的经历讲给年轻人。rainbow刚来北京上大学时,特困生,家里为了凑足学费历尽周章,去中关村软件公司打工,开电脑的电源按钮都找不到……可一年以后,他给家里汇回去1万元,蓝色宝石筹备创业时,他说没问题,现在的积蓄够自己两年的生活;到了毕业,打印出来的求职简历比别人厚四五倍;进入老牌国企,很快成为几十年来最年轻的处长;他在北京买了房子,把父母接来,结了婚……最关键的是,每次见到我们这些朋友,他还是那个真诚、温和、质朴、大度、勤奋、踏实的rainbow始终没变。无论提供的教育质量怎样,毕竟是大学,有很大的自我发展空间,年轻人首先应该有自己的行动。

  关于大学教育和创业,42区上有个16岁小朋友前两天发帖子“为什么我选择辍学创业?”。对这件事,每个人有自己的看法。求职和找对象一样,想找到可以托付的事和人,先得做不少功课。说到这里,跑个题,有个15岁小女孩误入邪恶的42qu,问:“我这个年纪、要是喜欢上了别人该怎么办”,joyfire大叔是这么教坏小朋友的。

    早恋挺好,早点体会一些悲欢,了解人生的真相。总比变成剩女了还不了解异性的基本特质好(北京城里这种女孩还真多,周围认识好多有车有房却没谈过恋爱的30岁白骨精)。

    不过,要把握几点原则:

    1、保持悲观,概率统计显示,中国大约有3000-5000人是非常适合你的The one,这个人在中学就出现的概率比被雷劈中的概率小一千倍以上。

    2、相信自我感觉,保持勇气。勇气有很多种,例如向一个人早点承认自己不喜欢他,让彼此尽快解脱的勇气。

    3、学会自我保护。世界上真的有不少烂人,得不到就伤害。保持冷静而强悍,不要轻信,学一点跆拳道。