现代化敏捷

2016-12-01   出处: Industrial Logic  作/译者:Joshua Kerievsky/亚然

现代化敏捷

当你看见有人还在使用老旧过时的笔记本电脑时是否会感觉到不妥呢?而现在很多人在实践敏捷的时候就是给人这种感觉。

敏捷的概念诞生于20世纪90年代中期,比起那个时候,就目前的敏捷来说已经变得更先进了,但是大多数团队实践起敏捷来感觉还是像上个世纪一样。同时,敏捷的先驱者和从业者们已经能够识别常见的问题,尝试了新的方法,并找到了更好的工作方式。

如今的敏捷就像新一代的笔记本电脑:更轻,更安全,更简单,更坚固,更强大,更乐于使用。它看起来和感觉完全不同于传统的敏捷,难道应用现代敏捷只能是高级的从业者吗?不,因为只为高级用户设计的现代笔记本电脑不超过一个。

重塑敏捷

几年前,当我意识到新的苹果笔记本电脑不再有内置的光盘驱动器时, 我有些失落。 然而几个月过去了,我很庆幸没有错过新一代的苹果电脑。

这就像现代敏捷一样:你会发现曾经认为是很有价值的东西也许并不需要。

我曾经以为故事点估算、计算速率和固定长度的时间盒(又名冲刺或迭代)是必要的,但现在这些在我的敏捷实践里都用不到。

现代敏捷简化了传统的敏捷过程,同时使他们更牢固。 例如,持续部署需要一个可靠的发布流水线,你可以快速、安全地向用户交付价值。 看板帮助人们关注面向用户的价值流而不是陷入过时、传统的规划的仪式。

现代敏捷经得起磨损,优于传统的敏捷过程现代敏捷比如传统敏捷过程更加经得起考验,因为它在商业和技术灵活性之间取得了更好的平衡。 这个更接近敏捷的字面含义:快速前进,轻松优雅。

现代敏捷的是什么?

对于这点,每一个资深的敏捷从业者都会有不同的想法。我分享的是我最新的想法,当然随着我学的更多,这个想法也肯定会改变。

现代敏捷由四个交叉的方面构成,包括十几个交叉的原则/做法:


下面是关于四个方面的描述:

让用户有更好的体验

Kathy Sierra在她的书中揭示了:让用户有更好的体验。你的目标就是无论用户使用你的软件做什么都让他们感觉很棒。太多的公司试图拥有令人赞叹的技术或者使公司成为市场里的佼佼者而并没有专注于用户。史蒂夫·乔布斯曾经说过苹果在开发新产品之前都会先考“我们能给用户带来怎样难以置信的体验?我们能在哪里获取客户?”而不是看有什么惊人的技术和市场。Jeff Patton的用户故事所反映的就是专注于用户和他们的需求,发现用户的整个故事,继而建立正确的产品。

让安全成为先决条件

Paul O'Neill,美国铝业公司前首席执行官,曾说过“优先次序会改变而我们对于安全的专注永远不会改变。安全是一个先决条件,而不是一个优先事项”。当人们生活在恐惧中时,就不能很好地发挥作用。如果有人被解雇或因为错误而受到惩罚,人们就会害怕有同样的事情发生在自己身上进而影响生产力。当安全是前提时,用户会信任你的软件,开发商也不怕改变代码并且会从错误中学习。在管理组织事故的风险中,James Reason指出,大多数错误都是从生活中潜在的条件和问题开始的。把安全作为前提,使其他现代敏捷方面,如实验和学习可以迅速、持续的传递价值。好的软件需要保护那些使用它,创造它,支持它,购买和售卖它的人。我把这称为Anzeneering,它构成了我们在现代敏捷中所做的一切。

更快速的尝试和学习

最有效的软件组致力于实验和学习。在Intuit公司,产品开发决策采用的是基于谁有最好看的PPT或大声争论。而现在这些决定是基于从生产试验中收获的定量数据。在Airbnb,工程师需要部署监控核心业务指标,来评断是否产生了实验预期结果。在工业逻辑中,和试验的过程中,会指导我们进行持续部署,Mob编程和精益规划。这本书《Experimentation Matters: Unlocking the Potential of New Technologies for Innovation and Little Bets: How Breakthrough Ideas Emerge from Small Discoveries》很好的说明了快速尝试和学习的好处。

持续不断地提供价值

现代敏捷受到精益软件开发的严重影响,正如Mary和Tom Poppendieck在《Implementing Lean Software Development: From Concept to Cash》一书中所描述的一样。什么是您的发布瓶颈,什么将有助于您更快的交付价值给用户? 在《Prioritizing Happiness》一文中,我称这样的假设为幸福:快速的经过验证并产生用户价值。这样做需要安全的规划和交付,频繁发布到生产环境。

现代敏捷原则/实践

四圈中的许多原则/做法与其他圈子重叠。在下面的描述中,我将用标签使这些重叠清晰。黑体表示项目所属的主要组:

认可你的工作

如果你想让用户有好的体验,你需要定义这是什么。认可敏捷对于产品社区发现和调整有一个明确的愿景,任务和测试成果是一个轻实践。这不是你在一个项目开始时做的事情:认可是一个持续不断的努力。好的认可就像护栏:阻止你上路。Ainsley Nies和Diana Larsen,两位专家,在他们的书中——《Liftoff: Launching Agile Teams & Projects.》描述了这一重要的实践。

利用精益创业

迅速地实验与学习&让用户有更好的体验&使安全成为先决条件。

无论你是为大企业还是小企业,或是介于两者之间的企业开发软件,学习了Eric Ries' 在精益创业上的理念你都会做的很好。在我们的追求用户体验时,Eric使我们认识到,我们大多数人是“在不确定条件下进行操作”,并阐明了猜测用户的需求是多么的不安全。在设计代码之前,他对于建立什么提出了很多方法,包括快速、节约实验和快速验证/无效假设。如果你不了解用户实际使用中能从你的软件中有什么样的体验,能从中受益什么,那你可能需要重新定义一下你所做的事了。如果你正在为你的企业规模努力着,精益创业会使你做得很好。《How High Performance Organizations Innovate at Scale》——Jez Humble, Joanne Molesky and Barry O'Reilly.

运用Lean UX

迅速地实验和学习&使用户体验更好

与Lean Startup密切相关的是Lean UX,这是一个快速的,廉价的,分析驱动的方法并且可以产生卓越的可用性。我从Laura Klein那了解到了Feature Fake技术(Lean UX 技术的一种),他是这一方面的领军人物。你也可以从Jeff Gothelf和Josh Seiden那了解更多关于Lean UX的技术。 《Applying Lean Principles to Improve User Experience 》和《Laura Klein's UX for Lean Startups: Faster, Smarter User Experience Research and Design.》

频繁的合作与整合

快速的实验与学习 &确保安全为先决条件 &持续不断的提供价值

团队内部或者跨团队之间协作、整合的差,往往会使组织暴露在危险中。这是软件开发过程中出现问题的根源。单独工作往往会产生知识孤岛(当只有一个人知道如何工作),更大的缺陷,较弱的解决问题能力,更多的干扰和更少的纪律(特别是围绕编写良好的测试用例和通过重构改进设计这一方面)。结对是有两个人共同完成工作,并定期的进行交换。在三个或更多的人一起工作时,移动是一个发展组织的办法,可以定期的交换这些驱使键盘/鼠标的人。这两种办法可以提高学习的速度,加快流动成果,减少对关键技能/知识依赖性的危险,更容易改变技术、带出最好的技术人。一些组织也非常有效地实现了深入个人工作,随后通过代码审查的协作迅速地集成到一个主代码库。

让失败是安全的

确保安全的先决条件实验&快速地学习

如果你对一种文化感到恐惧,你幻想的做法或过程都不会帮助你。最好的公司培育的文化就是,人们在文化中对实验、失败、争议和自我感觉是安全的。Dave Snowden关于使用安全的失败探索和小规模实验的探讨可以帮助你在一个复杂的系统背景下,学习到有价值的经验教训。以安全为前提的公司是值得我们学习的。Etsy就是一个鲜明的例子,一个新员工意外删除了一个重要的CSS文件从而搞垮了他们的网站。他们做了什么?他们奖励了这个工程师,因为是他发现了这个显着的缺陷从而使原有的设计变得更加弹性化。

测试与重构

确保安全的先决条件 &持续的交付价值

对于敏捷来说测试和设计是必不可少的。现代敏捷者进行探索性测试,自动化测试,测试驱动的开发(主要是设计活动,其次是一个测试活动),和一些手工测试。一个关于现代敏捷的定量研究发现,通过产业逻辑在测试和重构上进行训练使得缺陷下降超过80%。使用可靠的,高速的,自动化的软件行为检查,会让程序员有一个安全网,这使得他们能够更快的工作,减少代码的改变和产生缺陷的恐惧。重构 (改进现有代码的设计而不改变行为)是保证设计复杂性、代码简单化和通俗易懂(使代码更容易改变)的关键性做法。重构是修改,这在拉丁语中的意思是重新看到。随着我们了解到更多,我们进行修改,进而使我们发现在早期工作中的缺陷,并努力提高代码的设计、可读性和简单化。测试和重构对一个团队的速度是至关重要的,因此它们是现代敏捷的一个关键组成部分。

尊重和欣赏员工

确保安全的先决条件

真诚的尊重(不论角色、资历、学历、种族或性别)和欣赏是建立一个安全文化的核心。Anzeneers表示尊重就是通过保护他人自己的时间、金钱、信息、声誉、人际关系和健康。当Slack这个app给我发送电子邮件说,他们给我的帐户退还一些金额,因为我有一个月没有访问他们的服务,这会使我觉得被尊重和照顾了。Paul O'Neill,美国铝业前首席执行官、美国的财政部长称:组织要想一直保持卓越性,他们就必须要有这样的文化,就是让员工每天都能受到尊重和赞赏。在工业逻辑中,我们用DueDProps定期地赞赏别人。

回顾失败而不指责

确保安全的先决条件实验和快速地学习

 Seth Godin曾说,“人们不害怕失败,他们害怕责任。”在Norm Kerth的2001部经典书,《Project Retrospectives: A Handbook for Team Reviews》提到“一个最明显的恐惧的人当第一次尝试回顾的是,仪式将成为一种负面的牢骚会,穿插指责和反指责。”因此, Norm 定义了他著名的理论——Retrospective Prime Directive,在回顾失败之前要习惯性的考虑一下:无论我们发现什么,我们都要明白并真正地相信,每个人都对工作尽了自己最大的努力,人们都考虑了他们当时所知道的,他们的技能和能力,可用的资源,以及手头的情况。这个指示可以让回顾失败变得安全,并且可以集中的进行学习。Etsy的John Allspaw 在《AllspawBlameless Postmortems and a Just Culture》中也提到了这一点。Esther Derby和Diana Larsen有一个很好的书叫《Agile Retrospectives: Making Good Teams Great.》。

专注于流程

不断提供价值

现代敏捷喜欢连续流动在时间盒的工作(如短跑或迭代)。看板可以保证连续流动。使用看板,团队可以把工作可视化,拉出一个重要工作列,过程中对工作的限制,支持服务类(如紧急或日常工作),可视化并消除生产中用户的瓶颈和流量价值。你不用花时间去预测在一个时间里你能做多少工作,计算精确的故事点,或者想通过图表来找出更好的方案。这是精简敏捷规划。David J Anderson在《Kanban: Successful Evolutionary Change for Your Technology Business.》这本书里就有所描述。

持续部署和发布

持续交付价值&安全的先决条件

 Kent Beck曾经向我指出Timothy Fitz的一个惊人的视频叫做 "Doing The Impossible 50 Times A Day."(唉,一个倒霉的ISP弄丢了这个视频,但他写了一篇关于它的文章)。Timothy关于持续集成(CI)中IMVU(精益启动的诞生地)的描述比早期敏捷者被安全地部署到每天生产多次的实践构想远。 该拨号盘已转为11个。持续部署的能力早期,生产中的快速实验(例如α/β测试),并允许你尽可能的快速、安全地提供用户最需要的。这是我最喜欢的精益影响的做法之一,因为它大大缩短了“概念到收益”周期。Timothy Fitz撰写了一份CD的网络课程与产业逻辑和目前正在写这个现代敏捷实践的一本书。Jez Humble和David Farley是在持续交付实践这方面的资深专家和作者——《Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation.》

形成产品社区

持续交付价值 &安全的先决条件

如果没有正确的人,你将无法创建使用户感觉很棒软件。正确的人组成了你的产品社区。用David Schmaltz的话来说,产品是“用户的数量影响产品或被产品影响。”David说,社区总是比你想象的要大,大多数产品面临的最主要问题就是对自己的社区性意识的缺失”。“一个产品社区不分前端、后端、中间件和UX团队,每个都有它自己的积压。一个产品社区是全栈的,从准备一个原始的解决方案到发展成为一个成熟的产品,这一过程让用户体验很棒,并有助于组织成功。形成一个产品社区有助于人们认识到谁做了什么,以及他们是如何至关重要的帮助实现关键成果的。界定和完善你的产品社区经常发生在认可过程中。

演进的解决方案

持续交付价值&确保安全的先决条件&实验与快速地学习

 为了快速发展解决方案,我们必须组织人员和团队,计划建立什么样的团队,合作,整合,开发和发布。现代敏捷在用户之前快速地获取的产品需求或功能,以便于迅速学习反馈。进化设计是这种学习的关键,也是一种面向用户的价值流的最佳方式。它也是一个非常有用的方法来发现和修复内部或产品社区之间合作和整合的风险。

拥抱变化

多年来,敏捷运动已经从20世纪90年代中期的一小群先锋者发展到一个庞大的、世界性的专家和实践者。一路上,一些敏捷的基本原理失去了。接受变化是其中之一,特别是当它涉及到改变你的过程。像苹果的硬件设计师,现代敏捷创新者大胆提出质疑,尝试新的方法,记录成功和失败,精心设计更好的工作方式。现代敏捷是勇气、反馈、简单、交流和尊重人的结果。

让我们一起来探索现代敏捷软件开发!



【英文原文:https://www.industriallogic.com/blog/modern-agile/】

{测试窝原创译文,译者:亚然}

译者简介:亚然,软件测试爱好者,长期从事软件测试工作




声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
289° /2891 人阅读/0 条评论 发表评论

登录 后发表评论