写点什么

为什么谷歌的开发人员认为敏捷开发是无稽之谈?

  • 2019-08-15
  • 本文字数:2248 字

    阅读完需:约 7 分钟

为什么谷歌的开发人员认为敏捷开发是无稽之谈?

本文是 Quora 上的一篇回答,作者是一名前谷歌工程总监,他认为敏捷宣言从较高层次而言,与谷歌工程师对软件开发的看法是很接近的。但如果落实到细节,比如敏捷宣言背后的某些原则,其所代表的主张短迭代和低文档的 Scrum 流程,过于集中于短期思维,不适用于谷歌这样革命性的工程项目。


在 Quora 上有人提出了"为什么像谷歌这种公司的开发人员认为敏捷开发是无稽之谈?"的问题,关于此,作为一名前谷歌工程总监,David Jeske 提供了一些个人见解,以下是 David Jeske 的回答。


对很多人来说,敏捷意味着很多事情。我认为敏捷宣言从较高层次而言,与谷歌工程师对软件开发的看法是很接近的。


  • 个体和互动高于流程和工具

  • 工作的软件高于详尽的文档

  • 客户合作高于合同谈判

  • 响应变化高于遵循计划


然而,一旦把这些高层次的观点落实到细节,这些协定就开始褪色。敏捷有一些很好的想法,但它也存在一些问题元素,即过于集中在短期思维,对于像谷歌这样的公司进行革命性工程项目并不太适用。在不深入细节的情况下,让我们来看看敏捷宣言背后的原则


让我们从共通点谈起。谷歌的发展风格是敏捷宣言背后的原则中所提到的激励赋能个体的例证。在这些原则中,最符合硅谷风格,可能本身就是受到硅谷启发的几条原则包括:


  • 激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。

  • 最好的架构、需求和设计出于自组织的团队。

  • 团队定期反思如何能提高成效,并依此调整自身的行为。

  • 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。

  • 以简洁为本,它是极力减少不必要工作量的艺术。


这些原则对于聪明的工程师来说几乎是常识。我认为,硅谷打造了一种以赋能和信任个人为中心的文化。


然而,这些原则的其他部分却并不符合谷歌的开发文化。而这些部分实质上造就了短期迭代的 Scrum 流程。它们似乎更适用于特定类型的开发,最显著的是面向咨询或合同的软件编程,在这种情况下,客户是组织的外部人员,因为他们为开发付费,所以客户占主导地位操纵局势,可以在任何时候改变主意:


  • 我们的首要任务是通过持续不断地及早交付有价值的软件来满足客户。

  • 在整个项目中,业务人员和开发人员必须每天一起工作。

  • 不论团队内外,传递信息效果最好效率也最高的方式是面对面交谈。

  • 欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程对变化进行掌控。

  • 频繁地交付可工作的软件,从几周到几个月不等,倾向于采取较短的周期。


这种短期规划、直接与客户接触和持续迭代的风格,非常适合具有简单核心和大量客户可见特性的软件,这些特性的可用性可以增量方式上升,不太适用于那些只有非常简单的用户接口和大量隐藏的内部复杂性软件,这些软件可能直到相当完整时才具有可用性,或实现客户无法想象的飞跃式解决方案。


像谷歌这样的公司一直在编写革命性软件,这些产品以前从未有人编写,在复杂的子组件编写完成之前,软件是无法工作的。这让我立刻想到了 Bigtable 和 Borg 项目。Bigtable 是一种广泛复制的分布式数据库设计,而 Borg 是最早出现的超大规模集群/云管理器之一。这种类型的颠覆性创新需要大量的预先设计时间,并且需要在超过一周的迭代中为编写组件而工作。由于项目的外部接口如此简单,以及内部复杂性如此之高,以至于许多工作对“客户”甚至无法可见的,因此没有办法编撰客户可见的相关用户故事。这种类型的软件需要 8-20 个月的时间向客户交付第一个工作版本。


像 Bigtable 和 Borg 这样的项目是反 scrum 的。它们代表了技术领导者非常长远的考虑。在单独一周的时间里,他们并没有做一些可以满足少量需求的事情,而是为集群软件开发方式的根本性转变打下了基础。这项投资不仅在谷歌获得了令人难以置信的回报,而且影响了整个行业。


其他行业也有类似的情况。从税务会计软件到电脑游戏,有些软件在部分完成后并不适宜交付给终端客户。


如果我被要求重写上面的敏捷原则,使之更符合谷歌风格的开发,它们可能会是下面这个样子:


  • 我们的首要任务是提高客户(和程序员)的生产力和对信息的访问。处理你能找到的最迫切、最常见的问题,并产生最大的网络影响。不要仅仅满足客户的要求,要去深入了解客户,并彻底改变他们的世界。

  • 开发人员应该创建一个谷歌设计文档(一个相当小型的,但是结构化的设计文档),对项目做出解释,这个项目希望实现什么目标,以及为什么不能用其他方法来完成目标。此文档应该分发给所有项目干系人,以便在项目开始之前获得早期反馈。书面记录是必不可少的,因为它确保对项目何时抵达成功以及如何达到目标有一个清晰和一致的理解。

  • 在项目的所有阶段,大型组件的关键设计元素应该在设计文档中得到简明的解释和记录。

  • 飞跃式创新。完成并部署一个飞跃式创新比追求完美更重要。不可能做到完美无暇。相反,要灵活,并计划在技术栈的每一层不断地重新创造和改造。

  • 在合理的情况下,尽可能快地交付工作软件,并非一味地追求尽快交付。在对外交付之前先在内部使用自己的产品。确保产品在交付前达到高质量标准。产品的质量比交付产品所花费的时间更重要。


虽然敏捷宣言从高层次而言有足够的灵活性,可以和以上这些原则配合应用,但是我认为这些重写的原则与主张短迭代和低文档的敏捷/Scrum 流程还是有很大区别的,而这些主张短迭代的低文档敏捷/Scrum 流程如今几乎已经成为敏捷开发的同义词。


谷歌程序员觉得敏捷开发没搞头,你怎么看?| 话题


作者介绍:


David Jeske,计算机工程师,前谷歌工程总监。


英文原文:


Why do some developers at strong companies like Google consider Agile development to be nonsense?


2019-08-15 08:3036092
用户头像

发布了 63 篇内容, 共 42.1 次阅读, 收获喜欢 119 次。

关注

评论 9 条评论

发布
用户头像
該敏捷的敏捷,该规划的规划
2019-12-19 17:18
回复
用户头像
和 震惊 有异曲同工之妙
2019-12-13 08:39
回复
用户头像
“Don’t give the customer what they ask for” 翻译成 不要仅仅满足客户的要求?客户需求A,可是我们想做B,我们是要同时把A和B都做了吗?还是我们告诉客户我们不做A我们在做B?
2019-09-06 11:27
回复
用户头像
精益开发了解一下?
2019-08-22 17:29
回复
用户头像
适合的才是最好的
2019-08-21 14:40
回复
用户头像
内容中肯,标题耸人听闻
2019-08-20 13:56
回复
没有这个标题 怕大家发现不了这篇 内容的中肯啊~
2019-08-21 16:02
回复
用户头像
Stacey矩阵已经明确敏捷适合的区域
2019-08-15 16:39
回复
用户头像
不错,因地制宜,适合自己的才是最好的。
2019-08-15 10:10
回复
没有更多了
发现更多内容

关于JAVA的常用工具类问题

伤感汤姆布利柏

软件测试/测试开发/全日制 | Python全栈开发实战:构建安全可靠的Web应用

测吧(北京)科技有限公司

测试

让数据要素合规高效流通!海南这么干!

天翼云开发者社区

云计算 大数据

数字新生态:低代码开发的实践应用

不在线第一只蜗牛

低代码 数字化 数字发展

2024效果图渲染用什么配置的电脑?效果图网络渲染

Renderbus瑞云渲染农场

云渲染 渲染农场 Renderbus瑞云渲染 效果图渲染

详解数据库分片,大幅提升Spring Boot查询MySQL性能

高端章鱼哥

MySQL 微服务 Spring Boot

软件测试/测试开发/全日制 | 深入学习React:Python全栈开发中的前端框架精要

测吧(北京)科技有限公司

测试

云数据库与Web网站:构建高效、可扩展的网络应用

天翼云开发者社区

数据库 云计算 大数据

面向企业级应用复杂性的低代码开发平台架构

快乐非自愿限量之名

低代码 企业开发 企业开发系统

软件测试/测试开发/全日制 | Python全栈开发:学习使用Nginx配置Web服务器

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 | Python全栈开发:安全防范与Web应用的漏洞预防

测吧(北京)科技有限公司

测试

列式云数据库与关系型云数据库:区别、优缺点与选择

天翼云开发者社区

数据库 云计算 关系型数据库

当浏览器能够自动隐藏用户IP地址,“IP数据库”的出路在哪里?

郑州埃文科技

IP

软件测试/测试开发/全日制 |Python全栈开发中的缓存技术应用与性能优化

测吧(北京)科技有限公司

测试

每个程序员都该学习的5种开发语言

快乐非自愿限量之名

Java 程序员

软件测试开发/全日制/测试管理丨测试左移体系

测试人

软件测试

智能监控:业务监控新选择,效率提升新动力

观测云

智能监控

物联专栏丨物模型,设备对话基础

inBuilder低代码平台

开源 低代码 物联网

软件测试/测试开发/全日制 | Python全栈开发中的自动化部署与持续集成实践

测吧(北京)科技有限公司

测试

基于领域驱动设计的低代码平台的设计与实现

EquatorCoco

AI新纪元:AI原生企业崛起

九章云极DataCanvas

基于Tosca和Terraform的多云资源编排探索

鲸品堂

工具 运营商 编排调度

软件测试/测试开发/全日制 |从Git到Jenkins:Python全栈开发中的版本控制与自动化

测吧(北京)科技有限公司

测试

软件测试开发/全日制/测试管理丨持续集成、持续交付、持续部署

测试人

软件测试 持续集成 自动化测试 持续交付 测试开发

12 月 NFT 市场动态:强劲增长塑造年终趋势

Footprint Analytics

区块链 加密货币 NFT

SQL 解析与执行流程

KaiwuDB

数据库 sql

2024第十届上海国际智慧工地展览会

AIOTE智博会

智慧工地展览会 智慧工地展会 智慧工地展

软件测试/测试开发/全日制 | 理解深度学习在图像识别中的应用

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 | Python全栈开发:构建基于RESTful API的微服务

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 |Python全栈开发:利用OAuth与JWT实现身份验证

测吧(北京)科技有限公司

测试

为什么谷歌的开发人员认为敏捷开发是无稽之谈?_语言 & 开发_David Jeske_InfoQ精选文章