童年
根据发展心理学,童年经历会塑造一个人未来的表现。敏捷宣言发起者大多数在这样的家庭中长大:父亲是自由职业者; 母亲通常是家庭主妇,爱好阅读,有其他艺术或文化相关的嗜好。大部分发起者在他们童年时代搬过多次家,住过几个不同的地方;因此,他们在小时候就得学会应对变化。而且,他们在家里由非常相似的价值受到启发。
他们有富有创造力的母亲,鼓励教育。他们的父亲是自由职业者,从事工程(4人)、商业(3人)、科学(2人) 以及医学(1人)。他们从工程师父亲那里遗传了部分分析能力和技术偏好,从母亲那里继承了部分社会组织发展能力的东西。
他们受到的教育教会他们正确地做事:
[1]:大家期望我们表现良好。
[2]:经常可以听到“去清理你自己的房间”,“你要在学校里好好表现”,“老师是权威,要重视老师。”
[3]:创造力,[即]用自己手头的资源去完成需要做的事情。自力更生。坚持不懈。教育的意义是学习事物如何运作,不一定要在正式环境中。
创立极限编程
1990年代,敏捷一哥Kent Beck创立了划时代的软件开发方法论:极限编程(XP)。提及XP,就不得不说一下有趣的C3项目,这个项目的全称Chrysler Comprehensive Compensation System,其项目初始目标是到1999年为克莱斯勒公司的全部87,000名员工处理薪酬。
虽然诸多敏捷大神级人物都先后参与到这个项目中,但系统仍然比预定时间延迟几个月才上线,而且该系统上线后的性能一直是一个问题——只能处理10,000名员工,最终,公司在2000年2月终止了该项目。
虽然这个项目从根本上来看算不上成功,但从另一个角度看,从这个项目中诞生了XP方法和一系列优秀的软件开发实践,因此它在软件工程的发展史上留下了浓重的一笔。
创立敏捷宣言
2001年2月,带头大哥Kent带领17位同好,在美国的雁门关——犹他州雪鸟滑雪场创立了敏捷宣言。后来的故事大家都知道了。
专访
以下摘译自Kent Beck的专访:
https://www.firsthuman.com/podcast/23-leaving-facebook-with-kent-beck/
开场语
每天出门前要想的最重要的事是:我是谁,今天我是谁。至于要去哪里,去见谁,这些都不是最重要的。
极限编程
做了17年码农,知道怎么开发软件,最后汇总成XP,于世纪之交出版了划时代的著作《拥抱变化:解析极限编程》。
与传统方法的不同在于做事情的顺序。
传统方法会做很重的设计和计划,然后去实现。而XP是不要计划每一件事。
XP是一个社会化的过程(social process),鼓励人们彼此交谈,并为此创造舒适的环境。在每天当中,人们两个人用一台电脑。
在每周的周期中,都输出一些有价值的东西。
不是通过合同来产生控制感,而是在互动中发挥影响力。
为什么没从极限编程中赚钱
Scrum能赚钱主要是有个商业模式,有认证。
PM相对于开发人员更有决策权,这也是Scrum能流行的原因。
人们一听,Certification,哇塞。Master,哇塞。CST,CSTT,哇塞。
不反对这种教授的方式。但给我钱,我也不会给你个XP证书。
Facebook
在Facebook七年。
我可以教人们Be Yourself,今天比昨天更好。
框架、仪式这些东西容易,但让人们重新专注在开发工作上不易。
不要过度设计,要随着需求涌现,增量式地实现。对于用户需求,不要做太多基于假设的预测,要响应、适应、实验。不然你设计了完美的东西,但没人用。
Time Check
主持人问Kent还有多少时间,Kent说更关注主持人是否还有attention。
(1小时22分最后结束时,Kent说他还精力充沛。)
Facebook可以做些什么改善
加入Facebook时,2000人,离开时,25000人。
Facebook的文化是,每6个月每个人都要证明自己对Facebook有什么Impact。
你的Metrics上升,你就赢了,不然在绩效Review中会很难看。这样你做事时就只会关注upside,而无法顾及downside。
再谈极限编程的根基
XP是基于人们之间安全的互动,需要为此创建安全的环境。
Kent在华为的分享
from@徐毅:
Kent说他2011年刚入职的时候发现,他书里写的怎么开发软件的方法,这帮人全都没用,但是却很成功!他抓狂了[偷笑]
Kent去facebook改变了很多,不是那个eXtreme愤青了
中间他开始担任教练角色,教练其他有潜力的工程师,但是却没有教任何技术的东西,因为TDD很简单,看看他的书即可,他教的全都是个人(personal)和人际(interpersonal)技能。
HR调查研究发现参加了他的教练项目的工程师相比其他没有接受教练的差不多的工程师,得到提拔的机会高一倍。
Kent介绍了他的3X(Explore、Expand、Extract)模型,然后说他自己关于极限编程最大的问题就在于试图用一种方式来适配这三个不同阶段。