图灵访谈

图灵访谈 查看完整档案

北京编辑  |  填写毕业院校  |  填写所在公司/组织 www.ituring.com.cn/minibook/12 编辑
编辑

对话国外知名技术作者,讲述国内码农精彩人生。你听得见他们,他们也听得见你。

个人动态

图灵访谈 发布了文章 · 2018-02-01

谷歌开发技术推广部中国市场负责人栾跃:接轨世界、推动创新(图灵访谈)

栾跃呼吁并鼓励中国的开发者们跟世界接轨、把中国的技术创新带向世界。另外,他还热心于组建开发者社区,推动技术分享。希望在互联网技术行业里,有更多的女性加入进来,写代码、做产品开发、做项目管理,等等。

图片描述

栾跃, Google开发技术推广部中国区负责人

负责谷歌各种开发技术、互联网技术、开源代码等在大中华区的推广和使用
曾留学美国南伊利诺斯州立大学,并在摩托罗拉、微软公司担任产品开发项目经理
加入Google后,帮助其在全国十几个城市成立了当地的谷歌开发者社区、赞助了全国近万名大学生和开发者们利用谷歌开发技术进行创新和创业


2018年1月14日,北京丽亭华苑酒店三楼聚集了近700名对互联网技术感兴趣的朋友,参加一场由科技猫和DataGirls两个社区联合举办的技术体验大会,来的居然几乎全部是女性。栾跃作为大会的压轴演讲嘉宾,跟听众们分享了谷歌的智能设备操作系统Android Things和开源人工智能技术TensorFlow的应用和创新场景。他的演讲和精心挑选的一些国际开发者们利用谷歌人工智能技术进行创业的案例,包括各种图像识别、机器绘图、创意设计等,深得在场女性观众的喜爱。

优秀技术管理者的必备素质

这跟栾跃向来对沟通的注重不无关系。多年的技术管理工作经历,让栾跃意识到一个优秀的技术管理者必须具备三个方面的素质。其中之一就是“沟通技能”。“如何带动一队极客们完成产品的开发不是一件容易的事情,这中间常常会有矛盾。”栾跃笑着回答,“他们是一群智力超群,却又不太善于与人交往的怪才。你要用从技术的角度能够说服他们的理由,加上产品开发管理流程作为辅助,才能有效地进行程序开发和修改的管理。”一个优秀的项目经理,能够根据不同对象的习惯,完成沟通上的挑战。技术开发人员通常在乎IQ和解决技术问题的能力,但栾跃认为,技术管理者还需要在EQ上努力, 更好地理解别人的心理、运用良好的沟通技能、理解团队和调动团队积极性,等等,这些都是做好项目管理的重要素质。

“当然,最基本、最关键的还是要掌握项目管理的一些知识。在工作中,你必须知道怎么规划项目任务,怎么分析项目需求,怎么进行软件设计,怎么把设计规划书写出来并且让开发人员看得懂,怎么制定、使用和追踪时间表,怎么应对项目拖延问题。所有这些,我把它统称为软件开发项目管理。”栾跃明确、条理地阐述着。

曾在测量班学习航道测量

很难想象,这样一位互联网技术界和蔼健谈的人,会跟工业领域的航道测量扯上关系。

栾跃的少年时期正赶上“文革”。中学毕业以后,因为中国当时的大学都关闭了,没有进一步升学去读大学的机会,他去了上海航道学校,读了两年的航道测量技术。这个学校是为上海航道局专门培养技术人员的单位。因为长江口沉积了上游带来的大量泥沙,上海航道局需要培养自己的专业技术人员,从事航道测量、挖泥船的驾驶和维修等工作。当时,栾跃被分配到测量班学习航道测量。

回忆起当年在上海航道学校的经历,栾跃仍旧充满怀念。特别是1979年毕业的实习,他们全班被派去浙江省为国家绘制富春江的水深航道图的经历。当时富春江的项目很急,上海航道局因为宝钢地区的测量工作分身乏术,就派去了即将毕业的测量班“新兵”。全班30个“光头”学生由几位专业老师带队,翻山越岭埋测量标,在测量船上用超声波设备测量水深,扛着测量仪、背着对讲机走过了每一寸陆地、穿过了每一片水域,在没有电子计算机的年代用手摇的机械计算机进行坐标计算。整整一个夏天三个多月的野外测量经历,对于一群刚20出头的孩子们来说是一场巨大的挑战,不仅要克服测量方面的技术困难,还要应付水土不服和炎热高温带来的身体不适。但他们不畏困难坚持了下来,完成了中国历史上第一条富春江航道图的绘制工作。项目结束之后,在桐庐的富春江边码头上,栾跃作为班长代表全班在水泥地上埋进彩色玻璃,记录下航校航道班这群小伙子们的经历和贡献作为留念。栾跃说这是一段非常值得怀念和有意义的人生经历,他永远都不会忘记。

留学美国,学习自动化控制

高考恢复以后,跟当时大多数期盼升学的青年一样,栾跃也参加了考试。因为喜欢画画,他去报考了北京解放军艺术学院的油画系。但接下来发生的事情让他很恼火。他先收到一个通过考试的通知,接着又收到一份不能入学的通知,因为教育部有政策说,学了工科技校背景的人不能报考艺术专业,只有等工作满5年后才有资格报考。栾跃虽然心有不甘甚至给当时的教育部长去信试图说服修改政策,终究不能如愿。由于他读大学心切,于是通过亲戚的关系去了美国留学,学习电机工程的自动化控制专业。栾跃毕业后在美国的科技领域工作至今。

从硬件和系统开发到软件开发

职业生涯的前十年,栾跃是在美国的重工业领域度过的,为美国最大的玻璃瓶和铝制品公司的生产线开发计算机自动控制系统。因为自控系统用到越来越多的软件,他去了西门子公司从事软件的开发,职业就慢慢地从硬件和系统开发转到了软件开发的领域。90年代中期,他去了摩托罗拉从事通信设备的开发。1998年,他被微软聘用,从事软件开发的项目管理。

enter image description here
(左) 栾跃参与开发的90年代中期摩托罗拉的双向呼叫机PageWriter2000
(右) 1998-2000年栾跃所负责开发和发布项目管理的微软ActiveSync产品

enter image description here
2000年栾跃负责开发项目管理的微软第一代嵌入式操作系统Windows XP Embedded

真正接触并掌握软件开发管理经验是在进入微软工作以后。在微软的前六年里,作为产品开发的项目经理,他负责整个产品的设计和发布流程,从写产品设计规范书,到带领开发团队完成开发和产品发布,他为微软完成了ActiveSync和Windows Embedded两个产品的开发和发布。在微软总部的园区里面有一个产品纪念园,地上埋着微软各个产品的纪念牌。很多年后,栾跃作为微软中国事物办公室的经理在微软总部接待了大批到访的中国用户和政府领导,他都会带他们去参观这个产品纪念园,指着很多纪念牌说,这里只有两个纪念牌值得你们看,一个是微软的第一个产品,由Bill Gates主持开发的MS DOS 1.0, 另外一个就是我这个Bill(栾跃的英文名字也是Bill)开发的ActiveSync。中国的访客们都会哈哈大笑着和ActiveSync纪念牌合影。栾跃说,在微软中国事物办公室的工作经历当中,最有意思的是2006年亲自组织了欢迎胡锦涛主席和中国政府领导一行参观微软总部的欢迎仪式以及在比尔盖茨家的欢迎晚宴。

enter image description here
栾跃带领来访的中国政府代表团参观微软总部的产品纪念园和ActiveSync产品发布的纪念牌

2002年起,受到微软中国部门的邀请,栾跃每年回国会在微软的TechEd技术大会上向中国的开发者们分享他在微软的项目管理经验。由于他的演讲课程受到听众的喜爱,他意识到应该把这个经验向中国的软件开发业界做详细地介绍。于是经过两年多的业余写作,2005年他在国内出版了《软件开发项目管理》一书。出版之后,该书受到业界的关注,火爆一时。

enter image description here
栾跃在2004年的微软TechEd技术大会上向中国开发者分享软件开发项目管理经验

enter image description here
在微软总部接待来自中国企业的领导(左)、以及为信产部领导(中)和商务部领导(右)介绍微软未来之家新技术展示

谷歌技术在中国的推广

在微软工作十年之后,2008年他受聘于谷歌公司,作为谷歌开发技术推广部大中华区的主管,专门负责谷歌众多开发技术和开源技术在中国的推广工作,期间还被派回国分别在北京和上海工作过两年。栾跃说,时间真快,一眨眼在谷歌都工作快十年了。在这些年间栾跃组织过多次的技术分享大会,包括2009、2011、2016年的谷歌技术大会GDD,以及很多专门针对某个技术的深度分享,包括Android Developer Lab、网络开发技术PWA、AMP、谷歌地图、人工智能技术TensorFlow、智能设备技术Android Things等技术的应用开发技术分享,参会者和受众群体在万人之上。

enter image description here

enter image description here

enter image description here
在2009年(上)和2011年(中)的谷歌开发技术大会北京分会场上做主题演讲,和广州分会场的参会者们(下)

这些年来,栾跃还热心地组织开发者社区推动技术分享。从2009年开始建立了中国的第一个社区,北京的谷歌开发者社区GDG之后,他逐步在全国各地物色和吸引热心于技术学习的志愿者们,赞助他们建立了目前已经遍布于全国27个城市、好几万成员的中国GDG社区。这些社区由一大群热心技术分享的志愿者们领导,每个月都举办众多的技术分享活动。现在全国的GDG社区每年举办三百多场技术分享和开发活动,极大地推动了开放型技术在中国互联网业界的使用。

enter image description here
历史性的一天:中国第一个谷歌开发者社区北京GDG于2009年8月1日成立,目前已经是一个具有两千多成员的巨大技术社区

enter image description here
参加2015年全国谷歌开发者社区组织者高峰会议的全国GDG的组织者们

中国的开发者接轨世界

由于谷歌开发技术在全球都有大量的开发者和企业使用,谷歌开发技术推广部门因此也接触了全球大量的开发者。国际开发者们吸收新型技术进行创新的敏感度和速度,让栾跃充分体会到帮助中国的开发者们及时了解国际创新和技术发展趋势的重要性。通过自己部门的赞助,栾跃努力把越来越多的中国开发者带到谷歌的全球年度技术大会Google IO去参会、第一时间接触和了解最新技术的发展以及看到国际上其它国家开发者的创新。从2011年仅仅六位中国GDG组织者的参会,到去年他们赞助超过一百位组织者和各个项目的合作伙伴的参加,栾跃对这个发展趋势和努力的结果颇感欣慰。他说,越来越多的中国开发者及时了解最新技术的发展,对中国业界的自我发展和对中国的创新和经济建设,好处和意义是巨大的。“把你们的创新带向世界”成为栾跃和他的中国团队的努力方向和口号。最近两年来,栾跃和他的中国团队组织了学习Android移动技术开发、通过Google Play发布平台把应用发布到国际市场上去的学习班Study Jams。来自全国各地的几千名专业人员,通过培训开发出自己的第一个移动应用并发布到全球市场上。

enter image description here
谷歌开发技术推广部在中国组织和赞助的Study Jams活动

enter image description here
接轨世界的热情:栾跃拍摄的中国各地GDG组织者们参加谷歌全球年度的GDG社区组织者高峰会议

呼吁和鼓励更多的女性加入到技术开发行列

说到这次的“女性科技体验节”活动,栾跃介绍说,其实在谷歌全球的开发者社区GDG项目中,已经好几年在推广鼓励女性学习开发技术了。“我们有一个全球的项目叫作Women Techmaker (女性技术创客),简称WTM,就是鼓励和推动女性学习开发技术、利用技术和创新去开辟和发展自己的职业人生”。这个WTM项目在中国的GDG社区也一直在推动,每年的三八国际妇女节,全中国的GDG社区和全球一百多个国家几百个GDG社区一起,同步举办WTM活动,鼓励女性学习开发技术。栾跃说,中国各地GDG社区的组织者们很有创意,为了鼓励女性成员来参加,有的为每位女性参加者送上一朵玫瑰花、有的制作很多女性喜欢的小礼物,还有一个社区让女性参会者们都坐在会场中央、带男朋友来参加的还有特别奖。分享的讲师们都是女性开发者、创业者、企业经理等,她们的榜样鼓励了很多人。

enter image description here
enter image description here
中国各地GDG组织的WTM活动剪影

“WTM宣传和推广公平的技术开发和技术创新理念,不对任何人有歧视,更不能对女性有偏见。”在互联网技术行业,普遍存在对女性的错误认识。这些固有偏见是导致现实中女性技术开发者占比小、难以拔尖的根本原因。谷歌希望在通过WTM的推广,在世界范围内提升一种认知度,鼓励女性从行动上加入这个阵营。栾跃解释说,全球很多国家的文化和传统有一种偏见,就是认为女性是不适合学习开发技术的。中国也不例外,从大学计算机专业的女性占比和业界开发者的性别比例就可以清楚地看到这个问题。其实这是由误解造成的,女性在技术学习和开发方面完全可以做到和男性一样,甚至在某些方面更优秀,比如在创意和产品设计方面、在开发项目管理的沟通方面,女性的能力经常优于男性而做得更好。

栾跃说,他想通过这个采访,呼吁和鼓励更多的女性加入到技术开发行列,写代码、做产品开发、做项目管理,等等。“高科技的发展会给开发行业带来大量的就业和创业的机会,这些机会不仅是职业发展的机会,更是高收入的机会,而这样的机会女性也应该争取和享受。这不仅是简单的性别公平的反映,也关系到社会财富的平衡分布和对创新发展的促进,所以意义重大。”


更多精彩,加入图灵访谈微信!

本文仅用于学习和交流目的,不得用于商业目的。非商业转载请注明作译者、出处,并保留本文的原始链接:http://www.ituring.com.cn/art...

查看原文

赞 2 收藏 0 评论 0

图灵访谈 分享了头条 · 2017-12-26

托瓦兹不是任何人的老板。他只是一个项目的负责人,而这个项目大约有1万名的代码贡献者,但他却没有雇佣和解雇的权力。他可能会伤害到你的感情,但仅此而已。

赞 0 收藏 2 评论 0

图灵访谈 分享了头条 · 2017-12-22

你也知道,托瓦兹不是任何人的老板。他只是一个项目的负责人,而这个项目大约有1万名的代码贡献者,但他却没有雇佣和解雇的权力。他可能会伤害到你的感情,但仅此而已。

赞 0 收藏 0 评论 0

图灵访谈 发布了文章 · 2017-12-22

作为老板,林纳斯·托瓦兹有多糟糕?

原文出自技术记者Steven J. Vaughan-Nichols的文章,原地址:https://www.computerworld.com...

点击,查看英文版

图片描述

作为老板,林纳斯·托瓦兹有多糟糕?

这要分情况来说。在软件开发的世界里,他的做法无可厚非。问题是,这种情况是否允许继续下去。

我认识Linux的发明者林纳斯·托瓦兹,已经有20多年了。我们不算是密友,但喜欢彼此。
最近,托瓦兹因为管理风格受到了很多的炮轰。他不愿意容忍愚蠢的人。在开发Linux内核这件事情上,他只有一种评判的方法:你的代码有多好?其他的都不重要。正如托瓦兹今年早些时候在linux.conf.au大会上说的,“我不是那种好相处的人,我也不在乎。我只关心技术和内核——这对我来说才是重要的。”

我现在倒是可以对付那种人了。如果你不能,就避免接触Linux内核开发社区吧,那里有许多这种精英式的思维方式。这并不是说,我认为Linux的一切都很完美,不用改变什么。精英式管理的社区,我可以接受;蔑视、不尊重女性,以男性为主导的堡垒,就是问题了。

这就是为什么我最近看到了关于托瓦兹管理风格的批评——或者更准确地说,他完全不关心人文关怀的管理方式——就像是软件开发领域的标准化操作程序。同时,我又看到了另外一个例子,说明事情真正地需要改变。

第一个情况出现在Linux 4.3版本发布的时候,托瓦兹用邮件列表对一个开发人员进行了猛烈攻击,他认为这个开发人员插入的代码——好吧,我们说“差劲的”。“生成了‘很差劲的’代码。它看起来很糟糕,没有任何理由。”他就用这样的方式持续了相当长一段时间。除了“废话”以及和它同义的词,他还经常用到“白痴”这个词。

不过,事情是这样的。托瓦兹是对的。我读了那段代码,确实写得很糟糕,而且似乎确实是为了使用新的overflow_usub()函数而使用的。

有些人认为,托瓦兹的这种谩骂说明他是一个坏脾气的恶霸。我却看到一个完美主义者,在他的领域里,无法容忍废话。许多人告诉我说,专业的程序员不应该这么做。我想问,你有和顶尖的开发者合作过吗?这就是他们的做事方式,在苹果、微软、甲骨文以及其他任何我认识的地方。我听说史蒂夫·乔布斯把一个开发人员都快撕成了碎片。一位Oracle的高级开发人员炮轰一屋子新程序员的时候,就像食人鱼穿过一群金鱼,我都害怕到蜷缩。

enter image description here

在《偶然帝国》这本书里,Robert X.Cringely 关于个人电脑崛起的经典著作,他描写了比尔•盖茨掌权时期的微软管理风格就像是一个系统,“每一层,从盖茨逐层向下,可以对下一级的人叫嚷、逼迫和羞辱。”啊,是的,这就是我认识并痛恨的微软。

大型私有软件公司里的高层和托瓦兹之间的区别在于,托瓦兹会当着全世界的面,说出一切。其他的人则是在会议室里私下做这件事。我听到有人说,如果托瓦兹在他们的公司,早被炒掉了。不,他会在现在的位置上,在编程世界之上。哦,还有另一个区别。如果你让,比如说,拉里·埃里森发怒了,你可以和你的工作吻别了。如果你的工作让托瓦兹愤怒了,他也只是在电子邮件里吼吼你,仅此而已。

你也知道,托瓦兹不是任何人的老板。他只是一个项目的负责人,而这个项目大约有1万名的代码贡献者,但他却没有雇佣和解雇的权力。他可能会伤害到你的感情,但仅此而已。

这就是说,无论是在开源还是专有的软件开发圈中,都存在一个严重的问题。不管你是一个多么优秀的程序员,如果你是位女性,这些对你是不利的。

没有比 Sarah Sharp 的例子更能说明这一点的。莎拉·夏普是因特尔的开发人员,她曾是一名顶尖的Linux程序员。去年10月,她在自己的博客上发表了一篇文章,解释了为什么她在一年多前停止了对Linux内核的贡献:“我终于意识到,我不能再为一个在技术上我尊重,却得不到尊重的社区服务了......我不想跟那些随意使用隐形性别歧视和同性恋歧视笑话的人一起工作。”

enter image description here

谁又能责怪她呢?我不能。托瓦兹,就像我所认识的几乎所有的软件管理人员一样,我很抱歉,默许了一个充满敌意的工作环境。

他可能会说,确保Linux贡献者的行为和他们之间的相互尊重并不是他的职责。他只关心代码,除了代码再无其他。

夏普在博客里写道:

我非常尊重Linux内核社区的技术努力。他们已经扩展并发展了一个项目,专注于维护一些最高的编码标准。对技术卓越的关注,加上过多的维护人员,以及不同文化和社会规范的背景,意味着Linux内核的维护人员常常以粗暴、粗鲁或是残忍地方式完成他们的工作。顶级的Linux内核开发人员经常互相吼叫,纠正彼此的行为。这不是一种适合我的交流方式。......很多高级的Linux内核开发人员认同维护人员在技术和人性方面的残酷。即使他们本身是很好的人,却不希望看到Linux内核社区交流方式的改变。

她是对的。

与其他观察者相比,我不认为这个问题是Linux或是整个开源社区独有的。我在科技行业工作了五年,作为一名科技记者,我也已经工作了25年,任何地方都能看到这种不成熟的男孩行为。

这不是托瓦兹的错。他是一个有远见的技术领导者,却不是优秀的管理者。真正的问题是,在软件开发领域几乎没有人能为团队和社区设置一种相互支持的基调。

未来,我希望像Linux基金会这样的公司和组织能够找到一种方法,赋予社区管理者或其他管理者一定的权利,去引导和规范成员的行为。不幸的是,在纯技术或商业领袖身上,我们不会发现这种管理技巧。这不是他们的DNA。


更多精彩,加入图灵访谈微信!

查看原文

赞 1 收藏 2 评论 0

图灵访谈 发布了文章 · 2017-11-29

Hulu(北京)推荐算法负责人周涵宁:怎样应对基于深度学习的视频推荐系统

本文仅用于学习和交流目的,不得用于商业目的。非商业转载请注明作译者、出处,并保留本文的原始链接:http://www.ituring.com.cn/art...

图片描述

周涵宁,本科毕业于清华大学自动化系,于美国伊利诺伊大学香槟分校获得计算机视觉领域博士学位。

曾担任富士施乐硅谷研究中心研究员、亚马逊总部高级技术经理、盛大创新院资深研究员兼产品经理、智谷研发VP和宝宝树的CTO等。

现任Hulu北京研发中心研究推荐算法研究负责人(Hulu是全美第二大付费在线视频平台)。具有15年的产品研发、创新和团队管理经验,专注于实现应用数据和算法从0到1的产品落地,在数据分析和机器学习方面有丰富的经验。


访谈话题:

为什么从自动化专业转向了人工智能方向(计算机视觉)?您在研究方向的选择上,会考虑哪些因素?

我们学校的自动化专业下面有一个方向叫作模式识别,它是人工智能的一个应用领域。我举一个模式识别在工业界的应用,比如应用图像传感器做自动化质量检测,就是一个人工智能落地的场景。美国硅谷有一家叫KLA-Tencor的上市公司,他们的主要产品就是基于无损探测器(包括光学传感器)进行硅片自动质检。另外,指纹识别和光学字符识别(OCR)也是模式识别的范畴。它们都和计算机视觉有很强的联系。

选择计算机视觉作为研究方向,除了在自动化系的基础训练,还有一个重要因素是实习经历。我在大三的时候,到微软中国研究院(现在叫微软亚洲研究院)实习。当时研究院的主攻方向是计算机视觉和多媒体技术,每几周都会有相关的国际专家来交流讲座,其中包括我后来追随的博士导师,计算机视觉领域的开山鼻祖,UIUC大学的黄煦涛教授。我当时做的项目之一是基于多张图片的三维场景重建。耳濡目染,我对计算机视觉领域产生了浓厚的兴趣。

自动化跟智能化的区别是什么?

传统的自动化主要是以相对固定的模式,处理相对简单的场景。智能化则具有人的感知、决策和逻辑能力,可以更加灵活多变的处理各种复杂场景。举例来说,如果在Outlook里设置了一个日历事件,下午4点要开会,那么电脑到了下午3:45的时候就会弹出一个事件提醒,这叫作自动化。如果电脑根据你当时的位置、路上的交通状况和附近的空闲出租车状态,自动计算出从你所在的位置叫出租车再行驶到会场需要花费37分钟,然后在3:22 PM的时候帮你填好预约出租车的订单。你只需点一下确认按钮,就可以收拾好笔记本出门了。这就叫智能化。

随着各种智能算法可靠性的提高,它们逐渐融入到人们的日常生活,这些传统意义上的"智能化",也慢慢变成了"自动化"。例如,垃圾邮件过滤和拼音联想输入,都用到了基于机器学习的智能算法,但是人们对这类产品的预期也相应的提高了,不再认为这些功能是很"智能"的了。

要在工作中运用机器学习方面的技术,普通程序员需要如何准备?

主要是补充线性代数、凸优化和概率统计方面的知识。相比传统算法,机器学习算法的最大不同之处是它的执行步骤和参数,不是由程序员人工设定的固定组合,而是基于训练样本学习到的概率模型。要理解各种机器学习方法的优缺点,能够将当前应用的场景,抽象成经典的机器学习问题。

例如,Hulu视频App的首页推荐,之前是按照产品经理手工定义的几类不同内容来源来排列展示的优先级,然后再对相同优先级的内容,按照首播时间、最近热度等因素排序。这就是典型的面向传统编程模式的设计。新版App的首页排序正在向基于机器学习的数据驱动算法转变。我们根据点击率预估进行排序,其中的点击率预测模型训练,会参考产品经理给出的首播时间、最近热度等特征,但是会基于在线学习的框架,自动根据用户的场景不同而动态调整各个特征的权重。

从职业履历来看,您既做过技术研发也做过团队管理,更喜欢哪个方向?

从个人层面上,我觉得技术研发更有成就感,因为专注和沉浸在解决问题的过程中,是一件很享受的事。做技术研发也对自己的时间和精力有更好的掌控感。相比之下,团队管理者需要有牺牲小我、成就团队的胸怀。我读过一本很好的书——Leaders Eat Last,讲的就是这个意思。同时,还需要具备较高的情商和同理心,才能处理好承上启下的沟通,这方面我推荐大家读阿德勒写的《沟通的艺术》。

对于程序员来讲,哪个能力(技术vs管理)更重要?获得这样的能力,需要如何准备?

技术是立身之本,没有这个基础就不能成为一名合格的程序员。如果想要不断地提高自己的能力,解决更大的难题,即使不戴管理的头衔,也还是要掌握一些管理方面的知识。如何推进项目,如何说服他人,如何与其他团队沟通,等等。获得这些技能,我们需要运用“一万小时定律”循序渐进地进行有意训练:首先掌握一定的理论知识,这里我推荐看《高效能人士的七个习惯》;然后在实际工作中去运用,体会哪些方法是适合自己性格的。如果在这个"术"的层面训练到了一定的程度,就可以尝试上升到“道”的层面,就是找到自己最擅长和最认同的事业,并运用之前学到的“术”,在助人的过程中实现自己的人生价值。

Hulu这个名字跟汉字的关系很大,背后的故事是什么?

Hulu成立于2007年,当时的创始团队中就有华人,他们建议用汉字“葫芦”的汉语拼音来命名这家公司。因为Hulu希望以优质的视频内容吸引用户,让用户产生好奇心——“葫芦里卖的什么药”,并用个性化推荐引导用户发现更多内容。

Hulu未来会进入中国市场吗?跟国内的视频网站相比,Hulu有哪些优势特点?

Hulu目前只在美国运营,领导层会根据市场和用户的需求,评估Hulu国际化的战略。与国内视频网站相比,Hulu拥有更多的美剧资源,今年还推出了电视直播业务,用户可以在全平台随时看到50多个电视台正在播放的内容,包括体育实况、新闻等时效性很强的节目。

推荐系统对于视频网站的重要性是怎样的?

推荐系统,从更广的意义来讲,属于个性化系统,它是线上分发渠道相比线下渠道(例如,院线和传统电视台等渠道)的最显著技术优势,是视频网站的核心竞争力。它可以用来引导用户发现新内容,提高用户活跃度和粘性。

客制化可以有几个层级,个性化是其中最细致的一层。在个性化之上,可以按照粗略的用户分组来实现客制化。对于25~30岁这个年龄段的所有女性用户,我们可以使用同一排序模型。在客制化的基础上,可以叠加针对每个用户的个性化特征。如果把推荐系统看成是函数 y = A(x),其中x是关于每个用户的特征,y是输出的推荐结果,那么分组客制化,就是把A(.)函数针对不同组的x分别训练,然后利用集成学习(ensemble learning)整合。

如何衡量一个推荐系统是否优秀?

从业务上讲,用户的观看时长和订阅数可以间接反映推荐系统的有效性。但是,这两个指标会受到内容库和市场推广周期的影响。例如,新的爆款剧《冰与火之歌》第七季上线后,会在短时间内带来大量新的订阅用户,并且大幅度地提升用户的观看时长,但是一两周以后,这些指标就会逐渐回落。而在整个期间,推荐算法本身的质量并没有变化。

我们不仅需要根据业务指标来衡量推荐系统,还要参考一些直接的度量标准,比如点击率、多样性、内容覆盖率等。要想获得这些直接的度量指标,开发人员需要和业务部门沟通和讨论,根据他们的反馈做出调整。有的产品强调方便性,我们就要尽量缩短用户从浏览到观看花费的时间,而有的产品是为了给用户提供更多的选择,希望用户浏览尽量多的内容,我们就需要对它们各自定义不同的指标。

以某个场景为例,说明一下基于深度学习的视频推荐系统相比传统推荐系统的优势?

以特征选择为例,深度学习中的非线性映射(利用激活函数的非线性),自动化了特征选择的步骤,使得我们可以更容易地整合多种信息源。传统上基于用户行为的协同滤波和基于内容元数据的系统,则是分开训练两个模型,然后将结果融合在一起的。但是,这样很难将融合过程中观察到的误差传递到分开训练的两个模型的过程中。深度学习提供了一个端到端的框架,使得我们可以用同一个网络结构来将用户行为和内容元数据一起映射到用户-物品相关性评分的学习中。

在11月9~12日的TOP100summit2017上,您分享的哪些内容是值得关注的?

我着重介绍了Hulu利用多臂老虎机来平衡热门和长尾内容的展现,以及用循环神经网络模型做序列推荐的成果。前者可以更有效的利用有限的展示位来做长尾内容的冷启动,后者是对自动连播场景的一种比较有效的建模方法。

基于深度学习的视频推荐系统,下一步的发展是怎样的?

  • 中短期的规划主要是基于内容的推荐,解决冷启动问题。

视频网站的核心价值是对内容的理解。基于用户行为的相关内容分析,已经到了比较成熟的阶段,接下来的主要挑战是对新内容和中长尾内容的冷启动。目前,现有的方法依赖于人工标签,存在一定的局限性,随着计算机视觉技术的发展,未来将会有越来越多的系统是基于内容理解来自动打标签。

  • 长期的规划是,基于自然语言对话进行内容的推荐。

智能助手的应用是一个很有潜力的发展方向。例如,我晚上回到家,对电视说“我今天心情低落”,电视就会推荐一些治愈系的影视作品。如果我接着说“我想看点搞笑的”,它就会在之前推荐的基础上,筛选出喜剧。这个场景虽然看似简单,却涉及复杂的情感类语义标签和多轮对话之间的上下文关联。


更多精彩,加入图灵访谈微信!

查看原文

赞 1 收藏 1 评论 0

图灵访谈 分享了头条 · 2017-11-29

访谈之前,我曾多次央求codedump给我一张照片,用于简介部分的介绍。如他所愿,不管是派人偷拍还是全网开搜,我都没有得到也不可能找到一张照片。所以,就有了这样一篇没有嘉宾图片的访谈文章。

赞 0 收藏 1 评论 0

图灵访谈 发布了文章 · 2017-11-29

《Lua设计与实现》的作者codedump:学习也要讲究性价比

本文仅用于学习和交流目的,不得用于商业目的。非商业转载请注明作译者、出处,并保留本文的原始链接:http://www.ituring.com.cn/art...

导读:

访谈之前,我曾多次央求codedump给我一张照片,用于简介部分的介绍。如他所愿,不管是派人偷拍还是全网开搜,我都没有得到也不可能找到一张照片。所以,就有了这样一篇没有嘉宾图片的访谈文章。

我想,这大概就是技术型人才的“通病”吧。低调、务实、有干货!

不过,我还是知道了codedump笔名掩盖下的真身,他被Lua吸引的原因,研究Lua的方法,Lua的优势以及Lua的编译原理,等等。

好了,还是你们自己开阅吧~

访谈嘉宾:

codedump,一线开发人员,长期从事互联网后端服务的开发工作。

他曾经在网易等公司从事游戏服务器后台开发,因为工作需要,使用C++编写服务核心引擎和使用Lua脚本编写游戏逻辑的技术组合,之后开始对Lua产生浓厚的兴趣。他不断地研究Lua的实现原理,并且陆续公布在网络上:www.codedump.info。

codedump多年的努力,最终以纸质图书的形式——《Lua设计与实现》呈现给了大家。

图片描述

访谈话题:

越想做好一件事,心理负担就越大
接下这件事之后,我的心理负担变得很大。如果成为正式的出版物,读者是要真金白银地花钱来买的,我希望尽量做好,不辜负别人的期望。

为什么使用codedump这个笔名?有什么特殊的含义?

codedump是我自己造的单词,其实是code和dump这两个单词的组合。我很喜欢深入到代码层面去了解一些项目的运作原理,也就是把code给dump出来,所以就起了这个名字。总是会有人把它错看成coredump,话说哪有程序员用这个名字咒自己的。(笑)

写作《Lua设计与实现》的时候,最大的困难是什么?

写作过程中,主要有两方面的困难。

一方面是技术上的。最大的问题是,Lua解释器解析Lua文件、生成Lua Opcode的过程中,涉及一些编译原理的知识。另外,Lua为了效率其实是一次遍历的,也就是说,只分析一遍源文件就生成Opcode。虽然性能提升了很多,但是对于(当时基础不太好的)我来说就有不小的困难。

这方面的分析文档比较少,因为大部分Lua分析的文档集中在虚拟机本身的结构和运作上,涉及Lua解释器解析过程的文档太少了。后来,我找到了调试分析的办法,也就是像书里分析的那样:每分析一种类型的指令时,就以一段简单的Lua来具体分析,同时把握住分析的几个关键函数,如luaK_code和luaV_execute,慢慢地自己也就啃下来了。从我的角度来看,这部分的内容仍然不是很满意。如果精力允许,我希望可以继续这方面的研究。

另一方面的困难是心理上的。编辑王军花看到了我在Github上公开的文档,通过邮件找到我,希望把内容整理成书出版。等接下这件事之后,我的心理负担变得很大。如果成为正式的出版物,读者是要真金白银地花钱来买的,我希望尽量做好,不辜负别人的期望。

越想做好一件事,心理负担就越大。加上工作、家庭等因素,写作会被打断,重新捡起来又需要更多的时间和精力。因为觉得有些章节写得不够好,我一度有放弃这次出版计划的打算,还好编辑王军花有足够的耐心,才把这个差点半途而废的事情坚持做完了。

从最开始简单地写一些东西,到最后和出版社合作、和网上的朋友合作等,这些都是很好的经历。

你认为,书中哪部分最重要,为什么重要?

哪些部分“最重要”,其实还要看个人的需求。不过,我认为,应该了解Lua栈和虚拟机的一些原理,比如代码是如何先分析再到虚拟机中执行的,比如Opcode是如何组织在Lua栈中的。这部分的内容可以在书中的第五章找到,因为明白了这些知识会对理解代码的生成有帮助。

学习也要讲究性价比
接触Lua时,我发现Lua 5.1.4版本的代码量只有不到两万行。对于一个世界级同时在业界大量使用的脚本语言,这样的代码量确实性价比太高。

为什么对Lua产生浓厚的兴趣,谈一谈对Lua产生兴趣的缘由?

接触Lua时,我发现Lua 5.1.4版本的代码量只有不到两万行。对于一个世界级同时在业界大量使用的脚本语言,这样的代码量确实性价比太高。加上,我一直对如何实现一门语言很感兴趣,所以就坚持着学习了下来。我发现Lua的代码组织形式精干简洁,几乎没有冗余。相比Nginx,我认为Lua才是最好的C语言项目。

另外,我在Lua身上看到了一种别样的编程语言设计哲学。Lua从来没有追求过要做一门号称“可以解决所有问题”的语言,它对自己的定位就是辅助型的语言,这样的出发点也决定了它的特点——小巧、性能高、可扩展性强。

跟Python、Ruby这样的语言相比,Lua有哪些特点?更适合解决哪类的问题?

Python、Ruby的定位是全能型的语言,即它们可以独立完成一些工作。而Lua的定位是传球者、助攻者,它需要借助宿主语言,辅助宿主语言解决问题。

根据我之前从事网络游戏服务器开发的经验来看,Lua更适合运用在既需要高性能又需要灵活性的情况下。我们可以采用C、C++这样的编译型语言实现核心的模块,如网络、数据库操作等,同时提供接口给Lua层进行调用,在需要灵活实现的业务层用Lua代码来实现。

讨论Lua解决技术问题的时候,你想到的、最佳的实际例子是什么?

OpenResty,这个项目在章亦春(网名agentzh,OpenResty项目的发起人)的带领下,已经取得了巨大的成功。它的架构正是我前面提到的:使用高性能的编译型语言实现底层,同时给业务编写提供Lua接口。经过这些年的发展,OpenResty已经越来越像一个平台化的软件,开发人员不需要自己写底层的C代码,使用Nginx配置文件和Lua脚本就能驱动Nginx来完成业务。

另外,OpenResty把Lua的协程很好地使用了起来,以同步的方式来写业务代码,避免了异步回调的问题。做过高并发服务器的人都知道,事件驱动加异步回调是常用的手段,但是回调层次多了,又会让代码逻辑变得支离破碎,这些痛点就是协程类技术最好的发挥场所了。当然,这很大方面也得益于Lua的精简和高效。试想如果根据OpenResty的设计,每个链接就创建一个对应的Lua协程,那成本是很大的。

除了游戏、扩展数据库插件等方面,Lua适合开发Web应用吗?

前面提到的OpenResty就是基于Web服务器的例子。但是,好像现在还没有看到很流行的Web框架是使用Lua编写的。

简单介绍下Lua的编译原理?

Lua使用最简单的递归下降的分析方式,只需要扫描一遍Lua源文件,就生成Lua虚拟机执行所用的OpCode。原理本身并不难,只要能够清楚一些编译前端的知识就可以阅读Lua源码了,只是由于Lua对性能的追求,所以代码写得很精简,需要结合具体代码的生成过程去理解。我在生成代码那一章也是这样,一个一个例子逐渐展开来分析这一过程的。

回头看你自己学习Lua的这一段历程,哪部分是最耗费精力的?

其实,前面已经提到了,Lua分析代码生成Opcode的过程是最耗费精力的。GC部分也是难度比较大的,但是因为云风写的关于“Lua GC分析”的系列文章,难度会相对减少很多。

平民化的资本,构建出庞大的网络世界
编程跟数学的特点很像,只需要有一台可以编程的电脑就能构建起虚拟的世界。它对场地设备的要求也还算比较平民化,更多的是需要抽象和逻辑思维能力,这对我而言是相对简单的。

听说你并非科班出身,为什么会选择进入编程这一行?

虽然我读的是理科,但是对于需要自己动手做实验的学科,如化学、物理,却并不擅长。像数学这样的只需要纸和笔就能完成的科目,我学得还不错。编程跟数学的特点很像,只需要有一台可以编程的电脑就能构建起虚拟的世界。它对场地设备的要求也还算比较平民化,更多的是需要抽象和逻辑思维能力,这对我而言是相对简单的。

DOOM之父卡马克有一个类似的说法,“在信息时代,进入编程领域的壁垒完全不存在了。即使有也是自我强加的。如果你想着手去开发一些全新的东西,不需要数百万美元的资本。你只需要足够的比萨和健怡可乐存在冰箱里,有一台便宜的PC用于工作,以及让你坚持下来的奉献精神。”

如果不能走得比别人快,那就尽量走得比别人远一点、长一点
实际上,很多开发人员遇到的,比如中年危机,比如面对新知识的焦虑,等等,我也有一样的困惑。目前能想到的不多,只是确定自己是喜欢技术的,愿意一直在技术的道路上走下去的。

你平时很喜欢写作,记录技术学习的点滴。写作是你的技术学习方法吗?

最开始写博客记录技术学习的时候,是想在整理思路的前提下,能够和其他同行分享一些知识。如果能把一个知识点用简洁清晰的语言写出来,让别人看懂,才能说明我的理解很到位。

写技术类文章的时候,我建议首先把原理和问题解释清楚,然后才解释具体的数据结构和伪代码的算法,最后才是具体的代码。我不建议大量地贴代码,因为可能当时你懂了,等过段时间后你就不懂了。决定写Lua源码分析的文章,我也是坚持这个初衷和方式。最开始的时候,我并没有想到能以纸书的形式呈现,回过头来看,以前做过的积累才是最重要的。

技术学习的过程中,最重要的三点是什么?

首先还是得有兴趣吧,没有兴趣的话,事情做起来别扭。其次是善于归纳和总结知识,写博客、技术文章,尝试向别人解释清楚一个知识点,时常整理知识点,跟以前学过的东西串联起来。最后应该就是不断提高自己解决问题的思路、能力等。出现了问题不是大事,问题是出了问题之后自己能否解决、能否从里面学到东西。

你对自己未来的技术之路,是怎么规划的?

这个问题太大了,实在回答不了太多。实际上,很多开发人员遇到的,比如中年危机,比如面对新知识的焦虑,等等,我也有一样的困惑。目前能想到的不多,只是确定自己是喜欢技术的,愿意一直在技术的道路上走下去的。然后找对适合自己的技术方向,走好眼前的路吧。

如果不能走得比别人快,那就尽量走得比别人远一点、长一点吧。当然,做到这些的大前提,还是身心的健康。


更多精彩,加入图灵访谈微信!

查看原文

赞 1 收藏 3 评论 0

图灵访谈 分享了头条 · 2017-10-23

真正有效的图表如同故事一样,是可以产生某些寓意的。数据可以让受众做出某种反应,在受众与数据展示人之间形成富有成效的对话。

赞 0 收藏 0 评论 0

认证与成就

  • 获得 327 次点赞
  • 获得 3 枚徽章 获得 0 枚金徽章, 获得 1 枚银徽章, 获得 2 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2014-12-03
个人主页被 2.8k 人浏览