eureka icon indicating copy to clipboard operation
eureka copied to clipboard

读《淘宝技术这十年》

Open ShannonChenCHN opened this issue 6 years ago • 5 comments

这本书主要讲什么?

任何网站的发展都不是一蹴而就的。它在发展过程中会遇到各种各样的问题和业务带来的压力。正是这些问题和压力推动着技术的进步和发展,而技术的发展反过来又会促进业务的更大提升。

这本书从工程师的角度讲述淘宝这个超大规模互联网系统的成长历程,及其所有主动和被动的技术变革的前因后果。书中的内容都是作者的亲身经历。 这本书主要讲了几个方面:

  • 幕后故事
  • 产品经验
  • 架构演进
  • 技术启蒙
  • 大牛成长
  • 业内八卦
  • 失败案例
  • 励志故事

作者是谁?

淘宝技术大学校长——赵超,花名“子柳”,历任开发工程师、项目经历、PM、测试经理,2009 年主持创办了“淘宝技术大学”,2011 年将培训的内容整理成文发表后,又总结了淘宝十年的技术之路,然后就有了这本书

ShannonChenCHN avatar Oct 01 '17 01:10 ShannonChenCHN

章节结构

第一部分 淘宝网是什么

引言:光棍节的狂欢

淘宝网的规模排在全球前十几名,有哪些顶级技术支撑着它?

第一章 个人网站

淘宝网的横空出世(LAMP 架构的网站)

第二部分 淘宝网技术的发展史

第二章 个人网站的升级

  • 数据库从 MySQL 到 Oracle
  • 支付手段的创新——支付宝
  • 交流方式的创新——阿里旺旺

第三章 企业级 Java 网站

  • 脱胎换骨——将开发语言从 PHP 切换到 Java
  • 坚若磐石:去 IOE 前的故事——围绕性能、容量和成本的进化

第四章 创造技术

用钱能解决的问题都不是问题。

在淘宝网成为业内最强的时候,就遇到了前所未有的问题,这些问题都是别人没有碰到过的,必须要自己去想办法解决。于是,淘宝网被迫开始走向了技术创新的道路。

  • 淘宝文件系统——TFS
  • 淘宝 KV 缓存系统——Tair

第五章 分布式电子商务操作系统

随着新业务需求的发展,在现有的技术架构下开发就变得越来越吃力。为了提高开发效率和减低团队协作难度,淘宝开始进行了架构上的调整。

  • 服务化——系统拆分
  • 中间件
    • 高性能服务框架 HSF(用来服务调度的)
    • 消息中间件 Notify
    • 分布式数据访问层 TDDL
  • Session 框架
  • 开放平台

第三部分 背后的人和事

第六章 我在淘宝这八年(2004——2012)

第七章 牛 P 列传

  • 正明——集团核心系统高级研究员
  • 正祥——淘宝高级研究员,OceanBase项目负责人
  • 毕玄——集团核心系统资深技术专家
  • 放翁——淘宝开放平台项目负责人
  • 吴翰清——阿里云集团信息安全中心高级安全专家
  • 云铮——数据平台与产品部资深技术专家
  • 小马——淘宝UED前端通用平台高级技术专家
  • 多隆——淘宝传奇工程师多隆的程序世界

ShannonChenCHN avatar Oct 02 '17 07:10 ShannonChenCHN

笔记(一)

以上这些技术数据可能已经让一些人产生了不适的感觉,为 了让更多的人读懂这本书,我们用下面这段文字描述一下小美 访问淘宝网的时候,从技术的角度来看,网站上发生了什么样的 事情。

...

想法:这段内容有点像科普文,大概讲了一下我们现在看到的淘宝网,用到了哪些通用技术以及针对某些特殊问题的技术,其中有很多术语和技术点我也不太了解,比如负载均衡、DNS 解析、PV、UV、Hadoop。

任何网站的发展都不是一蹴而就的,通常 是在什么阶段采用什么技术。在发展的过程中,网站会遇到各种 各样的问题,正是这些原因才推动着技术的进步和发展,而技术 的发展反过来又会促进业务的更大提升。二者互为因果,相互促 进。

想法:有时候我自己在写代码时,也老想着设计的很完美,很强大。其实这里面也需有一个度,毕竟很多未来的实际情况是无法预估的,而且如果设想的方案过于复杂,会导致实施时难度过大。实际上,我们现在看到的很多产品,比如微信、淘宝,他们能发展到今天这个规模,绝不是一蹴而就的。其实一些非常强大的开源项目,比如 AFNetworking,SDWebImage,也是如此。

  • 避免过度设计
  • 所有的伟大,都始于平凡

如今淘宝网的流量已经是全球排名第12、国内排名第3(至 2011年年底,eBay全球排名第20,国内前两名是百度和腾讯)。 淘宝网的系统也从使用一台服务器,到采用万台以上的服务器。

想法:这样的成绩让人惊叹!

在开发过程中,这个项目的代号是BMW(没错!就是宝马的 意思)。 在上线的时候需要给这个网站取个名字,......,这时候,美女阿珂提供了一个很好听的名字“淘宝”。...... 后来“支付宝”的 名字也是阿珂取的。

想法:这让我想起我自己之前参与的那个项目,也有个代号,叫 YesIDo,App 的名字是我起的,叫 OnlyU。

当时,淘宝网允许买卖双方留下联系方式,允许同城交易,整 个操作过程简单轻松。而eBay是收费的,为了收取交易佣金, eBay禁止买卖双方这么做,这必然增加了交易过程的难度。而 且eBay为了全球统一,把易趣原来的系统替换成了美国eBay的 系统,用户体验一下全变了,操作起来非常麻烦,很多易趣的 卖家在那边都混不下去了,这等于是把积累的用户拱手送给了 淘宝。

想法:eBay 在中国原来是这么死的。。。。用户又不是傻子

于是 接下来很多武侠小说中的人物开始在淘宝论坛中行侠仗义,这些 昵称下面标志着“淘宝店小二”,他们回答着各种各样的问题, 快速响应着用户的各种需求。如果是技术上能解决的,几个人商 量一下,马上就开发、测试、发布上线。公司给这几个人租了房 子,他们合住在湖畔花园旁边的小区里(男女分开),每天睁开 眼就去公司,半夜两三点收工睡觉,响应用户的需求非常快。反 过来对比一下,易趣被eBay收购之后,系统更换成了全球通用的 版本,响应用户的一个需求需要层层审批,据说,买个办公桌都 要走两个月流程,反应速度自然慢了下来。

想法:创业团队反应速度就得快啊

随着访问量和数据量的飞速上涨,问题很快就出来了,第一 个问题出现在数据库上。

想法:一个产品用的人越多,出现问题也就越多。如果你们公司都没人给你提问题,那技术也就没什么挑战。

大少爷”们做的广告,带来的就是迅速上涨的流量和交易 量。在2003年年底,MySQL已经撑不住了,技术的替代方案非常 简单,就是换成Oracle。换为Oracle的原因除了它容量大、稳定、 安全、性能高之外,还有人才方面的原因。

想法:没搞过后端,不太懂这块。MySQL 撑不住,换成 Oracle 就行了么?为什么?

在那段不稳定的时间里,七公曾经在 机房住了5天5夜,差点被辐射成蜘蛛侠。

......

现在我们知道,任何牛B的人 物,都有一段苦B的经历。

想法:任何牛B的人物,都有一段苦B的经历。就看谁愿意吃这个苦,并且能挺过来。

微博上有人说“好的架构是进化来的,不是设计来的”。的 确如此,其实还可以再加上一句“好的功能也是进化来的,不是 设计来的”。在架构的进化过程中,业务的进化也非常迅猛。

想法:“好的架构是进化来的,不是设计来的。好的功能也是进化来的,不是设计来的。”我们只能往前提前看一步两步,再远点的未来是无法预估的。不管是功能也好、架构也好,都是为了解决某个问题,或者痛点而出现的。

后来这几个聪明的脑袋把这些想法糅合起来,突然想到了“担保交易”这种第三方托管资金的办法。于是在2003年10 月,淘宝网上线了一个功能,叫做“安全交易”,卖家如果选择 支持这种功能,买家就会把钱交给淘宝网,等他收到货之后,淘 宝网再把钱给卖家,这就是现在的“支付宝”。

想法:“支付宝”这种创新就是由现实中的问题所促进的。所以对于我们自己来说,平时遇到问题,首先要想的不是去逃避,而是去想问题该怎么解决,这其实不仅仅是在解决问题本身了,更大的意义在于创造价值。

当时多数银行的网站已经支持在线支付了,但多隆告诉我,他们的网关 五花八门,用什么技术的都有,我们必须一家一家地去接。而且 银行的网关不保证用户付钱后就一定能扣款成功,不保证扣款成 功后就一定通知淘宝,也不保证通知淘宝后就一定能通知到,以 及不保证通知到了就不重复通知。这害苦了苗人凤,他必须每天 手工核对账单,少一分钱都睡不着觉,因为对不齐账就一定是有 人的钱找不到地方了,这可是天大的问题。另外,他为了测试这 些功能,去杭州所有的银行都办理了一张银行卡。一大堆银行卡 摆在桌子上,不知道的人还以为他一定很有钱(高富帅啊),其实里面都只是十元八元的。现在我们再一次知道,任何牛B的人 物,都必须有一段苦B的经历。

想法:还是那句话,任何牛B的人 物,都必须有一段苦B的经历。

有人说淘宝打败易趣(eBay中国)是靠免费,其实这只是原 因之一。如果说和易趣过招的第一招是免费,这让用户无须成本 就能进来,那么第二招就是“安全支付”,这让用户放心付款, 不必担心被骗。在武侠小说中,真正的高手飞花摘叶即可伤人, 他们不会局限于一两招,一旦出手,则连绵不绝。而淘宝的第三 招就是“旺旺”。

想法:阿里巴巴(淘宝)能成功,还真是有原因的。淘宝靠的是免费、支付宝和阿里旺旺这三招就打败了 eBay。为什么靠这三招能赢呢?简单来讲,这三招就是杀手锏,因为它们分别解决了用户的三个痛点:免费、安全、砍价。 延伸来讲,我们现在作为一线开发工程师,也需要一两个杀手锏,才能在职场、人才市场具有更强的竞争力。那么什么才是 iOS 开发工程师的核心竞争力呢?

  • 解决问题(难题)的能力、攻坚能力
  • 职业素养、专业态度
  • 有自己擅长、精通的方向
  • 有较完整的知识体系、学习能力强

我的师父黄裳曾经说过“好的架构图充满美感”。一个架构 好不好,从审美的角度就能看出来。后来我看了很多系统的架 构,发现这个言论基本成立。

想法:这个观点听上去很文艺,但是在技术领域里,怎么去定义“美感”这个词呢?为什么说“一个架构 好不好,从审美的角度就能看出来”?

现在摆在他 们面前的问题是用什么办法把一个庞大的网站从PHP语言迁移到 Java?而且要求在迁移的过程中,不停止服务,原来系统的bugfix 和功能改进不受影响。亲,你要是架构师,你怎么做?有人的答 案是写一个翻译器,如同把中文翻译成英文一样,自动翻译。我 只能说你这个想法太超前了,“too young, too simple, sometimes naive”。当时没有,现在也没有人能做到。他们的大致方案是 给业务分模块,一个模块一个模块地渐进式替换。

想法:感觉这种替换的迁移方式并没有什么创新吧,不过的确是个好方法。

其实在任何时候,开发语言本身都不是系统的瓶颈,业务带 来的压力更多的存在于数据和存储方面。

想法:为什么呢?能力有限,暂时无法理解。。。。。

到现在为止,我们已经用上了IBM的小型机、Oracle的数据 库、EMC的存储,这些东西都是很贵的,那些年可以说是花钱 如流水。有人说过“钱能解决的问题,就不是问题”,但随着淘 宝网的发展,在不久以后,钱已经解决不了我们的问题了。花钱 买豪华的配置,也许能支持1亿个PV的网站,但淘宝网的发展实 在是太快了,到了10亿个PV怎么办?到了百亿怎么办?在几年以 后,我们不得不创造技术,解决这些只有世界顶尖的网站才会遇 到的问题。后来我们在开源软件的基础上进行自主研发,一步一步地把IOE(IBM小型机、Oracle、EMC存储)这几个“神器” 都去掉了。这些神器就如同《西游记》中那些神仙的兵器,他们 身边的妖怪们拿到这些兵器能把猴子打得落荒而逃。但最牛的神 仙是不依赖这些神器的,他们挥一挥衣袖、翻一下手掌就威力无 比了。

想法:不同的阶段会遇到不同的问题,当遇到别人都没遇到过的问题时或者别人的方案并不足以解决当前问题时,就需要创新了

我们对数据分库、放弃EJB、引入Spring、加入缓存、加入 CDN等工作,看起来没有章法可循,其实都是围绕着提高容量、 提高性能、节约成本来做的

想法:有效的行动的背后往往都要有一个清晰的目标

从2006年开始,我们决定自己开发一套针对海量小文件存储的文 件系统,用于解决自身图片存储的难题。这标志着淘宝网从使用 技术到了创造技术的阶段。

想法:这其实跟我们自己平时写代码一样,在一开始会去寻找现成的、比较成熟的解决方案,但是随着问题复杂度和难度的提高,我们就需要去结合具体情况进行创新。

技术和业务就是这么互相 借力推动着的,业务满足不了的时候,技术必须创新,技术创新 之后,业务有了更大的发展空间。

想法:没有在业务中实践应用,技术是产生不了价值的,而且往往技术的发展来自于业务要求的推动

这让我非常沮丧,但最痛苦的还不是这个,我们下线之后,另外 一拨卖家不满了,说这么好的功能怎么没有了?这个产品带给我 们的是新技术(AJAX、prototype框架)的尝试,以及新技术对 用户操作习惯的改变,一定要慎之又慎。

想法

  • 新产品、新功能中可以尝试新技术
  • 在产品设计方面,对用户操作习惯的改变,一定要慎之又慎

虽然“招财进宝”失败了,但这个项目中对技术的探索更加 深入,其中用到了用户行为追踪、AJAX等,而且有一个技术的细节非常经典

想法:失败只是一个结果,其实收获的是过程。就我自己来讲,我们之前做的创新项目虽然失败了,但是在架构和 JSBridge 方面都有过一些创新性的实践,所以也多多少少会给现在的项目带来一些“收益”。

在系统发展的过程中,架构师的眼光至关重要,作为程序 员,只要把功能实现即可,但作为架构师,要考虑系统的扩展 性、重用性,对于这种敏锐的感觉,有人说是一种“代码洁 癖”。

想法:不想当架构师的程序员,不是好程序员。但是如果要想成为架构师,就需要多考虑很多问题,要有架构思维,系统思维。

互联网系统的发展看似非常专业,其实在生活中也存在类似 的“系统”,正如一位哲学家说“太阳底下无新事”。我们可以 从生活中的一个小例子来看网站系统的发展,这个例子是HSF的 作者毕玄写的。

...... 个生活中的例子及其解决的方法,其实和互联网网站发展 过程中的一些技术是非常类似的,只是在技术层面用其他名词来 表达了而已,例如,有集群、分工、负载均衡、根据QoS分配资 源等。

想法:其实,不管是什么技术,什么领域,很多问题,从本质上看都是一样的。所以我们在分析问题时,要学会看本质。

介绍Session框架之前,有必要先了解一下Session。Session在 网络应用中称为“会话”,借助它可提供客户端与服务系统之 间必要的交互。因为HTTP协议本身是无状态的,所以经常需要 通过Session来解决服务端和浏览器的保持状态的解决方案。用户 向服务器发送第一个请求时,服务器为其建立一个Session,并为 此Session创建一个标识,用户随后的所有请求都应包括这个标识 号。服务器会校对这个标识号以判断请求属于哪个Session。会话 保持有效,默认状况下,直到浏览器关闭,会话才结束。

Session中存储的内容包括用户信息:昵称、用户ID、登录状 态等。

想法:复习一下 Session 的知识;为什么要单独为 Session 搞一套框架?

ShannonChenCHN avatar Oct 02 '17 07:10 ShannonChenCHN

笔记(二)

接连两个项目都挂了,我反倒不怎么悲伤了,心态反倒轻松 了许多,明白了一个道理:很多东西,不是你努力就能成功的, 也许应了那句话“谋事在人,成事在天”。

想法:就我自己这两年的亲身体会来看,努力是应该的,做到尽力而为就行了,其实也不必太强求,给自己太大压力。还真得相信 “谋事在人,成事在天” 这句话。

接口测试的思路很简单,就是用测试代码来验证系统代码的 逻辑是否正确。但做起来很难,最大的困难就是被测代码太“拥 抱变化”了,三天两头地变,测试代码经常会失效;另一个问题 就是要验证一个业务逻辑,也许要用10倍的测试代码才能覆盖, 所以,这事儿也是一个体力活。我们发现系统越往下层,变动越 小,逻辑越简单,于是我们就从最底层的IC、TC、UIC开始测 试。

想法

  • 一直没在实战中写过测试。。。。
  • 测试代码居然比业务代码还要多
  • 越底层的代码,变动越小

直到前面一 段时间看到网上流行三种青年的说法,我也把工程师大致分了 类:普通工程师跟着业务跑,来啥需求做啥事;文艺工程师专注 于自己的领域,研究得非常精深;2B工程师跳来跳去,啥都干, 啥都浅尝辄止;还有一种工程师叫牛B工程师,啥都能干,啥都精 通(这种人在工程师心中叫“神”)。

想法:居然还能这么分?我还是以文艺工程师为目标吧

但做了M(管理)之后,才知道管理真的是一 门艺术,尤其是管理一群女孩子的时候,简直是处于艺术殿堂的 巅峰。那时候从一位大侠那里听到一个理论,作为M,就不可能 做到让所有的人都喜欢你。

想法

  • 管理是一门艺术
  • 没有必要,也不可能让所有人都喜欢你,做管理更是如此

据说是因为有人推荐,2009年年底,老板的老板的老板来找 我,我以为出啥大事了,原来是他们发现团队大了,壁垒也大 了,知识的传播和传承有很大障碍,需要一个专业的技术培训团 队。而我,啥都干过,又喜欢张罗些培训和交流的事情,似乎 挺合适的。

想法:其实能找到自己喜欢做的事,并且有机会去做好,这也是非常棒的,也许有一天会有更大的舞台在等着你。

在我讲概念和数据的时候,姑娘们已经开始在研究细节了, 研究桌椅怎么摆放比较合理、学员怎么邀约会有比较高的出席 率、讲师在课堂上容易出现哪几类问题、PPT的字号多大在后排 能看得清......她们把培训的工种逐步细化,每个环节都有操作指 南,也有了很多知识的沉淀和经验的总结。姑娘们,你们很棒!

想法:这就是一种精益求精的精神!👍

培训的本质到底是什么呢?经过老板提点,我们认为培训的 本质是:“通过知识的流转,促进员工的成长,进而推动公司 业绩的提升。”那又有老板会问:“你们怎么证明自己的工作提 高了公司的业绩?”这是一个好问题,呵呵......

想法:培训最终还是要给公司创造价值啊,所以我们经常需要想想做一件事情的本质是什么。

比如你要改进架构,为什么要改进呢?本质上还是要提高开发效率,降低开发成本,出发点是好的,但是同时也会带来新的问题,因为架构上的改进,需要对所有相关功能回归测试,业务方的学习成本,新架构的磨合,这些都是要考虑的问题。架构改进是方式、手段,提高效率是目的。

老马说过“唯一的不变就是变化”,年中晋升之后,公司有 了翻天覆地的变化。

想法:有变化不是坏事,与其被改变,不如主动求变,在互联网行业更是如此。我们平时很多开发朋友却不太喜欢变化、去尝试新技术、去接受产品上的改变,这是一种守旧的思想,甚至可以说是懒惰的心态。

“在一起”之后,就到了火热的夏天,关于HR的另一项重大 项目开始启动了,就是招聘。我一边帮招聘的姑娘们审核宣讲稿 的内容,一边接手了一个很洋气的项目“常春藤计划”。这个计 划的主要思路就是,未来我们只招最优秀的学生,这些学生要培 养成技术上的“高富帅”。那怎么培养这些学生呢?以前我们的 成长方式都是野路子,放养在那里,长成什么样是什么样。我们 就想这些野路子里长出来的人有没有什么共性呢?于是就寻访了 一批进步比较快的员工,问他、问他老板、问他同事,找出了他 们成长的规律,按照这些规律制定了一个新员工培养的方案,这 就是“常春藤计划”,这个计划比较机密,在此就不公开具体内 容了。

想法:且不说这种培养计划的究竟如何,至少是一个比较不错的思路。比起一些照本宣科、走过场的培训,不知道要好到哪里去了。

ShannonChenCHN avatar Oct 05 '17 05:10 ShannonChenCHN

笔记(三)

子柳:是什么机缘来到淘宝的?

正明:我在前些年其实做得很累,不断地试验很多新想法, 商业的成果很难如预期。有时候有了不错的技术,却不一定能找 得到用户,这很难创造什么社会价值。而淘宝的社会价值是显而 易见的,系统的规模和挑战摆在那里,技术问题很快就能给用户 带来价值。

想法:做技术也好,自己创业也好,根本目的都是为了创造价值——赚钱

正明: ...... 去掉IOE的成功,这对 淘宝来说是一个标志性的事件。我们最核心的系统已经摆脱了商 用软件,完全基于开源软件和自主开发的软件系统,所以说,开 源软件对我们帮助非常大。

我们现在也把我们自己的一些软件开源出来,回馈社区,包 括TFS、Tair、WebX、TEngine等。我们的淘蝌蚪平台上已经有了 一百多个开源项目,这些项目不仅是淘宝工程师的,也有很多是 外面的工程师贡献的。我相信国内的开源环境会越来越好。

想法:拥抱开源,吸收开源,回报开源

子柳:你对刚入行的技术人员有什么建议?

正明:找到自己感兴趣的,花时间投进去,通过实践后的知 识积累比只看书本有用得多。我看过一本操作系统方面的英文 书,其中引用了一段中国人的格言:“I hear and I forget. I see and I remember. I do and I understand”,这句话给我留下非常深刻的 印象。是荀子说的“不闻不若闻之,闻之不若见之,见之不若知 之,知之不若行之。”

想法:技术成长三要素:

  • 兴趣
  • 投入
  • 实践

子柳:从你的经历来看,你对现在的技术人员的成长有什么 建议?

正祥:很多人会说年轻人比较浮躁,其实我的身边有很多非 常优秀的年轻人,他们聪明、刻苦、有闯劲、愿意接受新事物。 年轻的同事想赚钱,想提升自己的职称,这些都是十分正常的。 在这点上,我特别喜欢马总的理念——做公司要赚钱,但阿里从 不把赚钱作为第一目标,我们服务好了客户,客户赚了钱,我 们一定会得到自己应得的一份。在个人成长问题上也是类似的 道理,这就是,一个人如果把做事、做成事作为主要目标,该他 得到的东西,一定会顺理成章的、水到渠成地得到,但是,如果 把上升作为主要目标,做同样的事,结果就会完全不一样。一句 话,你的心态会最终决定你的成就。

想法:大师级的建议总是无招胜有招:

  • 把做事、做成事作为主要目标,该得到的东西,一定会顺理成章的、水到渠成地得到
  • 如果 把上升作为主要目标,做同样的事,结果就会完全不一样。
  • 你的心态会最终决定你的成就

子柳:以上几个企业的技术风格有什么不同?

正祥:联想要求研发人员要了解市场,跟着一个产品从市场 需求到开发,再到小批量生产、真正量产等整个环节。微软的研 发模式比较重,流程和审核机制非常严格,每一行代码都要审核 很多遍,做事很稳,但很慢,我想这也是它在互联网市场很难施 展的一个原因。我觉得百度其实不如淘宝重视技术,KPI导向的 文化很重,各部门之间的协作和配合比较难(这一点淘宝要好不 少),不同部门、不同项目的开发人员做了不少有差别但其实比 较类似的东西,看起来个体效率高,但整体效率未必高,这可能 是百度加班很严重的原因之一。

想法:联想的做法比较有特点,百度被黑的很惨啊。。。。

子柳:你很早就是一个研究室的主任,能够带队开发。但你 在淘宝是没有下属的,为什么?

正祥:我在微软和百度也没有下属,我最大的长处是做技 术,管理方面比我擅长的人有很多,那就让他们管吧,呵呵。管 理对我来说实在是一项艺术,我还是更偏技术。

想法

  • 术业有专攻
  • 管理是一门艺术,写代码是技术活

子柳:做这种底层的通用的产品,需要跟很多人合作,你最 喜欢和什么类型的人合作?

毕玄:只要能干活的人就好了,大家都认同这个想法会给公 司或业务带来什么好处,然后就去做,不要想太多。 (主持人:这样说来,是不是有些不太干活的人呢?)是有 一些人会比较看重自己的职责,如果不是自己的职责,可能就 不管。

想法:有些人的确是只管自己的事,也未必有错,但是那些愿意去帮助别人、去“管闲事”的人,往往能遇到更多的机会。

毕玄:......对我来说,虽然这个产品没有什么技术含量,但它给淘宝带来了改变。这件事 也是我自己发起的,所以很有成就感。

想法:既能创造价值,并且能让自己开心,难道还有比这更值得做的事情吗?至于有没有技术含量,根本就不重要,技术仅仅是手段。

这让我想起在知乎上有人提问,说是 stormzhang 的真实水平如何,有一个答案深得我心,原话记不太清了,大概说的是,“我不知道他的编程水平如何,但我觉得他给这个圈子带来的影响足以令人尊敬”。

毕玄:......(主持人:我本以为你是要说一下Java中间件的方面)这可能 是我在公司影响到人最多的一个产品,但我认为是因为刚好我在 这个位置上,如果换做别人,结果应该是差不多的。

想法:所以有很多人说,平台很重要

子柳:你每天有多少时间用于编码?多少时间学习?

毕玄:现在如果没有什么特殊情况的话,我会花很多时间看 技术方面的文章或者图书,写代码的时间可能每天只有两三个小 时。每隔一段时间会去想一想将来干什么比较好,因为写代码时 间会过得很快,要经常跳出来想一想。

想法:每天都要留些时间花在学习和思考上,这点很重要,写代码只是做事情,光写光实践而没有思考和吸收营养,是很难取得进步和突破的

毕玄:大家都说了,晋升是一个“水到渠成”的事情。大家 都会在意晋升,这个是正常的,除非你不在意级别,生活上也没 有压力,不过这样的人是很少的,呵呵。如果真的没有升上去, 这个也没有什么办法能够挽救了。我觉得重要的是在这个过程中 你回顾了你一年做了什么事情,对公司有什么贡献,技术上有哪些成长。

对于技术人员最常见的一种情况是晋升名单公布的时候,你 去看谁升上去了,然后对比一下自己,觉得他水平不如自己,为 什么是他得到了晋升,而不是你。我觉得最重要的是看那个人对 公司做了多少贡献,你可以说你的技术确实很强,但事实是你对 公司没有做出任何贡献。

子柳:你是技术晋升的委员,在评审的过程中,你比较看重什么样的特质?

毕玄:如果你是向技术方向发展的人员,我们要看技术方面的专业性;然后看你的技术对公司的业务发展有多少有多少贡献。还有一点,我比较看重的是,也许你不在其位,但能够跳出自身的范围,想到公司未来到底会面临什么问题,用什么方法来解决。当然,仅想是不够的,如果你能够落实就最好了,我们不管你落实的技术含量有多高,关键是你解决了什么样的问题。如果你能够做到这些,你这个人对公司就非常重要。

想法:在晋升这件事上,最重要的还是你对公司做出了多少真正有价值的贡献,也就是亮点,然后才是技术能力和平时的工作表现

子柳:你经常出去招聘学生,你欣赏什么样的学生?

毕玄:其实在校招聘的时候,我比较欣赏的学生往往是那些 很 “ 不 务 正 业 ” 类 型 的 。 我 经 常 会 问 他 们 , 你 有 没 有 利 用 业 余 时间出于自己的技术兴趣做的一些小东西。这样的学生我们通常 会比较感兴趣,我认为这样的学生是真正喜欢技术。聪明程度一般就可以的,他能够进入这些不错的学校,智商是不会有什么问题的。

想法:其实做学生最难得的,是有自己的想法和兴趣,并且愿意思考,把这些想法去实现。

子柳:作为一名技术专家,你的成长之路是什么?

放翁:......

这个时候出现一个问题是收购过来的公司只有3个人做核心平台的开发,然后是一大帮人做业务的开发。但这个框架本身还不成熟,有很多bug,业务开发人员就会提很多 bug给核心团队的这3个人,他们当然是忙不过来的,于是大部分 人就是等着他们去解决。我出于对这个框架的兴趣,就开始研究 前端、后端和整个系统,然后我帮他们去修复一些bug。我没有 提交主干的权限,每次修改完就告诉他们,他们审核没有问题之 后,就提交上去。就这么两周以后,负责这个平台的老板就邀请 我加入他们团队,于是我就调到了平台部。有这方面的能力,再 加上机会,之后那3个人还是在支撑业务,而我负责整个平台的基 础体系和架构的运营。从湖畔出来之后,整个阿里软件的4年左右的时间,我会负责整个平台的发展、底层结构。所以,在这方面我会走得比较靠前。

想法:机会是靠自己争取的,Do more,do better。

放翁:......后来跟淘宝开放平台合作,直接转入了平台这里,很多事情都是业界第一次做,做到现在快4年了,不断地把技术做深。

总结下来,我的成长就是从一个国企到一个公司,有一个落差。在创 业 团 队 找 到 机 会 , 从 创 业 团 队 中 做 到 一 个 公 司 的 架 构 师,然后再坚持把一个产品不断做精做深,最后才有一定的技术 发展和影响力。

想法:“坚持把一个产品不断做精做深,最后才有一定的技术 发展和影响力”,这点很关键,要想在技术这条路走得远,只有静下心来,坚持做精做深才行得通。

子柳:你在这个行业里差不多有10年了,在工作上有没有什 么痛苦的地方?

放 翁 : 会 有 些 失 落 的 地 方 , 例 如 , 从 东 信 到 阿 里 巴 巴 的 时 候 , 一 下 子 很 难 适 应 , 做 阿 里 软 件 一 开 始 也 是 做 很 多 琐 碎 的 事 情。我也跟很多新人说过,其实来公司三个月到半年的时候,是 最难熬的时间。接下来在阿里软件也痛苦过,虽然别人觉得这家 伙很清闲,在做自己喜欢的事情,但是跟淘宝的现状一样,**很多 跟业务离得相对比较远的一些中间件团队做出来的产品,应用到 业务系统上会有很大的阻力。在阻力面前,很多时候会屈服于业 务,有些业务会要求开一些白名单、黑名单、特殊通道之类的东 西,而作为基础服务,我又要保持它的完整性和统一性。这时就 需要一些协调和沟通的技能。作为一个架构师,经常会有一种失落感,有时候会发现我们做出来的东西有可能没有办法实施。**我 坚持做开放平台做了4年,后来我有一些感悟,我跟毕玄都发觉真 的需要找到一个业务点,把技术做深,去解决一个个的问题,然 后这个平台的效果才能体现出来。现在有了一个转变,从单纯地 做中间件、平台架构,到成为业务团队的一个业务架构师。现在 技术架构师和业务架构师两方面都在做。

想法

  • 做架构不能脱离业务,一定要有服务业务的心态
  • 很多事情要长时间才能看到效果

放 翁 :现在我们的思想 也放开了,与其是通过行政的手段去堵,去要求别人,还不如自 己把产品做好,这样这些部门自然而然会去想他要不要花这么大 代价去做这个事情。我在想,做技术产品需要转变一个思路,靠 行政和强制措施要求别人用你的东西,短期有效,但长期来看, 还是要看技术过不过硬,有没有站在用户的角度考虑问题,产品做得够不够好。

想法:要用做产品的心态去做技术基础服务

放翁:其实从P7级开始,就没有人帮我做规划了。技术委员会在P7~P9的定义中,要求P7级的人员要对一个小的产品或团队有方向性的指导,P8级就要求在一个大部门或者公司级的产品上有方向性的指导,P9级要求除了考虑自身的产品之外,还要站在公司的角度考虑自身的产品对公司的发展有什么帮助。对我 来说,在开放平台不能只考虑开放平台本身发展得好不好,要看 它对其他部门或整个公司的发展有什么帮助。

想法:从阿里评级可以看出,个人影响力以及对公司产生的价值很重要。

放翁:从技术上看,我都是贴近实际的问题来找突破点,解决了问 题,技术就掌握了。说实在的,现在也会一遇到一些瓶颈,到一定阶段,我的技术已经足够快了,但是业务上还有跟上,这时很多技术人员会觉得困惑。我自己会去多想一些东西,包括我们现在去做TQL、长连接数据推送等,我们在技术上有很大创新,在业界也有很大的影响力。

想法:关于成长:

  • 通过解决实际问题来找突破口
  • 多想些问题,走在业务需求和问题的前面

子柳:你给工程师的分享反向非常好,你认为什么样的分享能打动工程师的内心?

放翁:有两点,技术人员首先会关心技术好不好,若技术不 好 , 讲 得 再 好 都 会 感 觉 有 些 浮 , 所 以 每 次 我 都 会 讲 些 技 术 方 面 的内容,不是具体的实现细节的技术,而是通用的一些思想和方 法 。 另 外 一 点 就 是 我 对 开 放 平 台 的 一 种 信 仰 和 思 想 , 我 能 通 过 开 放 平 台 为 淘 宝 做 什 么 。 这 样 其 他 人 会 感 受 到 听 这 个 课 是 有 帮 助的。

想法:技术分享的要点:

  • 技术水平足够高
  • 本质的思想和方法比技术细节更重要
  • 分享的技术的价值

子柳:你对新人的要求是什么样的?

放翁:第一个是做事要自己思考后再去问别人,而不是一遇 到问题就找人求助。第二个是不断地打破自己的一些想法,你不 要担心自己今天已经做了50%的工作,要是推倒重来,前面的事 情都白干了。我现在带的两个新人成长很快,但是都有类似的经 历,就是一个东西被我反复推翻重做,在这个过程中就是不断地 成长,要思考我为什么让你推倒重做,若想不清楚,下次重做的 概率会更大,这样慢慢地就会学会了思考。

想法:新人成长中遇到的典型问题:

  • 提问与思考——学会自己先思考再去问别人
  • 反复推敲,不断完善

子柳:你是CSDN的著名博客,你写些什么内容?

放翁:现在半年我会写两到三篇,写blog的方式是当我做了一次深入的优化,或者有比较大的积累之后,我才会去写。现在跟以前不同,平常不会去写一些入门性的内容,因为这些大家都会了,网上也有很多。所以更新的速度比较慢,但我还是能保证质量。

想法:这里跟我们现在所处的情况也很类似,就像 bs 说的那样,现在写东西做分享,都是需要高质量、有深度的才会有人看,毕竟不像前两年 iOS 刚兴起的阶段了。

子柳:你对工程师有什么忠告?

放翁:任何 一 个 公 司 , 不 管 用 什 么 手 段 , 都 做 不 到 绝 对 公 平,最终只会有小部分人得到机会。这个时候去抱怨、愤怒都没 有用的,只有自己不断地努力争取机会才行。

想法:事在人为,成事在天

云铮:今年(2012年)一个很重要的工作就是响应这个分会成员的呼声,加入这里到底是干什么的?写 Job Modle(任职能力模型)、参加晋升评审吗?不仅仅是这些,要让他们有引路人, 有方向感。数据领域有很多模块,不能说让大家做了几年还局限 在一个格子里,要把信息互通,把思维打开。

第二个就是数据技术的新趋势.....

想法:在团队技术发展上,一个是要信息互通,实现真正的交流,另一个是要培养技术嗅觉,把握行业动态

云铮:这时我们也 发现商业的工具已经被我们用到了极限,接下来怎么办呢?我们 只好自己革自己的命,把Oracle逐步替换掉,目前已完成了这个工作。

......

没办法,只能自己去想办法解 决这样的问题,最后我们解决了这样的问题,这在业界是没人做 过的,这是一个非常宝贵的经验。

......

随着这些创造性的工作的成功,整个团队也被锻炼出来了, 再碰到什么新的问题不会害怕了,总有办法解决的。

想法:成长需要磨练,而解决别人未解决过的问题,是最佳的锻炼机会。

子柳:作 为 一 名 互 联 网 技 术 老 鸟 , 你 的 成 长 之 路 是 什 么 样的?

云铮:理想主义,兴趣+执著,看准一个方向后,无论是顺境 还是逆境,都要不断地努力,不浪费时间和机会。

想法:大神走过的路还是很有参考价值的:

  • 兴趣+执著
  • 看准一个方向
  • 无论是顺境 还是逆境,都要不断地努力,不浪费时间和机会

子柳:给技术刚起步的人员一些技术成长的建议吧。

云铮:兴趣是最好的老师,坚持是达到梦想的唯一途径,当 然,在个人发展的不同阶段寻找到合适的导师很重要,看准方向 会事半功倍。在刚刚参加工作还没有形成自己的判断时,方向有 两个来源,一个是个人的兴趣,一个是找一个你非常佩服且能掌 握未来方向的人,当然,如果这两者正好重合,那么剩下的就是 脚踏实地坚持。

想法:兴趣会给我们内在的动力,坚持能够让我们走到最后。但是如果方向不对,就会走弯路,有“名师”带最好,没有“名师”带,就按自己擅长的和喜欢的来做。

子柳:小马是淘宝网第一个做前端的,目前还在做前端,现在有5年多了,给大家简单介绍一下淘宝前端的发展历程吧?

小马:先给大家说一下“前端”是怎么来的......

想法:静态页面-->体验要求变高-->需要更贴近用户的工程师 + 页面需要做很多适配-->工种细化,产生了“前端”这个新的工种

子柳:现在很多团队都在经历着分分合合的变动,从前端团 队来看,是很典型的一个例子,你怎么看待这些变动

小马:...... 我觉得合和分的过程也不用特别看重,不同的阶段需要不 同的组织形式

想法:拥抱变化

子柳:畅想一下未来的发展方向

小马:我认为,未来的方向是前后端的界线越来越模糊

......

这就要求有人做这方面的开发工 作,同时还要推动前端技术的发展。

想法:这个世界一直都在变化,所有的变化意味着新的挑战,也意味着新的机会。

子柳:从 技 术 方 向 上 看 , H T M L 5 是 不 是 未 来 的 一 个 大 趋势?

小马:HTML5不是“HTML4”的简单升级,很多人会认为 HTML5就是那些标签括号括起来的表示性的语言,其实HTML5 和HTML4不是一回事儿,我们现在所说的HTML5除了有HTML4 增加的一些语义性的标签之外,通常,我们把C S S 3和很多新的 JS 的API 都合起来统称为HTML5。为什么会有这些变化?我觉得......

想法:HTML5 和 HTML4 的区别

子柳:说 你 个 人 的 成 长 经 验 , 给 起 步 阶 段 的 同 事 一 些 建 议吧。

小马:现在回过头来看,其实成长最快的一段时间是刚进淘 宝的那几年,那个时候很单纯,就想着把工作做好,做完一个做 下一个,不管这个业务是不是重要,需求方是不是好打交道。有 个“一万个小时理论”,我觉得很正确,说的就是一个人必须经 过不断地练习,不断地遇到问题才能成长起来。当然,做的时候 要不断总结,写博客是一个很好的途径。

想法:成长经验:

  • 抱着把事情做好的想法去做事
  • “一万小时理论”——不断练习,不断解决问题,不断思考
  • 常总结(比如写博客)

小马:......所以说创业其实是一种 心态,你用旺盛的精力、饱满的斗志和坚定的信念去克服一个又 一 个 的 困 难 , 这 就 是 创 业 。 到 外 面 去 创 业 和 在 一 个 大 公 司 里 创 业,我个人觉得并没有本质的区别。

想法:创业的本质是一种心态和生活状态。

多隆说他知识经验的积累主要归功于在淘宝业务发展的过程 中 , **他 遇 到 了 各 种 各 样 的 问 题 。 这 些 问 题 促 使 他 不 断 学 习 解 决 问题的各种技术,他和淘宝一起成长。**在我看来,他对技术始终 保持着谦卑的心态也很关键。他把自己当成海绵一样去吸收新知 识——在他的字典里,没有不值得去解决的问题,也没有不值得去学习的技术。而且每学一个知识点,多隆都会写一段代码去验 证,一方面是练习,另一方面也让他加深理解,直到真正掌握这 个技术。

**多隆还有一个常人难以做到的特质。当他沉浸在他的程序世 界时,外界的人和事很难干扰到他。**一天的工作时间里,他绝大 部分都在座位上写代码。若他不在座位上,那基本上就在洗手间。 我还记得2010年公司的乒乓球比赛决赛是在创业10楼的休闲吧举行 的,比赛现场距离多隆只有20米远,锣鼓喧天,人声鼎沸,很多 人都被吸引过去了,整个办公区只有多隆一个人还“粘”在椅子 上。这大概就是《功夫熊猫2》里的最高武功心法“Inner Peace” (内心 平静)吧。有了这样的专注力,不成为高手也难。

多隆从2000年加入阿里巴巴,到现在已经十多年了,仍在淘宝 技术第一线写代码。我曾问他是如何坚持这么久且至今还这么有激 情。他回答说,很简单,因为他在做他喜欢的事情,解决问题和写 代码让他觉得很有成就感。有一次,我们在从庐山郊游回来的火 车上,他还在写代码,可见他对写代码喜欢到了什么程度。

想法

  1. 如何快速成长?
  • 解决问题
  • 一定要实践
  1. 做事情做到极致是需要非常专注的

一个计算机工程师该以怎样的态度和方式来工作和学习?

多 隆的一条朴素的建议或许可以很好地解答:“发现问题,解决问 题,不要绕开问题的本身;多做事情,不会吃亏,即使不是你的 事情。”这大概也是多隆最大的成功秘诀吧。看似容易的原则, 却不是每个人都能做到的。做到了,你也有希望成为“多隆”。

始终保持对代码的那份单纯的热爱,保持对技术的专注和钻 研;别人把工作当工作,他把工作当事业——这就是多隆的程序 世界。

想法:就像我之前共事过的一位老程序员所说的那样,遇到问题去解决它,是最好的成长方式

ShannonChenCHN avatar Oct 05 '17 12:10 ShannonChenCHN

感受

  • 很喜欢这种一起做点有意思的事情的经历,很羡慕作者的这段经历
  • 希望自己以后也能有机会和一些志同道合的朋友,做点有意思的事情
  • 业务可以更好地推动技术的发展,好的平台会有更高的要求
  • “进化论”:好的技术、好的架构、好的产品都是逐步进化、逐步完善的
  • 最好的学习方式是通过解决问题来驱动的

ShannonChenCHN avatar Oct 05 '17 12:10 ShannonChenCHN