本文目录一览:
梓树,像楸树,又像梧桐,但独具风彩
梓树是适应性较强的树种,喜温暖也耐阴耐寒,喜深厚肥沃且湿润的土壤但不耐干旱瘠薄,长江流域及其以北地区多有栽种。
一
梓树,紫葳科梓属,落叶乔木。一般高五六米,最高可达十五米;树冠倒卵形或椭圆形,树皮褐色或黄灰色;主干通直平滑,灰褐色,嫩枝有稀疏柔毛。
二
叶对生,有时轮生,阔卵形,长宽相近,硕大近尺,叶梢渐尖,叶尾心形,全缘或者浅波状,常三浅裂,两面均粗糙,微被柔毛,侧脉偶数成对,基部掌状脉奇数多条;叶柄长。叶似梧桐,故名水桐,臭梧桐。
三
圆锥花序顶生,花序梗长,微被疏毛,花梗短促疏生毛,花萼圆球形,二唇开裂,裂片广卵形,顶端锐尖;花冠钟状,黄白色,二唇形,上唇两裂,下唇三裂,中裂片较长,侧裂片较短,边缘波状,筒部内有两绺黄色条带,还有暗紫色斑点,白黄紫三色甚是显眼。花似楸树,又名花楸。
三
蒴果长椭圆形,犹如豇豆角,故称木角豆。细长而下垂,两端密生长柔毛,背部略隆起,初绿色,后深褐色,冬季不落。
四
梓树全身可入药,中药名称就有梓白皮、梓叶、梓实、梓木。
梓树是很好的用材树种,木材白色,质地稍软,可做家具,也可制琴底。
梓树树体端正,冠幅开展,叶大荫浓,春夏满树白花,秋冬荚果悬挂,就像挂着蒜苔,故叫蒜苔树,是极具观赏价值的树种。
自然生长在低山河谷,土壤湿润,故生长较快;人工栽培在村庄边角隙地或者公路两旁,多作庭荫树和行道树,现在也进入住宅小区及公园绿地,既能遮阴,又是绿化,两全其美。
我们小区就是这样的,我喜欢它的大叶子,我喜欢它那伞一样的树冠,我也喜欢它挺拔高大的矫健身形。
网图,侵删。
阿里经验分享2
50 > 阿里技术人生
我们在选择开源项目的时候,一个头疼的问题就是相似的开源方案较多,而且后
面的总是要宣称比前面的更加牛逼。我们在选择的时候有点无所适从,总是会担心选
择了 A 方案而错过了 B 方案,或者反过来。这里我们的经验是聚焦于是否满足业务,
而不需要过于关注开源方案是否牛逼。
案例:当时尝试一个社交类业务时,我们发现了 TT(Tokyo Tyrant)这个开
源方案,觉得既能够做缓存取代 Memcached,又有持久化存储功能,可以取代
MySQL,很牛逼,很高大上,于是就在业务里面大量使用了。但后来的使用过程让
人很蛋疼,主要表现为:
1. 不能完全取代 MySQL,因此有两份存储,设计的时候每次都要讨论和决策
2. 功能上看起来很高大上,但相应的 bug 也不少,而且有的 bug 是致命的,例
如所有数据不可读,后来是自己研究源码写了一个工具才恢复了部分数据。
3. 功能确实牛逼,但需要花费较长时间熟悉各种细节
后来我们反思和总结,其实当时的业务 Memcached + MySQL 完全能够满足,
且大家都熟悉,当时的业务完全不需要引入 TT。
简单来说:如果你的业务要求 1000 TPS,那么一个 20000 TPS 和 50000 TPS
的方案是没有区别的。有的人可能会担心我 TPS 不断上涨怎么办?其实不用担心,
我们的架构会不断演进的,等到真的需要这么高的时候我们再来架构重构,记住:不
要过早优化,过早优化是万恶之源 —— 《UNIX 编程哲学》
聚焦是否成熟
很多新的开源项目往往都会声称自己比以前的项目更加牛逼:性能更高、功能更
强、引入更多新概念。看起来都很诱人,但实际上都有意无意的隐藏了一个负面的问
题:都更加不成熟!不管多牛逼的程序员写出来的项目都会有 bug,千万不要以为作
者牛逼就没有 bug,Windows、Linux、MySQL 的开发者都是顶级的开发者吧,一
样很多 bug。
不成熟的开源项目应用到生产环境,风险极大。轻则宕机,重则宕机后重启都恢
复不了,更严重的是数据丢失都找不回了。还是以上面提到的 TT 为例:我们真的遇
阿里技术人生 < 51
到异常断电后,文件被损坏,重启也恢复不了的故障,还好当时每天做了备份,于是
只能用 1 天前的数据进行恢复,但当天的数据全部丢失了。后来我们花费了大量的
时间和人力去看源码,自己写工具恢复了部分数据,还好这些数据不是金融相关的数
据,丢失一部分问题也不大,否则就有大麻烦了。
所以在选择开源项目的时候,尽量选择成熟的开源项目,降低风险。
可以从以下几个方面考察是否成熟:
1)版本号:一般建议除非特殊情况,否则不要选 0.X 版本的,至少选 1.X 版本
的,版本号越高越好。
2)使用的公司数量:一般开源项目都会把采用了自己项目的公司列在主页上,公
司越大越好,数量越多越好
3)社区活跃度:看看社区是否活跃,发帖数、回复数、问题处理速度等
聚焦运维能力
我们在选择开源项目的时候,基本上都是聚焦于技术指标,例如性能、可靠性、
功能这些方案,而几乎不会去关注运维方面的能力。但如果要将方案应用到线上生产
环境,运维能力是必不可少的一环,否则一旦出问题,运维、研发、测试都只能干瞪
眼,求菩萨保佑了!
可以从以下几个方案去考察运维能力:
1)开源方案日志是否齐全:有的开源方案日志只有寥寥启动停止几行,出了问题
根本无法排查
2)开源方案是否有命令行、管理控制台等维护工具,能够看到系统运行时的
情况
3)开源方案是否有故障检测和恢复的能力,例如告警、倒换等
52 > 阿里技术人生
用:如何使用开源方案?
深入研究,仔细测试
很多人用开源项目,其实是完完全全的"拿来主义",看了几个 Demo,把程序
跑起来就开始部署到线上应用了。就好像看了一下开车指南,知道了方向盘是转向、
油门是加速、刹车是减速,然后就开车上路了,其实是非常危险的。
案例:我们有团队使用了 elasticsearch,基本上是拿来就用,倒排索引是什么
不太清楚,配置都是用默认值,跑起来就上线了,结果就遇到节点 ping 时间太长,
剔除异常节点太慢,导致整站访问挂掉。
案例 2:很多团队最初使用 MySQL 的时候,也没有怎么研究过,经常有业务
部门抱怨 MySQL 太慢了,其实经过定位,发现最关键的几个参数(例如 innodb_
buffer_pool_size, sync_binlog,innodb_log_file_size 等)都没有配置或者配置
错误,性能当然会慢。
可以从如下几方面进行研究和测试:
1)通读开源项目的设计文档或者白皮书,了解其设计原理
2)核对每个配置项的作用和影响,识别出关键配置项
3)进行多种场景的性能测试
阿里技术人生 < 53
4)进行压力测试,连续跑几天,观察 cpu、内存、磁盘 io 等指标波动
5)进行故障测试:kill,断电、拔网线、重启 100 次以上、倒换等
小心应用,灰度发布
假如我们做了上面的"深入研究、仔细测试",发现没什么问题,是否就可以放
心大胆的应用到线上了呢?别高兴太早,即使你的研究再深入,测试再仔细,也还是
要小心为妙,因为再怎么深入的研究,再怎么仔细的测试,都只能降低风险,但不可
能完全覆盖所有线上场景。
案例:还是以 TT 为例吧,其实我们在应用之前专门安排一个大牛看源码、做测
试,做了大约 1 个月,但最后上线还是遇到各种问题。线上生产环境的复杂度,真的
不是测试能够覆盖的,必须小心谨慎。
所以,不管研究多深入、测试多仔细、自信心多爆棚,时刻对线上要有敬畏之心,
小心驶的万年船。我们的经验就是先在非核心的业务上用,然后有经验后慢慢扩展。
做好应急,以防万一
54 > 阿里技术人生
即使我们前面的工作做得非常完善和充分,也不能认为就万事大吉了,尤其是刚
开始使用一个开源项目,运气不好的话就可能遇到一个之前全世界的使用者从来没遇
到的 bug,导致业务都无法恢复,尤其是存储方面,一旦出现问题无法恢复可能就是
致命的打击。
案例(此案例是听说的):某个业务使用了 MongoDB,结果宕机后部分数据丢
失,无法恢复,也没有其它备份,人工恢复都没办法,只能接一个用户投诉处理一
个,导致 DBA 和运维从此以后都反对我们用 MongoDB,即使是尝试性的。
虽然因为一次故障就完全反对尝试是有点反应过度了,但确实故障也给我们提
了一个醒:对于重要的业务或者数据,使用开源项目时,最好有另外一个比较成熟
的方案做备份,尤其是数据存储。例如:如果要用 MongoDB 或者 Redis,可以用
MySQL 做备份存储。这样做虽然复杂度和成本高一些,但关键时刻能够救命!
改:如何基于开源项目做二次开发?
保持纯洁,加以包装
当我们发现开源项目有的地方不满足我们的需求的时候,自然会有一种去改改的
冲动,但是怎么改是个大学问。一种方式是投入几个人从内到外全部改一遍,将其改
造成完全符合我们业务需求。但这样做有几个比较严重的问题:
1)投入太大,一般来说,redis 这种级别的开源方案,真要自己改,至少要投入
2 个人,搞个 1 个月以上
2)失去了跟随原方案演进的能力:改的太多的话,即使原有开源项目继续演进,
我们也无法合并了,因为差异太大。
所以我们的建议是不要改动原系统,而是要开发辅助系统 : 监控,报警,负载
均衡,管理等。以 Redis 为例,如果我们想增加集群功能,不要去改动 Redis 本身
的实现,而是增加一个 proxy 层来实现,Twitter 的 Twemproxy 就是这样做的,而
Redis 到了 3.0 后本身提供了集群功能,原有的方案简单切换到 Redis 3.0 即可。详
细可参考 (/d/file/gt/2023-12/rmihfab323i /4413922.html )
如果实在想改到原有系统,怎么办呢?我们的建议是直接给开源项目提需求或者
阿里技术人生 < 55
bug,但弊端就是响应比较缓慢,这个就要看业务紧急程度了,如果实在太急那就只
能自己改了,不过不是太急,建议做好备份或者应急手段即可。
发明你要的轮子
这点估计让很多人大跌眼镜,怎么讲了半天,最后又回到了"重复发明你要的轮
子"呢?
其实选与不选开源项目,核心还是一个成本和收益的问题,并不是说选择开源项
目就一定是最优的方案,最主要的问题是:没有完全适合你的轮子!
软件领域和硬件领域最大的不同就是软件领域没有绝对的工业标准,大家都很尽
兴,想怎么玩怎么玩,不像硬件领域,你造一个尺寸与众不同的轮子,其它车都用不
上,你的轮子工艺再高,质量再好也是白费;软件领域可以造很多相似的轮子,也基
本上能到处用,例如你把缓存从 Memcached 换成 Redis,不会有太大的问题。
除此以外,开源项目为了能够大规模应用,考虑的是通用的处理方案,而不同
的业务其实差异较大,通用方案并不一定完美适合具体的某个业务。比如说 Mem-
cached,通过一致性 hash 提供集群功能,但是我们的一些业务,缓存如果有一台宕
56 > 阿里技术人生
机,整个业务可能就被拖慢了,这就要求我们提供缓存备份的功能,但 Memcached
又没有,而 Redis 当时又没有集群功能,于是我们投入 2~4 个人花了大约 2 个月时
间基于 LevelDB 的原理,自己做了一套缓存框架支持存储、备份、集群的功能,后
来又在这个框架的基础上增加了跨机房同步的功能,很大程度上提升了业务的可用性
水平。如果完全采用开源方案,等开源方案来实现,是不可能这么快速的,甚至都有
可能开源项目完全就不支持我们的需求。
所以,如果你有钱有人有时间,投入人力去重复发明完美符合自己业务特点的轮
子也是很好的选择!毕竟,土豪们(BAT、Facebook、Google...... 等)很多都是这
样做的,否则我们也就没有那么多好用的开源项目了:)
阿里技术人生 < 57
前端工程师的未来在哪里?
成曰
阿里妹导读:很多童鞋在上次的问卷调查里表示,希望多推出一些前端方向的内
容。今天为大家分享一篇关于前端工程师职业发展的文章,抛砖引玉,期待与大家一
起交流探讨。
我是成曰,目前在蚂蚁金服数据平台部任职前端工程师,从事数据中台产品的研
发。目前对前端架构与质量、用户体验、TypeScript 比较感兴趣。
以下我说的都是个人观点,比较宏观粗浅,主要针对的是前端工程师本身,没有
深入技术和业务细节,请谨慎参考。
58 > 阿里技术人生
职能概览
前端工程师首先是个程序员,其次也是个软件工程师,他们工作在离用户最近的
地方,负责人机交互和用户体验,虽然叫"前端",但其实他们的工作边界其实已经
很宽了。
展望未来,我想前端的工作会继续分化,也会继续融合,分工是工业革命以来社
会高效协作的主要推动力,以后很长一段时间应该也会维持这种形态,融合的原始推
动力也是提高效率。分化和融合是不断的演化和互吸收转化的,不过核心的东西我想
还是不会有太大变化。
观点
1. 继续分化(领域、行业、技术栈)
2. 继续融合(端技术、Web 全栈技术、人工智能与端技术)
3. 核心不变(计算机科学本质、软件工程思想与实践、程序员职业素养)
阿里技术人生 < 59
1. 继续分化
领域
前端领域会继续分化,例如阿里内部的前端就已经有中后台、图形、端技术、泛
Node、开发者服务 5 个大方向了,每个大方向也会细分,举一些例子:
● 中后台:有云控制台、信息 & 资产管理平台、内部研发 & 项目管理平台、人
工智能 & 机器学习平台、数据研发分析平台,企业内部信息平台等。具体产品
如阿里云控制台、ERP、PAI、DeepInsight、阿里内外、Basecamp 等。
● 图形:有基础图形库、3D 图形、数据可视化、流程图等。具体产品如 G2、
DataV、阿里云城市大脑、滴滴智能交通调度图、双十一大屏等。
● 端技术:有移动端(iOS、Android、MobileWeb、PWA、小程序)、PC 端
(客户端、Web 端)、触屏电脑、各种监控大屏、智能手表手环, 智能汽车 &
60 > 阿里技术人生
家居屏幕等。具体产品如淘宝支付宝的 App、PC 主站、移动 H5 站,阿里
郎、VS Code、双十一大屏、UC 浏览器 UWP 版本、各种智能手表、手环、
汽车、家居屏幕等。
● 泛 Node:有工具链、Web 框架、IoT、客户端(Electron、NW)等。具体产
品如 DEF/Atool/F2E-Test(阿里前端开发者工具)、Egg.js、阿里云的 IoT
应用、VS Code 等。
● 开发者服务:有应用开发运维平台、组件市场等。具体产品如阿里云的应用搭
建平台 Boat、Fusion-Design 组件市场,支付宝小程序开发者工具等。
行业
● 2B
○ 信息管理、财务、建筑、航天、水利、金融、制造等传统行业软件以及阿里
提出的五新:新零售,新制造,新金融,新技术和新能源,新技术赋能传统
行业
○ SAAS 软件及服务:如 Teambition、Trello、钉钉企业版、Basecamp、
Growing.io
● 2C
○ 移动 App:如微信、微博
○ PC 工具应用:如 Google Doc
○ 产品展示类网站:如阿里云、支付宝官网
技术栈
● React(Native)
● Angular(NativeScript)
● Vue(Weex)
2. 继续融合
端技术
● 前端、客户端技术思想的融合
阿里技术人生 < 61
○ 组件化(组件化搭建页面)
○ 组件生命周期钩子函数(如 iOS ViewController)
○ MV*(如 MVVM 设计就来源于微软客户端开发框架)
大前端的统一
○ 虚拟 DOM 技术:React/ReactNative/ReactCanvas
○ 各种移动设备内核和引擎的统一:WebKit/V8
○ Web 技术文档的统一:Mozilla Web Docs
Web 全栈技术
● 前端、后端技术思想的融合
○ MV*(如前端的第一个 MVC 框架 Backbone.js 就来自于 Ruby on Rails
开发者)
○ AOP、依赖注入(Angular)
○ GraphQL(SQL)
○ IndexedDB(Database)
人工智能与端技术
● 人工智能、前端技术的融合
○ 端是最终触达用户的节点
○ 端数据采集 -> 后端机器学习、数据分析 -> 智能推荐呈现
● 物联网、前端技术的融合
○ 智能家居 / 汽车 / 工业设备可能是有屏幕的,同时可以基于如 JerryScript 这
样的 JS 执行引擎使用 Node.js 开发联网应用
3. 核心不变
计算机科学本质 / 软件工程思想与实践 / 程序员职业素养。
计算机科学基础:如基本的操作系统概念和计算机组成原理,算法和数据结构基
础等等。
软件工程思想与实践:如软件开发模式,设计模式,架构思维,自动化思维,单
62 > 阿里技术人生
元测试集成测试,UML 等等。
程序员职业素养:如对代码整洁和可读性的追求,对软件开发的热情,对编程技
艺的自我提升等等。
历史回顾
回顾过前端的演化,主要参见最底下的相关资源,下图简要回顾一下 95 年以来
软件开发和前端历史:
前端的未来
那些生存空间越来越小的产业
● 小规模移动 App:移动 App 市场被一些巨头把持,小规模 App 生存空间越来
越小
● PC 信息导航类网站(网址、购物、论坛、生活):现在移动优先,而且有智能
推荐,并且是强社交
无界面交互
● Web 前端能做一些事,主要是大前端的范畴
● 会话式界面(视频语音会话、语音搜索:WebRTC,开源语音库:Common Voice)
● 感官式界面(视觉:WebAR/WebVR)
阿里技术人生 < 63
● 无界面,未来会有大量 IoT 设备(IoT 有自己的通信协议和规范,前端的工作
是在用户看不见的后台)
富界面交互
大量工作需要前端来做:
● 日 常 办 公 软 件(复 杂 应 用, 并 且 慢 慢 从 桌 面 程 序 演 化 为 Web):Office、
Email、文档管理、产品设计、项目管理、代码编辑器
● 大数据 /AI 配套软件(复杂应用,并且慢慢从桌面程序演化为 Web):需要大量
的后台系统来做数据分析 / 机器学习
● 播放器 / 游戏:H5 代替 Flash,如 Web Audio、Web Video、Canvas
● 容器 /DSL/ 内核 / 小程序:支付宝 / 微信 / 钉钉容器,内核(也就是 UC、QQ
浏览器内核),及其自定义 DSL(如果将来手机的底层能力都可以上浮到小程
序,很有想象空间)
● 产品信息展示类网站(炫酷应用):各种智能设备官网、大企业官网
未来在哪里?
64 > 阿里技术人生
回顾观点
1. 继续分化(领域细分、行业细分、技术栈细分)
2. 继续融合(端技术融合、Web 全栈、人工智能与端技术的融合)
3. 核心不变(计算机科学本质、软件工程思想与实践、程序员职业素养)
一些建议
1. 关心人工智能的发展,思考 TA 在前端领域可能产生的应用场景
● 视觉稿自动生成代码
● 根据用户使用习惯自动排出最符合该用户习惯的界面
● 收集用户数据在前端实时做学习和分析,如 deeplearn.js
2. 相信前端的未来,Web 的力量
● WebKit
● V8
● Flexbox:Yoga
3. 结合公司业务特点有重点的关注前端的某些方面,毕竟技术服务于业务
后记:前端的发展超出了所有人的想象力,未来肯定是难以预测的,也没有做
预测的必要,我们要做的还是踏实做好眼前的事情,"过往不恋、当下不杂、未来不
迎",与君共勉!
相关资源
● Web 开发这十年:http://www.infoq.com/cn/articles/web-development-ten-years
● GUI 应用架构十年变迁:/d/file/gt/2023-12/u4mtmi1dhcg 大话前端时代一:https://halfrost.com/vue_ios_modularization/
● 写给初学前端工程师的一封信:/d/file/gt/2023-12/eff4jtzrkmv 母鸡与前端工程师:http://www.ruanyifeng.com/blog/2016/07/hen-and-
front-end-engineer.html
● 李 开 复 人 工 智 能 预 言:http://tech.sina.com.cn/it/2017-05-20/doc-ify-
fkqks4361454.shtml
●《无界面交互》:https://book.douban.com/subject/26947799/
阿里技术人生 < 65
前端 Leader 如何做好团队规划? 阿里内部培训总结公开
剑平
阿里妹导读:作为一名前端团队的管理者,如何做好团队规划?老板不是前端,
如何做出被认可的成绩?今天,阿里前端技术专家剑平,将结合自己的亲身经历,
以及阿里内部培训课程,写下了自己的思考和理解,与大家共同分享。欢迎一起讨论
交流。
前言
"行成于思,毁于随"——韩愈
在阿里从一线前端工程师到技术 TL(Team Leader) 也三年有余了,最重要最
难的就是做规划,你可能会遇到如下几个问题:
● 业务压力巨大,前端是瓶颈,如何做合适的规划?
66 > 阿里技术人生
● 如何提高规划的成功率?
● 规划的雷区是什么?
● 如何寻找规划的线索?
● 我的老板不是前端,如何做出被认可的成绩?
今年 4 月份参加了阿里集团前端委员会组织的 TL 培训(老师都是阿里的前端大
牛),为期三天,收获颇丰,特别是关于前端 TL 如何做团队规划方面,整理课堂笔记
时,就想结合自己这一年在阿里拍卖业务中的规划实践做下总结。
本文会引用课堂上多位阿里前端大牛老师的观点。
一般技术规划路径如下:
(蓝色部分为本文重点论述部分)
一、先从团队特征说起
做规划,先要定义清晰自己团队的特征与发展的阶段。因为特征不同与发展阶段
不同,规划的选择就会截然不同。
1. 识别团队特征
在阿里梓骞老师关于建团队的论述中,有一块团队行为曲线的总结特别好,是团
队比较核心的特征。
阿里技术人生 < 67
(上图来自梓骞老师PPT)
我的团队特征(某财年阿里拍卖业务前端团队):
● 背景:从淘宝技术部到垂直支撑业务
● 团队行为:处于潜在团队,共同目标不清晰、协同不够、缺乏长期目标
● 人员构成:6 人,平均层级偏低
● 业务发展情况:创业型,高速发展,局部瓶颈
● 业务重点关键字:DAU、用户体验(业务老大高频强调)
● 资源富裕度:负,人员严重不足,前端成为业务发展瓶颈
● TL 汇报对象:产品经理
当识别完团队特征,最迫切的事往往可以呼之欲出,比如招聘是第一等大事,
"废话,给我找个不缺人的前端部门 ...",莫急,本篇不讲招聘 ...
发现上个财年推进的事,印证了团队行为目标:努力将潜在团队引领成真正的
团队。
如何做?
68 > 阿里技术人生
● 寻找团队共同目标
● 增强团队协同
● 明确清晰短期目标与长期目标
从团队特征中寻找规划的边界:
特征 要 不要
背景 紧贴业务,关联业务目标优先 无业务落地场景
团队行为 一条线索串起大家的工作 各自为战、埋头编码
人员构成 招聘、培养梯队
业务发展情况 体系化思考、降低试错成本 单点,盲目
业务重点关键字 重点思考用户体验 向成本妥协
资源富裕度 招聘、效率低水平重复劳动,高成本技
术方案
TL 汇报对象 向上管理、多"科普" 靠猜
清晰的边界与基准、对规划内容优先级判断,对落地成功率有至关重要影响。
二、寻找规划线索
寻找规划线索是最耗时间的阶段,作为 TL 你有可能每天都在观察寻找规划的线索。
寻找线索,除了 TL 本身的思考外,需要具备外交能力,多问,如下图:
阿里技术人生 < 69
可以从四个方向去寻找链接,聊得越多,聊得越透,线索会浮现得越多。
下面针对去年比较有体感的点展开论述。
1. 向上管理
向上管理是拔赤老师比较强调的内容,如果你的老板不是前端,向上管理特别有
必要,你需要消除"语言差"、做必要的前端核心概念"科普"。
一般业务 / 产品老板的关注点是:流量、转化、跳失、体量、用户体验、规模化、
模式 / 产品创新等,要了解清楚现阶段老板的关注点是什么,从自己团队的维度思考
试图给出到达路径,这是非常重要的规划线索。
向上管理不是有事没事找老板唠嗑,而是注意沟通的有效与质量,提问题最好带
着初步的解决方案,业务 / 产品老板的时间有限,又存在"语言差",相对复杂的内容
务必准备 PPT。
2. 脑暴共创
脑暴共创是非常好的,自下而上的输入方式,而且你可以观察出下属的关注点,
为后面寻找规划项目执行者提供线索。
你可以挑个风和日丽的周末,一整天与团队同学们关在一个咖啡馆或风景不错的
会议厅。
70 > 阿里技术人生
因为共创会的成本相对较高,所以需要注意必须是主题式的共创,可以安排上午
人员做主题式汇报,下午讨论聚焦。
另外还需要一个控场能力比较强的主持人,防止主题失焦,控制时间,共创需要
的是高密度的信息。
除了与下属的脑暴共创,也可以组织与协作方的共创,参加业务方的共创。
3. 关注业务痛点
从业务痛点出发寻找的线索,确定规划后一般有充足的时间落地,是很靠谱的
线索,但要注意抽象与提取,业务痛点更多是单点的现象,而我们需要做普适性的思
考,这样才能充分发挥技术的价值,当然也要避免"过度设计"。
三、价值聚焦
1. 前端规划四问
1. 要解决什么核心业务问题?
2. 创造什么核心价值?
3. 为什么要做这件事?为什么是我们做?
阿里技术人生 < 71
4. 是单点,还是相对通用?
5. 以什么样的模式和方式来解决问题或创造价值?
6. 业务边界,系统边界如何取舍?
7. 问题在集团的大图位置和现状是什么样的?
8. 优势?劣势?
9. 终局思考和实现路径是什么样的?
结合前端,我个人认为有核心四问:
1. 做成了会如何?(核心价值、终局构想)
2. 是我团队最重要的事吗?
3. 有没有更简单的方案?
4. 与业务的链接是什么?
终局构想特别重要,决定了规划内容的价值天花板,圆心老师给我们讲了案
例,Pandora.js 做规划时,就要求是开源的,要服务外部应用,这个定位改变了
Pandora.js 从 0 到 1 的结构,如果一开始只是定位于为集团 node 应用服务,那么
日后开源必然面临大量改造成本。
在前端团队多年,体感比较深刻有二点,前端容易将问题复杂化,喜欢用大的平
台去解决小的问题,前端容易为了技术而技术,与业务"失联"。
2. 来自大牛灵魂的拷问
● 要让评审者学到点什么
● 在前端技术的横向影响
● 对业务中其他角色或业务的影响
● 对未来的判断
● 是否是重复造轮子
● 是否是"技术投机",缺乏业务场景适用性思考
解决问题与痛点,远比构思复杂技术方案更重要,避免无差异重复造轮子或"技
术投机",着重预判规划落地后的影响力与价值论证。
72 > 阿里技术人生
3. 规划推导
规划推导分正推:从线索 -> 本质痛点或问题 -> 解决方案 -> 目标,反推:从目
标 -> 解决方案 -> 本质痛点或问题 -> 线索。
二个过程都需要,你需要通过反推,去论证推导与路径的正确性,比如你的目标
是提高 50 张页面 50% 的性能,推到解决方案,发现只能提高 10 张页面 10 % 的性
能,就会发现解决方案是不靠谱的,需要再思考。
所有的线索都是现象,你需要去剖析现象背后本质,思考:
● 什么问题导致了出现这些现象?
● 痛点够不够痛?
解决方案的设计要思考:
● 调研是否充分,集团是否有现成方案?
● 是自己做,还是引进?还是引进后二次定制?
● 预计投入资源,投入产出比如何?
目标的设计要思考:
● 能够体现规划价值
● 可量化,可衡量,有影响
● 可达到
一般写规划时候,我们是先写目标,再写解决方案,而在实际推导规划时,一般
是有个大概的解决方案,然后预判可能达到的目标。
举个简单的推导例子(过程做了简化):
线索大部分单点的,如果依照单一线索,做出来的规划也是单一价值,就会发现
价值不够大,比如上图,如果只是为了解决设计师的痛点,只做品牌的优化,就会发
现价值点很小,而只是解决前端研发效率的问题,又如何深化前端的价值。
所以最后决定打包在一块,项目名是业务有体感的体验升级,目标是业务有体感
的跳失率,将前端技术体系的建设包在了里面,同时也解决其他协作方的痛点。
阿里技术人生 < 73
4. 控制力
如果一件事件你也能做,别人也能做,且比你做的好,那么就要想想要不要做这
件事。
控制力还体现在边界梳理,能跟其他岗位或其他前端团队合作是非常好的,但一
定要理清楚边界,权责清晰才能有效促进规划成功。
四、规划落锤
价值聚焦完后,已经识别出最有价值的事,但未必是团队当下最重要的事,所以
有规划落锤阶段,有如下几件事:
74 > 阿里技术人生
● 规划内容按照重要性排序
● 产出规划 PPT
● 产出关键里程牌时间点
● 排兵布阵、资源调度
李牧老师说,"TL 的核心素质是判断力与前瞻性",这个阶段就很考验着二个
能力。
1. 长期规划
价值聚焦完发现可做的事很多,如何办呢?这是好事,就可以试图做下长期规
划,可以是三年规划、二年规划,并不是说非得一年建设完所有体系,罗马不是一天
建成的,画张三年大图,给自己以指引。
明确团队技术体系的演进方向,穷尽所有高价值的事,每个季度复盘调整这张大
图,让团队有共同的目标。
拔赤老师建议 "技术规划以一年为最小单位,每季度做详细复盘,跟的勤,就不
怕跟丢"。
2. 勇气与吸引力法则
有时你认为最有价值也是团队最重要的事会受到其他人的挑战,比如有人坚持认
为现在资源紧张,不应该额外投入资源去做这件事。
这时就是很考验人的勇气的时候,选择接受,那么这件事就从你的规划移除,人
员轻松了,产品满意了,但技术体系、体验没发生变化;选择坚持,那么人员工作强
度变很大,协作方说不定会投诉。
你肯定也有面临这种选择的时候,无关对错,但我们需要有勇气面对挑战,做对
的事,不要怂。
吸引力法则(你关注什么,就会将什么吸引进你的生活)告诉我们,有勇气去要
求,笃定你的判断,有策略的执行,周围自然会发生你所希望的变化。所以关注于对
的事,别被困难吓倒。
还有个策略,跟你的老板或上游来个"对赌"吧?
阿里技术人生 < 75
一定要发声营销
技术团队的 PR 意识相对淡簿,而前端团队在业务的影响力又相对较弱,所以特
别需要 PR。
发战报是最有效的营销方式,但需要注意个注意点,如果战报对象是业务方、协
作方,不懂前端技术,战报需要包装,让他们能看的懂。
别写做了什么技术方案之类,别人看不懂,也没时间看。
技术产品宣传:
技术产品宣传分社区与公司内,办法很多,发放宣传礼品是个讨喜的办法。
去年自费做的二个宣传品:
76 > 阿里技术人生
一位优秀前端的自我修养
寒泉
今天给大家分享的主题是前端的自我成长,这是一个关于成长的话题。
很多人都有这样的感觉:听了很多技术圈子的分享,有的有深度,有的循循善
诱,深入浅出,但是呢,几年下来,到底哪些用上了,哪些对自己真的有帮助了 ? 反
而有些模糊。
2015 年我在不同的场合分享了很多内容:有移动端的性能、有适配、有 Web
vs Native,也有 hybrid,但是其实我一直比较担心,真正有深度的内容,其实面向
的是比较小众的群体,比如说 Hybrid,其实它在大部分公司里面,是只能用现成的。
所以我这一次尝试分享一个我认为可以帮助到所有前端的话题,关于前端的成
长,如果说这个分享的内容,听众里面有那么几十个人拿到 BAT 的 offer,或者升职
加薪,那么我觉得我就认为我取得了成功。
前端其实是个特别苦逼的职业,因为前端技术一直革命的特别快,新技术、新技
巧在不断地被发明出来。之前我有一个朋友,他讲说他对自己的认知是了解前端、熟
悉前端、精通前端、熟悉前端、不懂前端。为什么呢,他说当他觉得自己对前端所有
的东西觉得无所不知,无所不能的时候,忽然看到了一段代码,他完全无法理解, 于
是整个世界就崩塌了,从此再也不敢说自己会前端。
我就跟他说,这里,缺少的是一种正确的方法,你觉得无所不知、无所不能的标
准是什么,是工作中很久没遇到解决不了的问题么?他说还真是这样。我就又问他,
那你系统学过前端么?他想了想,还真没学过,大学里不开这个课。的确如此,到目
前为止,还没有任何一个大学会教前端,倒是有些培训班,会讲网页开发三剑客。
我这里讲的内容,希望带给大家的,就是该如何学习前端,实现自身成长。
阿里技术人生 < 77
关于成长,首先我得发一个免责声明,不是我对我讲的内容没有信心,而是成长
是自己的事,英文有句话,在外企工作的人会经常听到,叫做:
You are the owner of your career.
你是你职业发展的责任人。这句话潜台词是,你(不是你老板,也不是你爸妈,
也不是你女朋友)是你职业发展的责任人。
这句话我在我职业生涯的起点听说,一直指导我的职业发展,甚至在我带团队,
培养团队的时候,也是中心的指导思想,之前我带的团队的同学,他们有不少人也在
带团队,其实他们也在实践这句话,所以我这里,也把这句话、把这个道理分享给给
大家。
我们讲前端成长,我认为,主要在两个方面,一部分是"能力",一部分是"知
识"。我个人的观点,能力占百分之八十,知识占百分之二十。
从这个图上,大家可以看到,其实我们认为变化快的东西,最新出来的 Angu-
78 > 阿里技术人生
lar、React、ES2015,其实都在知识里面,知识又分成两部分,一部分我把它叫做
标准,它是相对而言比较稳定的,很少会出现一个标准被推翻的事情。另一部分则是
技术,像是 jQ、React 这些框架啦,像是 MVC、FLUX 这些架构的东西,这些东西
是由各个公司主导的,变化就非常快,你看 Grunt 发展了没多久,Gulp 就来挑战他
了,然后又有 browserify、webpack 这些东西。
而我认为占重点的能力,则是非常稳定的,我认为能力是三大块:编程能力、架
构能力、工程能力。
编程能力,就是用代码解决问题的能力,你编程能力越强,就能解决越复杂的问
题,细分又有调试、算法、数据结构、OS 原理等这些的支撑,你才能解决各种麻烦
的问题。
架构能力,则是解决代码规模的问题,当一个系统足够复杂,你会写每一块,能
解决每一个问题,不等于你能搞定整个系统,这就需要架构能力,架构能力包含了一
些意识,比如解耦、接口隔离,也包含认识业务建立抽象模型,也有一些常见的模
式,比如经典的 MVC,还有设计层面,面向对象、设计模式等等。
最后工程能力,则是解决协作的问题,当系统规模更大,光靠一个人,是没办法
完成的,如何保证几个高手互相能够配合好?如何保证项目里面水平最差的人不拖后
腿?这个工程化建设,往往会跨越多个业务,以汇报关系上的团队为单位来做。包括
前后端解耦,模块化,质量保证,代码风格,等等。
其实不难看出来,这三项,其实是有顺序的,低等级、小团队,编程能力一项
就能应付,越资深的前端,越大的公司和团队,越是需要后面的技能,但是这里我要
强调一点,其实资深前端,大团队,对能力的需求,是既要还要——不是说资深的前
端,编程能力就可以变差。
社区总会有一些声音,对工程能力,对架构能力持有一种抵触的态度,觉得比较
虚,觉得不需要。实际上以某些人所在的岗位来说,也没错,毕竟公司、团队的状态
确实可能用不到,但是以个人成长的角度来看,就是大错特错。
阿里技术人生 < 79
下面我们来具体讲讲,关于知识的学习。
对知识,我一直有个观点,叫做宁缺毋滥,这个图片上写了一句好前端才分对
错,是的,其实很多人,他学习东西的时候就喜欢挑,挑简单的学,书选择最"深入
浅出"的,在这种心态下,没有任何一丝学好的可能性,
所以我对知识学习的目标,理解为亮点,一曰准确,二曰全面。当年学习一部分
知识,如果你能做到这两点,那你将来在业务上做技术决策的时候,你面对面试官技
术问题的时候,信心跟你只看过皮毛是完全不一样的。
怎么做到这两点呢?我想路子肯定有很多,而我的答案,我这里要分享的,是
"建立自己的知识体系"。
如何建立自己的知识体系呢?我个人总结的经验,是下面几个步骤:
第一步,寻找线索。
你要了解一个知识,比如我想学 Web 平台的 API 了,当然可以先找一本书,看
看别人都写了什么,但是我不喜欢这么干。
我大学里,学前端的东西,为了找个 id 和 name 的区别,曾经要借十几本书来,
对比着看,那个时候,是真的没人告诉我,什么书比较好。所以我对别人总结好的知
识,第一反应是质疑,不信。
所以我比较推荐,找一些比较准确的,你可以确定它真的足够全面的资料当作线
索。对 Web 平台的 API,我就用反射:
80 > 阿里技术人生
浏览器里给出来的这个属性列表是不会骗人的,用这个东西作为线索,我就很有
信心。
同样可能比较适合做的资料,还有一些标准文档的附录,和源代码里的结构
定义。
第二步,是建立联系。
比如说,看下面几个 DOM 属性:
阿里技术人生 < 81
这里,左边一列是操作 Node 的,右边一列是操作 Element 的,它就存在一定
的对应关系。
一般来说,我们找对应关系的方式有以下几个依据:
● 美感
● 完备性
● 操作同一组数据
特别提一下,操作同一组数据,正是面向对象的核心概念,对前端而言,有点不
一样的是,所有的 API,根都是 window,所以,其实大部分的 API,可以依据面向
对象的数据和操作的观点进行划分。
第三步,是分类。
这里我给出一个实际一些的例子,下图是我对 zepto(移动简化版 jQuery),的
API 分类建立联系以后,我们依据知识之间的联系,进行分类,就可以得到一张图
谱,在这个图里面,你就可以非常清楚地知道,哪些知识,是非常重要的,哪些,其
实是可以互相替代的。
而一旦有你之前没见过的东西,你又能通过把它放到图谱里,来快速理解它,或
者找出一些很好的替代方案。
比如说面试的时候,如果面试官问你 bind 和 unbind 怎么用,你还不会,这时
候,如果你心里有这张图,你就不至于一脸懵了,你可以说,虽然我不知道 bind 和
unbind,但是我知道 live 和 die 啊,我又知道 on 和 off 啊。
这张图里我们就可以看出,collection 里面的东西,多半没什么用,而节点操作
里,肯定就都很有用。
82 > 阿里技术人生
阿里技术人生 < 83
第四步,是追本溯源。
当我对一个知识体系的全貌有了概念以后,占了全面两个字,接下来需要确认它
的准确性。很多知识,在社区,会有很多的争议,该相信谁呢,这是个问题。而我的
答案,就是追本溯源,去找它最初的讨论和定义。
有一个真实的案例,就是闭包这个概念,曾经我们很多人的理解都是错的,把闭
包和 scope 的概念给混淆起来,认为闭包是函数的执行环境上下文,但是有一个叫
做 hax 的(很多人应该都认识他,哈哈),他就对此提出了质疑,认为闭包就是函数。
于是我就去查证闭包的概念。
大家都知道,wiki 其实是不准确的,但是其中有一段,基本不会太有问题,就是
历史。下图是 closure 这个词条的历史部分:
从这段历史里,我找到了一个名字, Peter J Landin,他是提出者,那么,我就
去看看他到底是怎么说的,于是我去 google 学术搜索,找他的文章
果然找到了,于是我们看看原始的文件
84 > 阿里技术人生
这个定义,对应到我们今天 JS 里的闭包,是稍微有点区别的,但是它毫无疑
问,是包含了两个部分环境部分和控制(代码)部分,所以其实,闭包就是对应着 JS
的函数,而之前,普遍的观点是认为闭包只包含环境。
所以这个追溯的过程,能够帮我们真正搞清楚对错。
除了 wiki-google 学术搜索的组合,还有一些邮件列表和 github 提交历史,也
是非常适合去查证一些概念和技术的历史的。
最后说,我讲的这个建立知识体系的过程,是不断接受新知识,挑战、质疑原有
的体系,推翻再重建,每一次循环,你的知识体系都变得更加坚固,更加强大。
阿里技术人生 < 85
下面分享的一部分,是关于能力培养。
能力培养其实重要性很高,但是其实说起来,内容却很少。只有两点 : 教材、训练。
对知识学习,我是主张建立自己的体系,不要去相信书,但是对能力培养,我的
观点就刚好相反,我觉得能力的体系,恰恰是难以自己建立的,需要教材去指导。这
是由两者的复杂程度和变化速度决定的。
想培养能力,就要找经典的教材来学习,像算法导论,The C++ Programming
Language 这些经典,几十年都没有过时。
注意这里我用了教材,而不是书。
教材和书最大的区别,就是有没有习题。
在我看来,内容再难的书可以一星期读两本,但是教材一定不行,教材一定得花
几个月的时间,一边读一边做习题。
于是谈到训练。
其实有个事实是,工作以后,只有极少数人仍然能够做到训练,比如我自己的编
程能力,我自觉工作 7、8 年,几乎没有过进步。
训练应该是系统的(需要教材)、主动的,这两个特点不可或缺,有人会觉得,我
真的工作很辛苦,每天都要加班,但是其实,任何被动的痛苦,都没法给人带来进
步,你的痛苦倒是可能给老板带来更多收入。
如果面临困境,可以选择系统训练来提升自己,但是对大部分人来说,可能更乐
86 > 阿里技术人生
于选择一个一个变通的办法 : 养成习惯,让工作变得更有挑战。
这个事情其实有不少理论,比较有名的是 Noel Tichy 提出的心理舒适区、学习
区和恐慌区。选择一份对自己来说具有挑战性的工作,正面解决问题。
技术圈里流行一个笑话,说的是一个人,工作了三年,却只有一年的经验,因为
后面两年都在重复第一年的工作。
所以我们要做的事,就是永远不重复劳动,当你觉得现在的工作,越来越舒适,
越来越缺少风险的时候,就应该引起警惕了。
而虽然训练是个很困难的事情,其实大家也不必过于担忧,虽然到处都是"一万
小时训练"的言论,现在各大公司的招聘门槛,在我看来应该都卡在几百小时训练的
程度。所以我想说,一万小时太久,只争朝夕。希望看到大家成为更好的前端,做更
好的自己。
以上是我分享的所有内容。
阿里技术人生 < 87
如何成为一名顶尖的阿里架构师?
无叶
在技术圈,架构师一方面是已经被说烂的职务,另一方面也是让人困扰的职位,
行业发展到现在似乎人人都是架构师,各种架构图绚丽多彩漫天飞舞,同时永远有人
在抱怨架构太烂、坑太多。
那么到底什么是架构师?如果有一天把你丢到架构师的位置上你会怎么做? 做什
么呢?今天,阿里国际技术事业部的无叶,与大家坐一起,聊一聊。
一、两种架构师
工作五年以上的童鞋,或多或少都会有这样的经历:在小团队或者项目中承担非
明确的架构师职责,我们做项目或者产品的关键设计和实施;负责产品基础设施;引
入新的理念,框架;解决团队中的复杂问题;在团队成员中享有较高的声誉;被老板
88 > 阿里技术人生
认为是团队的关键人物。
如果有一天我们决定(或者其他原因)去做一个专职架构师,那么这两者会有什
么区别呢?是否只是之前的方式的延续就足够?
我把第一种状态称之为"兼职架构师",因为处于这种状态下的同学大部分的时
候担当开发人员、PM 的角色,只有在小部分时间承担了架构师的部分角色。做的绝
大部分事情是自己可控的,自己做架构自己做实施或者在小团队中推行。而后一种
"专职架构师"则面临的是:他们不负责具体的业务系统,而又对所有的系统负责, 他
们也很少直接负责项目,但是职责却要求他们必须对项目要有提前把控,他们面对的
是更大的团队,更大的问题域。
当然每一个人对是否应该存在"专职架构师或团队"都有自己的想法,从阿里的
历史来看单独的架构团队也是分分合合。在这里不去探讨,我们关心的是如果有,可
以怎么做。
阿里技术人生 < 89
二、专职架构师的职责
首先要弄清楚的是专职架构师的职责到底是什么?
微软对架构师有一个分类:企业架构师 EA(Enterprise Architect)、基础结构
架 构 师 IA(Infrastructure Architect)、 特 定 技 术 架 构 TSA(Technology-Specific
Architect) 和解决方案架构师 SA (Solution Architect)。这个分类是按照架构师专注
的领域不同而划分。
在阿里除了 EA 之外的领域大家可能会同时涉及到,只是不同的时期偏重点不一
样。比如前面说的"兼职架构师"可能偏重 SA ?专职架构师偏向 IA+TSA。另外一
个角度专职架构师更多考虑问题域和相应的系统架构,而"兼职架构师"更多的是产
品的系统架构,具体来说我认为专职架构师重要的职责如下:
职责一:全局的技术规划
架构师第一个最重要的职责是技术规划,架构师最重要的产出是架构,架构就
是蓝图,就是阿里常说的一张图。画蓝图就是做"全局的技术规划",这张图上有什
么? 没有什么?什么时候有?什么时候没有?当你尝试去画图的时候一连串的问题拷
打着你。对于一个架构师的心力和体力都是很大的考验。只有这张图非常清晰明确才
能指引整个团队在同一个时间向同一个方向前进。
为了这张图你必须和业务紧密沟通,你必须有对应的技术深度和广度,在选型上
有自己的方法论,敢于做出判断和决策。
另外一个重点是全局。全局我的理解是全面 + 格局,全面就是你的技术规划包含
各个方面的,在所有的领域都有明确的指引,所以这张图本质是一系列的图的集合;
格局上不要只关注短期利益,更多关注长期利益。不止关注团队利益,更多从公司角
度出发,只有这样长期才能为团队带来更多的成长。
90 > 阿里技术人生
职责二:统一的方法 & 规范 & 机制
架构师第二个重要的职责,我们不仅仅要提供蓝图,还要提供配套的方法论 &
规范 & 机制来保障有序进行。蓝图确保整个团队在同一个时间向同一个方向前进。规
范确保前进是有序的。为了有序,你必须拆解你的图,纵向、横向、功能内聚等等纬
度拆解到权责清晰对等。这是一项相对复杂且繁琐的过程。
职责三:完备的基础构建
除了蓝图确保整个团队在同一个时间向同一个方向前进、规范确保前进的有序
的、我们还需要提供强大的武器库,基础构建的完备程度决定你的团队装备是小米 +
步枪,还是飞机 + 大炮。完备的基础构建是否全部作为实际架构的职责,可以因情况
而定,比如是否有实体的架构组。但是架构对此应当负责。
职责四:落地的规划才是架构
如果规划不能落地就是传说中的 PPT 架构师,我甚至觉得这是对专职架构师最
大的挑战,前面的几个职责更加偏向硬实力,而这一个更多的是软实力的体现。专
阿里技术人生 < 91
职的架构师如果不去关注落地的话慢慢就会架空,变成 PPT 架构师,那差不多就
game over 了。
三、专职架构师的权利
正如前面说到对架构师最大的挑战是落地层面,实际上"完备的基础构建"已经
涉及到落地层面的事情,但是和完备的基础构建不同的是整体架构的落地涉及到方方
面面,面临是更多影响因素:和业务的关系、组织结构、权责定义等等。
所以有人从"架构师的权利和职责"的角度出发推论谁合适做架构师。得出的结
论是一个组织的领导者。因为只有他才能调动、协调组织。也有人认为架构师既不能
完全负责技术团队,也不能完全游离在技术团队之外。因为负责容易屁股决定脑袋,
游离就只能靠个人声望值吃饭了。
如正架构分类中 EA 的存在,很多领导者也确实身体力行的践行架构师的职责,
然而精力终有限。实际上更多是平衡的过程。当然最高境界是影响力。
四、专职架构师的考核
针对前面的职责怎么考核?或者怎么设定自己目标?虽然说在不同的团队阶段,
不同外在环境,不同的权责情况下不一样,但是在结果导向的背景下落地肯定是架构
师重要的考核指标之一。
考核一:全局的技术规划
相比其他几项这一项是最重要又最难评价的,技术规划的好坏、全面性、前瞻性
都是定性的描述,如何指引我们做出一个理性的评价呢?回归到本质上"技术规划"
只是一个指路灯,团队中每一个人能不能看到"指路灯"就到达目的地是指路灯价值
的体现。所以无论是唯价值论还是唯口碑论衡量的其实是同一个东西。
考核二:统一的方法 & 规范 & 机制
这一项的考核就相对容易多了,无论是业界还是每一个架构师本身都有自己的一
套方法,所以只需关注这些东西对应的产出。
92 > 阿里技术人生
考核三:完备的基础构建
我认为在大公司,大部分重量级的基础构建已经是非常完备,对于架构师来说更
难的不是从 0 到 1,而是克制、边界和从 1 到 2 的过程。对于架构师也好、技术团队
也好"从 0 到 1"总是充满了吸引力,加上技术人的特征,大公司技术史上永远不缺
少重复的轮子,创建这些轮子成就了一代一代的同学,拆除这些轮子再成就了一代的
同学,所以克制尤为重要;有了克制跨团队的合作就尤为重要,对应的有两个点一是
清晰边界,二是共建。
考核四:落地的规划才是架构
虽然说落地是非常不控的事情,但是考核却很容易的:做到就是做到、没有就是
没有、质量好就是质量好,标准非常清晰。过程中只需要紧跟拆解的事情结合实际的
组织和业务情况做出决策。
阿里技术人生 < 93
五、实施的一些想法
对现阶段团队的情况来说,我认为第一是建立"架构语言",有了语言才有沟通
协作的基础,所谓的"架构语言"并不是什么新的东西,而是产品的业务架构,用例
和领域模型;研发的应用架构,组件和时序图; 运维的部署架构等等。
第二是建立"认同体",无论是通过技术能力、知识传递、领域组织等各种方式
逐渐形成"认同体",且在其中形成架构体系对应的人员体系。
第三永远做服务者,架构师对应的客户是团队的每一个成员,必须始终保持客户
第一的心态。架构师存在的目的是成就研发团队每一个同学,我们提供必要的平台、
服务和空间,然后彼此成就。
最后借用一句话:从无到有的是架构;从表到里的是抽象;从粗到细的是设计。
大家对架构师有哪些看法。
94 > 阿里技术人生
哪些技术好书值得一读再读?这有一份经典书单
阿里技术
喜爱读书,就等于把生活中寂寞无聊的时光换成巨大享受的时刻。有了书,各个
领域的智慧,几乎触手可及。我们能有幸站在前辈、巨人的肩膀上,看更远的风景。
4 月 23 日世界读书日,阿里九位技术大牛为你推荐好书,与你一起共同成长、
探索未来。
推荐书籍:《Effective Software Testing》
阿里技术人生 < 95
推荐者:霜波(资深测试开发专家)
推荐理由:和其他传统软件测试书籍相比较,对自动化和持续集成的方案研究比
较深入,能直面自动化和持续基础现阶段的一些问题,将软件测试的周期提前到需
求,设计和开发的阶段,估计产品和开发一起加入测试的工作。同时对于质量的管理
有一些自己的见解和实践经验,推荐给所有技术同学一起共享。
阿里妹:天猫双 11 大队长推荐的好书,相信会为你打开一个新世界。
推荐书:《程序员修炼之道 - 从小工到专家》
推荐者:叔同(资深技术专家)
推荐理由:这是一本阐述方法论的书,关于程序员的自我修养,解决问题的方
式、态度和哲学,是向高级程序员和专家进阶的思想启蒙书。从基本原则到编程风
格,从思维方式到职业规划,内容覆盖广泛,兼具思想性和实用性,非常开拓视野提
升格局。行文简单易懂,运用和实践却是不易,值得一读再读。
96 > 阿里技术人生
推荐书籍:《设计模式之禅》
推荐者:孤尽(阿里巴巴代码中心)
推荐理由:对于设计模式,它能够指导我们编写出可维护性好、可扩展性强的代
码,对于设计模式的理解层次,我分成五个等级,以金庸小说人物为例:第一级是杨
铁心,即只知道所有设计模式的概念和定义;第二级是丘处机,能够写出相关设计模
式的 demo;第三级是梅超风,能够在现实中找出各个设计模式的原型;第四级是郭
靖,能够在系统中抽象出来设计模式,并且合适地使用,有效隔离变化点。第五级是
扫地僧,完全忘记设计模式,但写出来都是设计模式。《设计模式之禅》是一个非常
好的入门,至少武功能够达到郭靖层面,讲解各个模式比较浅显易懂,促进大家在软
件设计能力上的进步。
阿里妹:提到孤尽,很多人都会想起《阿里巴巴 JAVA 开发手册》。在阿里技术
公众号回复"手册",即可下载哦。
阿里技术人生 < 97
推荐书籍:《Spoken Language Processing: A Guide to
Theory, Algorithm and System Development》
推荐者:智捷(资深算法专家)
推荐理由:"当今的知识世界是一个扁平的世界,很多人工智能算法已经通
过 open source 的工具和 opensource 的数据库,使得大家可以轻易的获得并
复现出结果。在这些"新知"之外,今天咱们要推荐一本老书,即由黄学东(微软
Technical Fellow,语音及语言 AI 技术负责人)、Acero(Apple Siri 高级总监)和
洪小文(微软亚洲研究院院长)在多年前合著的语音和语言入门级专著。这本书深入
浅出,将基础理论、语音识别、语音合成、语义理解和对话系统等进行了系统性的介
绍,是了解口语对话系统最基础模块的一条捷径。通过这本书的'面'上的引导,我
们可以发现感兴趣的'点',并从这些点上更深入的进行研究和实践的工作。"
98 > 阿里技术人生
推荐书籍:《机器学习导论》
推荐者:粤谦(资深技术专家)
推荐理由:这是一本很好的机器学习入门级教程,非常适用于高年级的本科生、
研究生等同学学习机器学习领域的知识。这本书基本上涵盖了机器学习的相关知识,
从无监督学习、参数方法、非参数方法、线性判别式、决策树、概率图模型、贝叶斯
估计,到多层感知器、SVM 和核机器、组合学习、强化学习等,都有较为全面的介
绍。对算法原理阐述的比较清晰,也提供的相关的伪代码做深入的研究,并附带课程
作业,非常适合机器学习的爱好者在熟悉理论基础的同时,可以进一步了解算法的原
理并加以实践。
阿里妹:机器都开始学习了,何况我们呢~?
阿里技术人生 < 99
推荐书籍:《Reinforcement Learning: An Introduction》
推荐者:仁重(资深算法专家)
推荐理由:本书是强化学习领域的最经典书籍,它既是初学者打好强化学习基
础的必读著作,也是强化学习研究者们需要温故而知新的强化学习宝典。该书的作
者 Richard S. Suttion 和 Andrew G. Barto 是强化学习顶尖学者的代表,在此领域深耕
超过 30 年。这本书详细地介绍了强化学习发展历程、经典方法以及现实应用。该书第
一版于 1998 年发表,第二版于最近撰写完成。第二版保留了第一版的整体结构,对一
些细节问题进行了更深入的剖析(比如:通过策略梯度的推导说明了经典的 Tabular
Actor-Critic 方法的由来),同时也加入最近十几年强化学习领域的重要进展。
同时也推荐我们阿里自己的作品《强化学习在阿里的技术演进与业务创新》,本
书从多个实例讲述强化学习如何在工业界应用。强化学习已经在游戏中获得了巨大的
成功,但在实际工业界中,大家都还处于初步的尝试阶段,本书给大家提供一些思
路,我们是怎么把强化学习应用在实际业务中,以及会遇到什么样的问题,怎么去解
决,希望可以给大家一些帮助。
100 > 阿里技术人生
阿里妹:关注阿里技术公众号,回复"强化学习",即可下载《强化学习在阿里
的技术演进与业务创新》(一般人我不告诉他)~
推荐书籍:《Programming Rust》
推荐者:布民(资深技术专家)
推荐理由:随着互联网与移动应用的普及,大规模分布式系统正变得越来越重
要。系统构建优势往往可以直接对应到商业竞争优势。与此形成对比的是,系统编
程——也就是在资源受限情况下,实现安全、稳定和高性能(并发)系统——并不为
大部分程序员所熟知。Rust 是一门新兴的系统编程语言,它为安全性和并发而设
计,提供高层的抽象,同时有 C/C++ 的性能。希望大家通过阅读"Programming
Rust",不仅能欣赏到系统编程的美,也能帮助普及和推广系统化(编程)思维。
阿里妹:这本书特别适合有经验的开发者(特别是 C++)阅读,最好能够边做项
目边学习,理解会更加透彻。
阿里技术人生 < 101
推荐书籍:《Machine Learning: A Probabilistic Perspective》
推荐者:鸿侠(资深算法专家)
推荐理由:当今网络化的电子数据洪水泛滥,大数据公司的每一个项目都需要自
动化的数据分析方法。机器学习提供了相应的解决方案,不仅可以自动检测数据中的
模式,也可以使用学习到的模式来预测未覆盖到的数据。推荐的这本书使用统一的概
率方法为机器学习领域提供了一个全面和独立的介绍。
本书的深度和广度覆盖都很好,涵盖了概率,优化和线性代数等必要的背景材
料,并详尽的涵盖了机器学习的最新发展,包括条件随机场,L1 正则化和深度学习
等比较流行的方向,并且提供了相应算法的伪代码。所有主题都用彩色图像进行了丰
富的说明,并从生物学,文本处理,计算机视觉和机器人等应用领域中绘制了实例。
阿里妹:ML 领域经典教材,能够帮你建立起对该领域的整体认知。理解 80% 以
上内容的童鞋,请不要犹豫速砸简历来~
102 > 阿里技术人生
推荐书籍:《Architecture of a Database System》
推荐者:圭多(资深技术专家)
推荐理由:此书是数据库图灵奖获得者 Stonebraker 老爷子在 2007 年完成的,
全书不长(119 页),但极具功底。老爷子通过此书,向大家剖析了一个成熟数据库
系统的整体架构,以及数据库的各个核心模块,包括:SQL 与优化器、内存和存储管
理、事务和并发控制等的设计原则和实现方式,是全面了解数据库系统的第一选择。
阿里妹:想要了解数据库整体架构、内部运行机制,看这本就对了。
阿里技术人生 < 103
阿里技术大牛最爱的"闲书",你看过多少?
阿里技术
在忙碌的写代码、修 bug 生活里,你有多久没有闲下来,读读"闲书",取悦自
己了呢?
正如梁文道所说,"读一些无用的书,做一些无用的事,花一些无用的时间,都
是为了在一切已知之外,保留一个超越自己的机会,人生中一些很了不起的变化,就
是来这种时刻。"
今天,阿里的数位技术大牛,带来了最爱的"闲书",无关技术,却值得一读,
期待与你共赏。
工作很忙,效率很重要。以下书籍或许能帮助你提高时间利用率,突破事业瓶
颈,打开另一番天地。
推荐书籍:《从优秀到卓越》
104 > 阿里技术人生
推荐者:索尼(研发效能事业部研究员)
推荐理由:优秀或许不难,但是做到卓越,除了能力外更重要的是意志和胸怀,
乐观且皮实,聪明而自省,这些说起来都是大家都懂的道理,但是真正在面对工作、
生活中的每一个选择时,做起来却太难太难。本书系统性描述一个能带领团队从优秀
到卓越的第五级经理人的特质,通过他我们可以具象建立面向未来的组织画像,为自
身的成长建立标杆。
推荐书籍:《为什么精英都是时间控》
推荐者:林轩(系统软件事业部资深技术专家)
推荐理由:在阿里,人人都聪明;在阿里,人人都努力!那么,在一群又聪明又努
力的人当中, 大家拼的是什么?效率!谁能把 24 小时用出 48 小时的效率?你应该如何
分配一天的时间?什么时间应该高速工作?什么时间又应该安心休息?当专注力下降
的时候,如何一键修复?每天高强度的工作,你是不是经常会感觉疲倦和体力不支?
推荐《为什么精英都是时间控》。拒绝鸡汤,拒绝晦涩的工具书语言,作者用简
阿里技术人生 < 105
单的语言阐述了有效的时间管理方式。和作家以及商界人士写的时间管理书籍不同,
作者是医学博士出身,现在也是日本的神经科名医。所以读这本书,一不小心就收获
了许多医学术语,交感神经,生长激素,血清素……知其然知其所以然,理解了人体
的奥秘,你就可以更好的掌控自己的精力,double 你的效率!加油吧。
推荐书籍:《创新者的窘境》
推荐者:大舞(计算平台事业部资深运维专家)
推荐理由:从另外一个角度去审视企业的创新,当一个企业价值网络形成后,对
整个组织不同阶层的员工都会产生一定的影响,特别是非高层员工他们会依据自己的
理解来决定资源的分配,如何在企业中保持破坏性创新的体系是一个值得思考的问题。
"经济基础决定上层建筑",下面推荐几本经济学读物,不信你不想看 ~
106 > 阿里技术人生
推荐书籍:《魔鬼经济学》
推荐者:祁越(信息平台事业部资深技术专家)
推荐理由:给你一个非常不同的视角和思考方式看待世界和身边的人。读这本书
的感觉仿佛置身真实的案件侦破亦或是看到一个女孩缓缓解开头上的面纱,会让你很
爽;例如书中 "犯罪率升高是由于电视的普及"这类看似匪夷所思的观点被作者用新
颖的逻辑分析进行了推理,对提高我们在日常中提升思考深度很有帮助。
看完经济学,军事岂能错过。大丈夫心怀天下,书中便有"天下"。
阿里技术人生 < 107
推荐书籍:《孙子兵法》
推荐者:沈询(中间件事业部资深技术专家)
推荐理由:这本书在讲的是战略,而且解释的最通透,最精炼,如果只推荐一本
书,我觉得还是这本吧,从道,天,地,将,法的角度来观察战略与兵势,是古今中
外通用的道理,这本书属于读一本书可以代表一百本书的典范。
"世界这么大,我要去看看",如果身体没办法走向远方,让"心"出走看看也是
好的。看看他人走过的路,经历过的人生,似乎也得到了不同的人生体验。
108 > 阿里技术人生
推荐书籍:《创造自然》
推荐者:褚霸(阿里云事业群研究员)
推荐理由:本书块头不小,但是非常精彩,我是以难抑制的激动心情捧在手里一
口气读完的。作者以自然为线索展现了洪堡探险和对科学追求的传奇的一生,同时穿
插着欧洲和拉美的历史和人文关键事件。今天我们习以为常的等温线、植被带这些概
念以及大自然本身就是个有机体的观点就是洪堡在拉美冒着生命危险在一座座山头穿
越攀爬、 无数流血的脚印中得出的真知。
对科学的严谨,善于记录、测量、总结,辩证看世界的眼光,孜孜不倦探索自然
的规律,利用自然的力量的行动,影响了一代代人,包括达尔文等人。在今天变化快
速的数字化的世界,洪堡探索世界的方法看起来依然非常有效,推荐阅读!
阿里技术人生 < 109
推荐书籍:《浮生六记》
推荐者:樵隐(机器智能事业部资深技术专家)
推荐理由:我读《浮生六记》,原是冲着"中国文人心目中最完美的女人"去的。
读完之后,对芸的观感一般,却对作者由衷倾佩,可见我不是文人,而是典型的码农
一枚。作为典型性技术人员,一直觉得自己缺乏发现生活中美的能力,也缺乏在坎坷
愁绪中安之若素的泰然。
读了浮生六记,为作者对生活的认真所感动,一碗藏粥,一方印章,一块卤瓜,
一餐野营,一盆插花,均含无限乐趣,于是开始学习喝茶听曲,世界果然多彩了起
来, 于是变成为习惯,跟着生活也变得没那么焦虑了,对比起坎坷记愁的生命脆弱,
一切也许都可以"佛系"处之。读《浮生六记》引发的人生思考,对于我的生活观产
生了巨大影响,因此推荐给跟我一样"自认为没有生活情趣"的程序员们。
「阿里技术」微信公众号 「阿里巴巴机器智能」公众号
扫一扫二维码图案,关注我吧
_GoBack目录如何快速成长为技术大牛?阿里资深技术专家的总结亮了毕业3年,为何技术能力相差越来越大?程序员吃的是青春饭?本质上取决于……技术变化那么快,程序员如何做到不被淘汰?加班越久故障越多,如何跳出程序员的恶性循环?如何在阿里技术面试中脱颖而出?使用开源项目的正确姿势,血和泪的总结前端工程师的未来在哪里?前端 Leader 如何做好团队规划?阿里内部培训总结公开一位优秀前端的自我修养如何成为一名顶尖的阿里架构师?哪些技术好书值得一读再读?这有一份经典书单阿里技术大牛最爱的"闲书",你看过多少?