vlambda博客
学习文章列表

闲话敏捷开发之一:敏捷是个啥?

01

先讲个小故事

一天,你带着女友去吃饭,一口气点了10道名菜。

服务员:您点的菜有点多,我们上菜是一起上的,您恐怕要等很久。

你:没关系,我正好跟美女多聊聊天。

……

说着你和女友天南地北的聊起来,时间很快就过去了,你们越聊越饿,然而一道菜也没上

……

你:怎么还没上菜?来好久了。

服务员:不好意思让您久等了,我们是所有菜都做好了一起端上来的。

你:……

上面这个故事在现实中已经很少能遇到了,现在的餐厅都很重视顾客体验,会尽量保持顾客餐桌上有菜可吃。但是在软件开发领域,多年以前我们就是用类似这种一起上菜的方式来开发软件的,我们给这种开发模式取名叫瀑布式开发——不到所有功能都开发完,是不会交付上线的。

闲话敏捷开发之一:敏捷是个啥?

闲话敏捷开发之一:敏捷是个啥?

而相对的,如果我们每做好一道菜就拿给客人,客人就一直会有东西吃,体验会很好。后来餐厅还支持客人加菜和取消未开始做的菜品,如此,用餐体验肯定会更上一层楼。而软件开发后来也有类似的方式,我们大体可以把类似的开发模式称作敏捷式开发。

闲话敏捷开发之一:敏捷是个啥?

闲话敏捷开发之一:敏捷是个啥?

02

敏捷开发是个啥

敏捷开发(Agile)是一种以人为核心、迭代、循序渐进的开发方法。

在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。

简单地来说,敏捷开发并不追求前期完美的设计、完美编码,而是力求在很短的周期内开发出产品的核心功能,尽早发布出可用的版本。然后在后续的生产周期内,按照新需求不断迭代升级,完善产品。


03

敏捷开发怎么形成的?

有些版本里说,是有个聪明的“大脑壳”提出的,也有的说有十七个程序员某天在一个风景区开了会,然后就定下来“教义”。但其实,这些都不是重点,重点是这种方法是应时代而生的,这种敏捷开发的思想的产生是必然的。

闲话敏捷开发之一:敏捷是个啥?

Martin Fowler首创敏捷开发方法论

最开始主导敏捷的大佬们,其实主要集中在几个特定的圈子里,比如“定制软件开发”(Custom Software Development)这个圈子。那什么叫定制软件开发呢,白话说就是软件外包。

当然,外包也有高端和低端之分,低端的被压榨得吐血,高端的则灵活掌握了与客户沟通的技巧。于是在和翻脸比翻书还要快的客户打交道过程中,聪明的程序员们意识到让客户一次性想明白所有需求和产品功能是不现实的,所以,干脆让客户一点一点提出需求。这样,在一次次的快速交付中,客户可能会逐渐明确和丰富需求,不断让产品趋于实用和完善。

说到这,我们会发现各行各业都有类似的场景在。以基金营销为例,大多数基金投资者的最初目标都是财富增值,这其实是一个很宽泛的需求。客户经理在刚开始接触客户时,会先推荐初步匹配客户投资需求的产品。随着客户投资经验的增加,客户经理会更了解客户的风险偏好,推荐更适合客户的基金产品以及资产配置建议,进而帮助客户全面合理的管理自己的财富。

说回敏捷,随着信息技术的发展和互联网的兴起,科技产品的市场竞争日趋激烈,要想快速获得市场的验证,开发团队需要快速响应市场的反馈和需求的变化。因此,各种基于敏捷思想的开发模式相继登场,极限编程、SCRUM、精益Kanban、水晶方法Crystal、特性驱动开发FDD等争奇斗艳。而这众多流派中,被实践较多的以极限编程、SCRUM和精益Kanban为主,而传到国内的,也主要是这三种方法。

虽然,敏捷宣言早于2001年被提出,2002年创立了Scrum联盟,但敏捷开发真正大范围流行是在10年后,各大厂(尤其是500强中的技术公司)相继认可了敏捷这种开发方式。现在,敏捷开发的方法除了被广泛应用到软件开发,也成功应用于其他产业。

接下来,我们将不定期详细讲讲几种主流的敏捷方法,希望敏捷思想能给您的工作和生活带来帮助。如果您有什么想知道的,也可以在下方留言告知。