写点什么

Naresh Jain:在不断演变的情境中应对变化

  • 2011-10-21
  • 本文字数:2862 字

    阅读完需:约 9 分钟

这篇文章是在InfoQ 上发表的敏捷宣言十周年系列文章的一部分。

在解决问题中寻找模式是人的本性,我们倾向于重用已知方法。有时候这是个有用的策略,但通常我们面对的问题与之前的问题并不相同,因此我们之前的解决方法也并不是解决新问题的最适合的方法。在软件开发的世界中,我们常会发现对“唯一正确的方法”,“最佳方法”的渴望。

有趣的是,通常我们所谓更好的方法总是从过往的知识和经验而来。也就是说,我们很少抛弃已经学会的东西,反而直接就在上面发展。现在应该到了超越这种发展思路的时候,如果还说不上创建新的信仰体系,那么至少应该建立新的发展途径。

在过去几年中,当我思考敏捷时,我意识到自己已经超越了(依托现有知识和经验的发展途径)。

时光倒流重回十年前,我通往“未知”(一个超越既定规则的地方)的旅程是从核心极限编程实践开始的,之后更广泛地接触敏捷文化,接着赶了精益的潮流,顺便也没错过AgileUX、DevOps、Product Discovery 等等。

换句话说,这么积累下来,我对敏捷方法的理解和观点变成了这个样子:

以前,我相信整洁的代码就是一切,软件企业应该把代码放在至高无上的位置上,因为这是他们真正拥有的唯一资产。而后当我参与了一些紧跟时代的成功的软件大腕儿企业,才发现他们对整洁代码的关注是如此之小。实际上,他们视代码为负担,总想尽可能快地将其摆脱。

并非每家公司都是一个样子。一些公司极度渴求重构和TDD。而对另一些公司而言,技术和实施方案的变化是如此之快,如果他们不站在潮流的浪尖之上,无论代码有多么整洁他们都无法生存下去。一些公司纠结于决策信息的缺乏,而另一些公司则为过量的信息所窒息。一些公司深陷于失败的管理,而另一些则缺乏执行力。

我真的很享受嘲弄地看着一些人把敏捷当作“放之四海而皆准” 的方法。有很多有着不同痛点的公司,每家公司都在不同的时间点需要不同的解决方案。没有放之四海而皆准的方法!

毫无疑问在过去十年中,敏捷帮我解决了许多在软件产品交付期间面临的典型的挑战。然而对我而言在过去四年中,瓶颈已经从软件交付转移到挖掘适合的产品,我面临的这类挑战不能通过应用敏捷和精益完全解决。

过去十年我们身边也已经发生了许多变化。业务性质、对分布式开发的需求、使用的工具和技术、强大的网络和移动平台的普遍性,几乎一切都发生了变化。想想我们遇到了多少变化,很应该调整一下我们的原则和方法去适应新的情况。

几年前,我写了一篇名为"我不是在攻击敏捷宣言原则,我在渴求改进。"的博文。这篇博文抓住了我在工作中应用敏捷原则时曾面临的一些挑战的本质。

我确实认为“精益创业(Lean-Startup)”社区已经解决了许多问题。我已经有几年没见到敏捷社区有多少新成果了,但当我关注精益创业社区时,我感觉到了一股清新的气息。

Industrial Logic ,我们已经达到了非常高的精益程度,几乎去除了许多标准敏捷实践,如 backlog、用户故事、迭代、规划会议、回顾、每日站立会议,在某些情况下甚至去除了 TDD 和结对编程。取而代之的是,目前我们已经实践了几年客户开发、有效学习(A/B 测试、伪装特性,…)、持续交付和其他精益创业的概念。迄今为止,我们都爱上了它,并且在当前的情景之下确实看到了不错的效果。然而,在我们继续前进之前,需要先理清一些头绪——这正是有意思的地方。

几年前,创业公司,尤其是社交网站和移动开发方面的创业公司??,围绕着软件开发在敏捷和精益思想之上提出了一些有意思的观点。在最近的几年里,精益创业社区已经对此进行了很好的总结。他们已经把所有有意义的敏捷和精益思想封装了起来,但与此同时,他们也提出了一个敏捷和精益的新方向。

我相信精益创业在今后几年中将会对软件社区产生重大影响。

下面是我对今天的敏捷生态系统的看法:

精益创业社区很不错。然而我同样也为在软件开发领域之外所发生的事情感到兴奋,这让我更好地理解了软件生态系统。

例如,多年来关于软件开发我已经了解了以下内容:

  • 软件开发过程和产品中的不确定性是固有的和不可避免的。请看这一链接。
  • 对一款新软件产品来说,在软件生态系统被使用之前(甚至可能要更晚些),这一系统将不会被完全理解或了解。
  • 可预见性悖论 —— 我们在软件项目之前花在规划和估算上的时间越多并不意味着我们的预测就越精确。请看这一链接。
  • 完全地说明或测试一个交互式系统是不可能的。请看这一链接。
  • 直到你有了一个解决方案之后才会对问题有充分理解。请看这一链接。
  • 如果做某件事很痛苦,那更频繁地去做它将会缓解痛苦。
  • 更频繁地抛开代码,让整体成本保持下降。
  • 更多的时候慢下来并留意你的周围(更紧密的反馈循环),这会让你前进的更快。
  • 随着越来越接近混沌区域,软件更快速地发展。
  • 压根儿没有什么最佳实践,全都与情境有关。
  • 通常最成功的产品会膨胀起来并被自身重量压垮。
  • 改善(Kaizen —— 小幅的、逐步的、持续的改进) 只能帮你进步到某个程度。改革(Kaikaku —— 突破性改善)能帮你到达飞跃的改进。

我能够解释一下为什么我注意到软件开发中的这些行为,但无法真正解释这些潜规则。敏捷和精益方法确实帮我解决了许多挑战。然而我仍然不能解释这些潜规则。直到我偶然发现了下面两个概念:

  • 认知复杂性:我有幸参加了 Dave Snowden 2008 年在爱尔兰利默里克的一个主题演讲。他让我迷上了复杂适应系统(Complex Adaptive Systems),尤其是他的 Cynefin 框架。他有些很棒的主意,可以让软件社区受益。许多组织知道他们需要改变,但却害怕改变。他们在寻找安全可靠的方法来进行改变。Dave 用这一方法解释了核心问题以及“安全失败实验”是如何真正帮助组织应对变化的。许多组织在奋力衡量错误的指标,迫使人们去欺骗系统。Dave 关于“回顾一致性或基本归因误差和弱信号侦测”的观点对解决部分上述关心的问题很帮助。我尤其喜欢他在这里的叙述。
  • 幸福感预测心理学: Daniel Gilbert 的书《撞上快乐》中的轶事和研究成果征服了我。它帮助我理解了在把我们自己投射至将来(或过去)时,头脑所玩的“脑补”把戏及其局限性。我才刚刚进入这一领域,前面的路还很长。

最后我想留下一则古老的梵文偈颂作为精神的食粮。

无论檀香木被切得多细,它也不会放弃芬芳,
无论一名商人多么年老,他也不会放弃收益,
无论如何在机器中压榨甘蔗,它也不会变苦,
无论你变得多么有学识,也不要停止学习。

关于作者

** Naresh Jain ** 是 Industrial Logic 的总监,亚洲运营及敏捷教练。从组织变革到增强开发人员生产力,Naresh 帮助组织 _ 拥抱、扩展和保持 _ 本质的敏捷和精益思想。目前,Naresh 投入大部分精力传播和构建 Industrial Logic 的 eLearning 平台。他当前的领导角色要求他扮演各种不同的重要角色,包括理解市场需求、按优先级排序 & 设计解决方案、协调市场 & 销售策略、亲自动手开发(编码 & 测试)和最终部署 & 管理产品服务器。

查看英文原文: Naresh Jain: Dealing with Change in an Evolving Contextual World


感谢郭晓刚对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2011-10-21 00:002304

评论

发布
暂无评论
发现更多内容

立即注册 | 线上讲座:借助 NGINX Plus 优化物联网数据传输和应用安全

NGINX开源社区

TLS 物联网 IoT mqtt NGINX PLUS

Region Migration 技术原理 — 共享存储架构下的高效数据迁移策略

Greptime 格睿科技

数据库 架构 分布式 存储 时序数据库

ai做ppt的软件有哪些?这5款AI工具值得推荐!

彭宏豪95

PPT 办公软件 AIGC 效率软件 AI生成PPT

解读 Amazon Q | 用 AI 聊天机器人连接你与未来的无限可能

亚马逊云科技 (Amazon Web Services)

就业寒冬,最终拿到5个offer的一些经验分享

霍格沃兹测试开发学社

如何定期清理数据库中的无效数据?

NineData

数据清理 数据归档 NineData 无效数据 优化数据库

1688API接口推荐:1688商品列表数据接口

tbapi

1688 1688API 1688商品列表数据接口 关键词搜索1688API

《鸟哥的Linux私房菜 基础学习篇 第四版》PDF

程序员李木子

Python笔记六之多进程

Hunter熊

Python 多进程

高效自我介绍与面试回答技巧大揭秘!建议收藏!

职场工具箱

软件测试岗位我是如何拿到5个offer的一些经验分享(附面试题)

测试人

软件测试 面试题

都2024年了,你还不知道这些产品经理的必备工具?

职场工具箱

产品经理 产品经理洞察指南

职场小白如何书写保姆级简历?附优质模板

职场工具箱

简历优化 简历模板 简历 简历规划

Java 包装类:原始数据类型与迭代器

小万哥

Java 程序人生 编程语言 软件工程 后端开发

20个Python random模块的代码示例

华为云开发者联盟

Python 开发 华为云 华为云开发者联盟

以守为攻,零信任安全防护能力的新范式

权说安全

零信任

编程两年半了,还要坚持写博客吗?

何书悦

程序员 写作 自媒体 代码人生 阅读

2024Java大厂高频面试题,揭秘今年Java春招面试必问问题有哪些

阿里、莫言

Java java面试 金三银四

人工智能(AI)+、+了什么?互联网+又是什么?

天津汇柏科技有限公司

互联网+ #人工智能

第42期 | GPTSecurity周报

云起无垠

利用阿里巴巴1688商品详情API:实现电商数据的快速整合

技术冰糖葫芦

API 接口 API 策略

二本渣渣生,两次冲锋,十面阿里(Java岗)感谢HR终于让我过了

阿里、莫言

Java 面试 java

一定要看!10个产品经理必备的核心技能

职场工具箱

产品经理 产品经理洞察指南

一分钟了解JAVA语言

小齐写代码

小红书笔记详情API:让内容创造更高效含代码

技术冰糖葫芦

API Explorer API 接口 API 策略

你的隐私堪忧!彻底清空磁盘,只需要1行Python代码

程序员晚枫

Python 磁盘 隐私 Python自动化办公 自动化办公

高优异步任务解决双重异步集合点阻塞问题

FunTester

Naresh Jain:在不断演变的情境中应对变化_研发效能_Naresh Jain_InfoQ精选文章