Go 语言狂人许式伟:编程的意义就是让世界变得有趣一些

Posted InfoQ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go 语言狂人许式伟:编程的意义就是让世界变得有趣一些相关的知识,希望对你有一定的参考价值。

如果要用贴标签的方式快速认识他的话,大概可以这样说:他是中学时代的奥数竞赛狂人,大学时代的 C 语言狂人,创业圈子里的存储狂人和 Go 语言狂人,以及一位教儿子学编程的父亲。本次《初心》的讲述者,他的名字叫做——

《初心》十集技术人物纪录片 | 第九集

由  InfoQ 二叉树 出品
许式伟,七牛云 CEO。2000 年加入金山,同年毕业于南京大学物理系。2002 年任 WPS 首席架构师,主导 WPS 2005 的研发。2006 年建立金山实验室。2009 年在盛大创新院发起祥云计划。2011 年创办七牛云存储。

我们的使命其实很简单,一句话就是:释放社会的创新力。

创新力的释放其实是有前提的,如果整个社会的创新环境不好,创新力是没办法释放的。影响创新的根源有哪些呢?一个是基础设施,就是云;第二个就是教育。所以我最想做的事情也是这两件事,一个是云计算,一个是教育。

Go 语言狂人许式伟:编程的意义就是让世界变得有趣一些

我一直并不觉得大人是聪明的。现在大部分家长其实都是不明智的,大家拼命的往小孩脑袋里面塞各种各样的东西。其实你真要去让你的小孩在社会有适应性的话,请你还是要想一下未来是什么样子的。未来 10 年 20 年的时候,整个社会是什么样子?只有你明白了那个时候是什么样子的,你才能够想象说,你现在能够教会小孩什么样的东西,去让他能适应那个状态的社会。

所以我为什么教小孩学编程,其实最朴素的一个点是什么呢?我认为站在 20 年后的小孩,其实他不懂编程是跟文盲是没有区别的。

我就从 Scratch 开始。这个语言我一看就惊呆了,我觉得这就是我想要的东西,它能让一个只有五六岁的小孩能够去编程。后来我发现其实还有 Google 的 Blockly,都很有趣。观察他们学习的时候,和学数学和学英语的状态是完全不一样的,他会期待说我下一次要继续学,我觉得这才是真正意义上的教育的革新。

反观我在大学,为什么会那么狂热的去学电脑上的东西?我反思了一下,其实最核心的一点就是反馈。人为什么喜欢玩游戏,就是因为游戏的反馈特别短,你刚付出了一个努力,你立刻就得到了收获,对吧?计算机也是一样的。

Go 语言狂人许式伟:编程的意义就是让世界变得有趣一些

第一次接触电脑,其实高中时就已经有接触了,但那时候一年可能最多能够碰个三四次,打开电脑以后就进入一个 Basic 环境。但哪怕是这么简陋的环境,我当时也挺着迷的。

一进大学就更加不可收拾,发现比我以前理解的电脑能做的事情多多了。老师特别推崇 C 语言,我就自己去找 C 语言的材料,把我们学校图书馆的计算机类的书基本上全翻过了。我的第一个 C 程序就已经到上千行这种规模,做 doskey。

后来我又去做一些好玩的,像分形什么的。分形是一个边缘的学科,介于数学和图形学、计算机之间,它是一种图形的生成系统,比如说一棵树,你可以用一个很简单的算法,可能就是五六个数据点,就能够快速的生成看起来和现实生活中很像的一棵树。还有就是朱丽亚集,是说一个函数有多么漂亮,就是你研究一个很普通的数学函数的话,你会发现它其实可以画出很多自相似性的这种细节。我当时就把分形学我看到的这些 L 系统、IFS、朱丽亚集这些全部都写成程序,然后做了一个分形的集合 demo。

就是觉得好玩。我觉得其实着迷计算机是有原因的,最核心的就是它真的让你能够感觉说你在创造一个世界。这种感觉和你学数学学物理,你发现这都是很有用的知识,但是这些知识能干嘛?不知道。所以它对人的魅力也是不一样的。

Go 语言狂人许式伟:编程的意义就是让世界变得有趣一些

我是学物理的,然后我觉得计算机很好,我就很清楚说我未来一定是做计算机相关的事情,就想考计算机的硕士。其实我考硕士的考试费用都交了,但是我最后没有去考,因为当时金山来我们学校招聘。我大学的班长说觉得金山挺适合我的,他说如果你要考物理系或者其他任何系的研究生,他都觉得挺不错的,但是计算机是一个实践的科学,所以读计算机的硕士其实是没有在公司进步要快的。

我当时一听,觉得他这句话说得非常对。当时也没准备简历,我就立刻手写了一份简历投上去了,最后也获得了考试的机会。

考完以后自我感觉非常好,觉得他们出的题目挺有深度的,大部分人如果说对语言背后的机理不了解的话,很容易答错。我其实是在大学时候自己尝试去写一个 C++ 的编译器,当时是没有成功了,但这个经历对我的收获还是很大的,我基本上所有的语法特性都想过如果让我来实现,我会怎么实现。所以金山那个考题我就很自信,觉得自己一定能被录取上。

Go 语言狂人许式伟:编程的意义就是让世界变得有趣一些

我应该是 2 月份左右就过去实习了,相当于大学最后一段时间是在金山度过的,毕业论文也是在金山写的,论文虽然跟在金山的工作没关系,但也是计算机相关的,讲的是如何自己去做一个图形库。当时 Windows 还刚出来,我就很想去自己做一个图形界面,代码量还是非常多的。

我之前的人用序列化做读盘存盘,但我认为序列化系统是有缺陷的。它的好处是做事情特别快,几行代码就能把读盘存盘写完了,但它最大的缺陷就是版本兼容很差,就是说后来版本的 WPS 存下来的文件,以前的版本是打不开的。这对于一个 Office 软件在我看来是致命的,就是你的用户被迫要跟随着你升级,这会制约很多东西,用户和用户之间交互文档就很麻烦。所以我当时就琢磨说怎样做一个存盘读盘的系统是能够做到版本比较优雅的兼容。

另外一个有意思的挑战,就是我留意了一下微软的 Office,它有一个特点就是存盘特别快,但是我们就做不到这一点,因为我们一存盘就是完整的存盘,就会比较慢。

这些东西我都会想很多,然后就越做越有意思。后来其实反过来想,存盘读盘对一个 Office 软件其实是一个核心系统。因为第一,你的资产其实是用户留下来的文档,根本就不是这些工具;还有一个,它是触及数据的,而数据是一个软件的灵魂。

所以我当时经常会把微软 Office 的读盘存盘格式分析透了,然后介绍给同事去听,听完之后反而会影响他们的功能设计,因为你了解数据结构,基本上对手的思路就很清楚。

我做的第一个版本是 WPS 2001,口号是“不一样的 Office”,然后 WPS 2002 的话,口号就变成了“一样的 Office”。所以大家也明白了,其实你只有先做到了内部核心的一样,你才能做到不一样。如果你连微软的资产都不兼容的话,你是没有机会的。

Go 语言狂人许式伟:编程的意义就是让世界变得有趣一些

做了 2002 之后就是 2005 了,中间隔了三年,是因为我们决定完全重写。我在 2005 的时候是作为首席架构师,我要考虑 UI,考虑 IO,考虑数据层。为什么要做这个数据层?因为 Office 软件里其实有一个很复杂的东西叫 undo/redo。大部分人可能觉得很简单,就是 Ctrl+Z 就行了,但其实它背后是很复杂的。

如果学生在学校里面学过设计模式的话,会知道设计模式里面对 undo/redo 用的模式叫 command 模式,但这是理论界。实际上在工程界,你会发现这个模式效果没那么好,因为 command 模式意味着所有的功能你都要为它考虑反操作,但 Office 软件如果你列功能的话,就是厚厚的一本书,这个工程量是很恐怖的。

所以我们当时提出数据层的构想,是希望能做基于状态的 undo/redo。这个和存盘读盘也是相关的:快速存盘,说白了就是在一个文件里面存多个版本,用户敲了几个字,我就在文件里面存了两个版本的文件,它是增量存的。那么 undo/redo 可以做成什么呢?用户每做一次操作,我就存盘一次,然后 undo 的时候,我切换到上一个版本就可以了。

Go 语言狂人许式伟:编程的意义就是让世界变得有趣一些

在金山的前六年,我可以归结为一个技术人对自己不断迭代的过程,觉得自己在不断提升,自己心里很满足。

但工作六年之后,我发现这种满足感已经被另外一个困惑给取代了:我觉得我们做 Office,一直还是做的挺不错的,但是为什么就不赚钱呢?所以就在思考说到底做什么样的东西是能够在商业上也能获得成功的。

我们第一个探索是在 WPS 里面分出了一个小 team,叫 WPS online。这个构想其实跟游戏的成功是有关系的,因为游戏最早单机软件的时候也是不成功的,盗版嘛。但是游戏变成网游以后,发现大家都很赚钱。所以我们当时认为软件服务化是一个必然的趋势。

但实际上在这个事情上我没做太大的投入,我是站在跳得更开的一个角度,是说如果让我重新去思考,我到底该做什么样的业务,才是符合互联网时代的?

所以我在 2007 年很坚决的一个转型,是希望自己从一个技术人转成一个产品经理。因为只有你是一个产品经理,你才是一个商业上可以去探讨成功的角色。所以我当时就提出离职了,只投了一份简历就是 Google,最后还成功了。但是我没去,因为金山同意让我成立一个金山实验室,让我想干什么就干什么。

我先做了一个搜索引擎。做搜索引擎就要做爬虫,做爬虫就需要存储,然后我就想,那就搞搞存储。在这个过程中,有一天我突然意识到,其实这个世界上还没有牛逼的互联网化的存储公司。所以我那时就朦朦胧胧感觉说我应该做一个存储的互联网公司。存储在以前其实就是硬盘,再高端点什么 EMC、NetApp,都是软件时代的存储。我认为未来肯定是互联网化的存储,就是云存储。

所以金山实验室就开始折腾,怎么去做一个靠谱的存储系统。这是一个从技术演进去考虑的思路。然后另一个侧面也印证了我的一些想法,就是当时的移动互联网。2007 年,雷军开始去投一些移动互联网的初创企业,我也是很认同这个趋势的,然后就在想,移动互联网的趋势下什么会变化。我的结论是存储会变化。手机上打字是很麻烦的,那图片、语音交互的方式一定会出现,导致存储需求的爆发式增长。

Go 语言狂人许式伟:编程的意义就是让世界变得有趣一些

成立金山实验室是我转型为产品经理的开始。存储是后来被证明是一个靠谱的想法,但其实当时想法还蛮多的,靠谱的不靠谱的。转型产品经理之后,我觉得我做得第一件事情就是开放,因为关起门来我认为是做不好产品的。

我印象很深的第一次去北京参加一个搜索引擎的沙龙,我认识了很多牛人,包括后来唱吧的陈华,美丽说的徐易容,还有霍炬、郝培强等等,都是在那个会议上认识的。我也拜访了遨游的老大等等,基本上觉得哪个公司有趣,我就会去,尽可能的跟创始人聊聊,然后聊的话题不再是技术,而是看别人怎么想的,怎样去满足用户的需求。

其实我前面做六年的 Office 的时候,我也会经常去一个地方,就是 WPS 的论坛。为什么呢?因为其实做办公软件,你很难去跟客户聊,但有一个地方就是用户论坛,因为用户会在上面骂你。我认为如果你真要做好一件事情的话,理解用户非常重要。所以我也经常说一个小数据,就是当时在 WPS 论坛上晃悠的那些技术人员,后来基本上都成了 CEO。

Go 语言狂人许式伟:编程的意义就是让世界变得有趣一些

离开金山实验室之后,第一个就是去了百度,可能是因为搜索引擎的情结。我其实没觉得我会在百度待很久,但还是想去看看,去学习一下。

所以在百度确实待了不久,就去了盛大。到盛大的原因很简单,就是因为我觉得我 ready 了。当时盛大创新院刚成立没多久,我觉得这个机会很好,想去做存储的云化这个事情。我就去了盛大,基本上从零开始招团队,慢慢的把团队做起来,慢慢的探索一个存储的产品应该怎样去做。

在盛大就做了两年半,最后就出来决定做七牛。那是在 2011 年的 6 月份。

我当时对于我是不是一个公司的老板,其实没那么在意。但是在盛大其实有各种诱惑,比如最典型的诱惑,就是盛大文学原来的 CTO 离职后,他们想找一个新的 CTO。创新院的老院长就找到我,说觉得我做盛大文学的 CTO 挺合适的,我直接就拒了。后来创新院想拓展,要分院,什么多媒体院、搜索院、云院,各种院,当时说是不是我适合做云院的院长,然后我真的是不感兴趣。因为我觉得创新院作为一个孵化器,它最重要的是扶持的职能,就是如何让别人能够成功创业。但我根本就没做成功过一个创业的事情,然后我去扶持别人创业,我认为是不靠谱的。

Go 语言狂人许式伟:编程的意义就是让世界变得有趣一些

创办七牛,我觉得有几个背景。一个是在公司内创业,我越来越觉得受到的局限还是蛮大。另外一个就是,我觉得云计算的机会真的起来了。

2007 年其实还是我自己在头脑里面觉得这是一个机会,但是到 2011 年,其实亚马逊就已经很知名了,而且国内阿里云 2009 年就进去了,用户的教育已经到了一个阶段。刚好 2011 年是移动互联网爆发的一年,移动互联网公司之间的竞争也比以前激烈很多,那时候大家都想的是如何跑得更快,就对云服务自然有诉求。

其实我们还是走了一些弯路,最早创业的时候是面向个人市场,这是比较容易想到的,因为 2010 年的时候 Dropbox 非常火。但是我们三个月就换方向了,原因是我们对自己的一个反思。一个就是 9 月份的时候,觉得网盘市场是过热的,各家巨头都进去了,而且大家都没有商业模式,不知道该怎么赚钱,虽然当时还没有开始百盘大战,但我们可以预见未来会有百盘大战的一天。另外一方面,我们思考了一下我们的团队,都是技术背景,普通老百姓在想什么其实不太了解。

这个情况下,我们就会重新思考说那我们到底怎么推广,我们怎么样才能胜出,其实我们是没有答案。但比较好的一点就是我们在存储领域其实还比较知名,大家会容易想到我们。当时移动互联网竞争比较激烈,就会有很多图片比较多的公司发现需要一个云存储,然后刚好 360 找上来了,说想要一个云存储,我们就飞成都,跟他们聊完之后觉得他们需要的产品我们能很快做出来。

我们团队一直有一个观念,就是要专注,只做一件事情。所以团队决策,最后一致认为我们应该做企业云存储,然后就转型了。这是我们第一次面临的一个变化,我觉得也是影响非常重大的一个变化,因为如果没有这个决策,其实今天基本上可以确定肯定没有七牛。

Go 语言狂人许式伟:编程的意义就是让世界变得有趣一些

差不多 2012 年,就开始有一些视频客户的需求;但是到 2014 年,我认为是一个重要的变化,短视频爆发是那个阶段产生的,然后我们花了比较多的精力对视频做支持。然后到了 2015 年,大家都知道直播开始起来了,其实我们直播也是从 2014 年就开始做一些,然后我们的大数据其实也是 2014 年就开始做。

但是我们每做一个新的业务都会相对比较低调,因为我们要做用户的验证。我觉得这是最值得初创企业去做的,就是先确认你的东西靠谱,然后再推广。2012 年初的时候,我说我们第一年只要做十个以内的客户就够了。种子用户期不需要太多客户来验证我的想法,你要确保的是用户的典型性,是你的核心用户,不是随随便便找来凑数的。这样一些核心用户,你满足他最核心的痛点,然后一些边边角角的需求,你可以不断去迭代。

我一直跟同事讲一个观点,就是一个公司,从 10 个客户到 10000 个客户,和你从 100 个客户到 10000 个客户,你的成本是一样的;但是你早期服务 10 个客户和 100 个客户,成本可能就真的是十倍的差别。这类似于精益创业的想法,就是你要让自己创业的成本尽可能的低,那你就要更聪明的做事情。

一个企业怎么样子才算成功?其实我的看法很简单,就是我认为企业没有成功这个说法。企业就是不断的成长。

企业要有危机感。危机感什么意思呢?就是不要觉得我已经成功了。当企业认为自己成功了,其实就是一个非常危险的信号。企业一定要随时去想下一步是什么,很积极的往前走。

我们做云存储,我觉得无非就两个核心,一个是找到下一个蓝海是什么,另一个就是企业要有狼性。当然我很少提狼性这个词,但是在红海市场,你能凭借的就是狼性。任何一个蓝海都不会是永久的蓝海,所以在一个红海市场,就是肉搏,技巧都是次要的,你的斗志、你的毅力、你的勇敢才是最重要的。

Go 语言狂人许式伟:编程的意义就是让世界变得有趣一些

人生的意义是什么?

我觉得不同人的追求不一样,没有必要把自己的观念强加给别人。在我看来,人的意义就是自我实现,所以首先要看你自己追求的是什么,你想要追求什么,你就去实现什么。像我的话,我特别希望能够改善一下这个环境,要让这个世界变得更有趣一些。


即刻申请 AWS 全球免费套餐,享受全球一流云服务——还等什么,快来申请 AWS 全球免费套餐吧!为你提供实际动手使用 AWS 云服务的机会。AWS 免费套餐服务 / 产品包括自 AWS 注册之日起 12 个月内可供免费使用的服务,以及在 AWS 免费套餐的 12 个月期限到期后不自动过期的其他服务 / 产品。注册即可使用。快戳 「 阅读原文 」


二叉树是 InfoQ 全新推出的一档面向技术人的视频栏目,在第一季《初心》纪录片中,我们采访跟拍了十位技术大咖,探问他们的初心,叩响对技术的本心。更多高清视频,请在【秒拍】搜索“InfoQ”。


以上是关于Go 语言狂人许式伟:编程的意义就是让世界变得有趣一些的主要内容,如果未能解决你的问题,请参考以下文章

Go+1.0发布,七牛云许式伟:以Python之形结合Go之心,让数据科学无处不在

许式伟:相比 Python,我们可能更需要 Go+

追踪报道!Go+ 1.0 发布会有哪些大佬和精彩话题?嘿嘿嘿

追踪报道!Go+ 1.0 发布会有哪些大佬和精彩话题?嘿嘿嘿

学习Go语言要看的书,都在这里!

Go语言中的闭包