周末参加了成都第十届敏捷之旅的活动,收获很多,对敏捷有了不一样的认识,也有了一些思考。
熊节的《敏捷中国史》从历史的角度讲述了中国软件行业的发展历程,敏捷实践对软件工程的影响,他作为第一批布道敏捷的人,不仅有很多偶然因素,也有很多历史的必然性。我接触敏捷的时间比较早,大约是在2005-2006年的时候,当时还在上大学,从图书馆里借阅了《程序员》杂志,再后来读了《代码大全》、《重构》等书,了解了极限编程,混迹于JavaEye等论坛。比尔盖茨、李纳斯变成了偶像,从各种社区看大牛撕逼汲取营养,自学了SSH框架,毕业之后走上了程序员这条不归路。
回顾自己十多年来的经历,走的路线基本上就是《敏捷中国史》的脉络。随着2000年左右网吧的流行,互联网在中国开始普及,2001年敏捷宣言发布,2002年个人门户兴起,那个时候我在读高三,使用Yahoo创建了自己的个人主页,学会了使用QQ,雅虎邮箱,到2003年第一次体验了电子商务带来的便利,从卓越网购买书籍和光碟。2003年中国软件外包行业飞速发展,微软亚洲工程院当年设立,IDC发布的数据2004中国软件外包行业增长率49.9%,2004年3月spring framework1.0 final发布,2005年jQuery出现,至此Java WEB软件开发的基础已经成型。再往后是2007年移动互联网元年,Android横空出世,改变了整个行业。
这些历史事件和敏捷的关系是什么?
我个人觉得,敏捷是起到了促进作用,敏捷开发所提倡的测试方法,实际上是一种自动化,很大程度上提高了软件开发的开发效率和质量,是快速的迭代基础,而用户故事和快速迭代,则打破了传统的长周期的全量交付方式,敏捷催生出来的各种开发框架和工具,又是对生产力的极大提升。
我本文说的敏捷不是指Scrum,而是通用意义上的敏捷Aglie。在我经历的多家公司,都在力行敏捷实践,从平安科技、诺基亚西门子到ThoughtWorks,都是行业里敏捷的开路者。然而对于传统的企业,特别是中国本土的企业而言,敏捷虽然改变了公司的软件开发模式,但作为一个一直在一线的开发者,深知这些公司敏捷实践做的并不好,缺少单元测试是常态,更不用说自动化测试,以及大量难以重构的复杂遗留系统。我曾经参与并编写了一个有着超过300个业务规则,超过1万行代码的JSP页面,没有人敢去重构,一旦出现问题就涉及KPI,而且没有单元测试和自动化测试来保证,开发全靠经验,测试基本全靠人。
什么是敏捷?
在敏捷宣言中,提出了敏捷价值观和原则,充分强调人和可交付的软件,敏捷宣言是敏捷的灵魂。
道生一,一生二,二生三,三生万物。
敏捷宣言的价值观是敏捷的道,现在各种流行的敏捷方法论和工具,如Scrum、Csystal、Lean、Kanban等,无一不是围绕道而展开,演变而来的万物,我认为更多的是一种术,一种具体的敏捷形式,用于解决敏捷实践中的特定问题。
当然也有敏捷解决不了的问题,诸如产品交付后的运维、产品的规划和设计,因此才有了DevOps,精益画布等概念和工具。现在有多少团队在实践Scrum过程中是严格按照Scrum的方法在执行,效果是否真的很理想?一定需要Kanban吗?答案是否定的,用Excel一样可以把需求和任务管理起来。
又比如,需要做一个技术POC的工作快速验证一项技术,并实现一个简单的Demo,是否一样也需要写测试代码?所有的代码可能在一个星期之后被丢弃,除了PPT中会引用,可能再也不会被运行。
大卫张在他的《敏捷都是“骗人”的》中,分享了自己的切身经历,我很认同敏捷是需要很多基础能力的这个观点,如果团队产出的是垃圾,那么使用敏捷会加快速度产出垃圾。
在《人件》一书中,作者提出了一个关于问题本质的论题:
本质上,我们工作中的主要问题,与其说是技术问题,不如说是社会学问题。
回到敏捷宣言,也并没有一条说的是技术问题。
个体和互动 高于 流程和工具;
工作的软件 高于 详尽的文档;
客户合作 高于 合同谈判;
响应变化 高于 遵循计划。
所以,我认为敏捷要做好,本质上是要对敏捷团队进行改造,思想上接受敏捷价值观,行动上践行敏捷实践,团队能力得到综合提升,至于形式,不能照搬硬套,需要因地制宜,因人而异,最终才能成功敏捷转型。
英雄和大牛始终是少数,一个人不可能具备所有的能力,总有短板和弱点,但一个团队往往由不同的人和角色组成,每个人擅长的方面不一样,因此可以形成能力互补。比如一个小团队中既有业务分析人员、也有产品经理、虽然主要的还是开发人员。
个体和互动,需要的是个体的主动性,自我管理,良好的沟通和表达,分析能力等方面。
工作的软件,需要的是技术能力、问题解决能力,结果导向,包括代码质量保证,测试质量,功能测试等。
客户合作,是更高层次的沟通能力,冲突管理,影响力等。
响应变化,则是计划能力,解决突发问题,适应性和应对风险的能力。
怎么构建团队能力,这又是另外一个话题了。
是否敏捷做好了就能得到优雅的架构、产品的成功、商业上的成功?
敏捷不是银弹,也不是万能的。
就想到这么多了,最后感谢成都敏捷社区提供这样交流和学习的机会。
网友评论