`
lotin_2001
  • 浏览: 3394 次
  • 性别: Icon_minigender_2
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

拥抱敏捷,拥抱下一个银弹

阅读更多
1986年,IBM大型电脑之父Fred Brooks发表了他的著名论文《没有银弹》中断言:“在10年内无法找到解决软件危机的银弹”。如今20年过去了,有可能成为银弹的东西诞生了,那就是agile——敏捷。
何为敏捷?
1968年软件工程提出至今已经30余年了,传统的开发方法所存在的一些不足也逐渐的显露:软件的工期不可控,软件过程中的文档越来越复杂,客户与开发人员间面对面的沟通逐渐减少,开发人员面对文档做开发而不是面向客户,严格的流程控制及文档契约与不断变化的需求间的矛盾越来越强烈,这些问题在需求变化频繁的互联网应用中尤为明显。在这样的背景下,2001年17位软件开发领域的领军人物聚集在美国犹他州的滑雪胜地snow bird雪场,经过两天的讨论,“敏捷”(Agile)这个词为全体聚会者所接受,用以概括一套全新的软件开发价值观。这套价值观,通过一份简明扼要的《敏捷宣言》来诠释,这份敏捷宣言是“敏捷软件开发”价值和目标的浓缩定义,并通过许多共同的原则进行了细化传递给世界,宣告了敏捷开发运动的开始。敏捷宣言如下:
1:个体和交互胜过过程和工具。
2:运作的软件胜过面面俱到的文档。
3:客户合作胜过合同谈判。
4:响应变化胜过遵循计划。
虽然敏捷的概念提出已经有了8年,但是究竟什么是敏捷,什么样的开发才是敏捷开发至今也是众说纷纭。Fred曾经用盲人摸象来表达大家对敏捷的认识,个人认为是非常贴切的,大家看到的都是某几个面,但是就是这些面已经对我们的软件开发产生了巨大的影响。
敏捷在中国
敏捷为中国的开发人员所接受及推崇是这几年的事情。2006年首届敏捷中国大会在北京举行,大会的主题是敏捷软件开发,人们逐渐开始了解敏捷开发这个新生事物,同时用各种的眼光来看待它。从曾经大热的极限编程,RUP到如今被大家广泛认可的Scrum,随着各种敏捷开发方法的提出,敏捷开发也逐步的被大家所认识与接受。时至今日,据一份调查统计透露,在国内有90%以上的开发团队或多或少的运用敏捷开发的方法,国内敏捷开发的培训咨询机构与组织日益增长。现在大家关注的焦点不再是是否使用敏捷,而是如何更好的敏捷,以及如何评判一个团队的敏捷程度。
与敏捷的第一次亲密接触
说起自己什么时候接触敏捷的?那大约是在冬季。今年初,沈总在部门内部引入了敏捷的概念,我们团队非常有幸的成为了实验田,在新近的项目中尝试使用敏捷开发。敏捷半年有余,感受良多,在我看来敏捷开发最大的特点就是以人为本,与CMMI等关于与流程不同,敏捷开发更关注人,也就是交互的个体。这些特点在我们的项目管理中可以很清晰的体现,我们团队的项目管理基于Scrum,在此我需要简单的介绍一下什么是Scrum:Scrum是 软件开发模型是敏捷开发的一种,在最近的一两年内逐渐流行起来,我们团队内部称之为屎壳郎。Scrum采用周期式的开发,客户在每个周期的开始阶段提出最急需的需求,团发团队则在三周的开发周期内完成需求并交付成果。在这样的开发模式下,我们关注与客户面对面的沟通,客户可以随时访问我们的开发成果,与开发人员进行直接的沟通。我们关注开发人员每日的成果与阻碍,项目的可视性大大提高。我们响应变化,我们总是尽早的与客户沟通,让客户直接感受真实的系统,降低项目需求偏离乃至失败的风险。我们的团队成员自我组织,在每日立会(1)上开发人员自己选择要完成的任务,在sprint(2)计划会上开发人员与客户一起估算功能的开发量,充分调动了团队开发成员的积极性,我们团队还借鉴了极限编程中的一些概念,比如持续集成等来保证项目的质量与项目的敏捷性。半年来我们感受到了敏捷开发所带来的新动力,但是在实施过程中还是遇到了许多问题,同时也对自己团队的开发方式的敏捷度存在疑问。带着这样的疑问,我开始了我的朝圣之旅。
朝圣之旅——敏捷中国2009
九月中旬,我前往首都北京,参加敏捷界的盛会——敏捷中国2009。这是我首次参加敏捷中国大会,前几届大家还在谈论:“什么是敏捷?我们是否应该敏捷?”之类的话题,而到了这一届大家的口径已经完全一致,我们更加关注的是“如何更好的实施敏捷?”,于是乎“实效敏捷”这个主题应运而生。此次会议参会人数达到550人左右,涵盖了各行业的开发人员与高级主管。国内几家大型软件公司如百度,腾讯,支付宝,阿里巴巴等更是大规模出席,以百度为例,除了一些高级主管外,百度公司整个流程改进部门的核心人员20余人全员出席,可见业内对于敏捷开发的重视程度。相较于北京,上海这些软件行业发达地区,福州对于敏捷开发的重视程度似乎还存在的一些滞后性。
   在会议的最开始,中国软件行业协会系统与过程改进分会(CSPIN)的王钧为大会致辞,充分肯定了敏捷对于系统过程改进所将扮演的重要地位,提出敏捷开发中的一些主要原则(比如对人的关注)将是对CMMI等传统开发模式的有效补充。行业协会中的老科学家们目前也正在积极的了解敏捷开发,日后也会出台相关的政策来推动敏捷开发在中国软件行业中的发展,政府的支持与肯定让与会者都对敏捷的发展充满了信心与期待。
此番带着问题前来,目的明确时间也过得充实,白天听着大师为我们勾勒的宏伟蓝图,休息时间和晚上便于其他参会者交流着实施中遇到的细节问题。此次大会请到了敏捷界的几只大牛:XP极限编程的创始人,敏捷宣言创始人之一KenBack,敏捷宣言创始人之一Dave Thomas, 敏捷界大师级专家Fred George。大师们的演讲多是思想性的,虽然离实施还有一定的距离,但是往往其中的一到两句话,就可以扫清我眼前的某团迷雾。比如Dave的演讲对一个熟练工来说是很有启示作用的,他引导大家关注于软件开发中不变的东西,那些思想与原则就算过了10年也不会过时。Fred的主题演讲更是有一个牛逼的名字“那是鸟,还是飞机?不,那是超人!”,在这个演讲中他特别强调了人在软件开发过程中的作用。他提出“要做好软件,人是最大的可挖掘潜力。”和与会者的交流则是此行我另一大的收获:首先,清楚了自己的定位,在与其他公司的交流过程中,我发现在敏捷成熟度上,我们团队还是走在了行业的前列跟上了大部队。其次,解决了细节问题,在实施过程中的我们团队遇到了许多细节问题,比如如何调动团队成员的主动性,如何更好引导客户融入开发团队,在与大家的交流中我也找到了一些解决问题的思路。三,拓宽了思路,对于敏捷的认识,就如同fred所说盲人摸象,但是大家并不较真与敏捷这个字眼,更关注的还是对于公司内部开发流程的改进。针对同一个场景或者问题,各个公司的处理方式也是五花八门,就以CMMI与敏捷开发的冲突问题来说,Ebay的顾先生就认为,这两个东西不能共存,强行的将敏捷的一些概念映射到传统的开发流程中去,搞所谓的公司特色,最后得到的将是一个古怪的四不象;有的人则认为两个并不冲突,CMMI2与敏捷的很多想法都是统一的,更有甚者提出(此君杭州人士,屡出惊人之语,甚是实在,印象深刻),他们公司一直都是按敏捷那套做,结果过了CMMI3,真可谓众说纷纭。在我看来,其实敏捷就是实践者,根据自己的公司实际实施,能够改善我们的项目管理流程的就是真正的敏捷。
再见北京,再见Agile2009, 再见Dave,在敏捷的道路上,我和我的团队会继续勇敢的走下去,a love all,make it fun.
0
1
分享到:
评论

相关推荐

    钢桁架结构振动特性渐变分析工具

    钢桁架结构振动特性渐变分析工具

    数据库实战-收集一些常见的 MySQL 死锁案例.zip

    数据库实战-收集一些常见的 MySQL 死锁案例.zip 数据库实战-收集一些常见的 MySQL 死锁案例.zip 在工作过程中偶尔会遇到死锁问题,虽然这种问题遇到的概率不大,但每次遇到的时候要想彻底弄懂其原理并找到解决方案却并不容易。这个项目收集了一些常见的 MySQL 死锁案例,大多数案例都来源于网络,并对其进行分类汇总,试图通过死锁日志分析出每种死锁的原因,还原出死锁现场。 实际上,我们在定位死锁问题时,不仅应该对死锁日志进行分析,还应该结合具体的业务代码,或者根据 binlog,理出每个事务执行的 SQL 语句。

    Android的移动应用与php服务器交互实例源码.rar

    Android的移动应用与php服务器交互实例源码.rar

    【滤波跟踪】基于matlab平方根容积卡尔曼滤波机器人手臂运动跟踪【含Matlab源码 4540期】.mp4

    Matlab研究室上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    计算BMI等一些关于热量和蛋白质摄入的小工具.zip

    蛋白质是生物体中普遍存在的一类重要生物大分子,由天然氨基酸通过肽键连接而成。它具有复杂的分子结构和特定的生物功能,是表达生物遗传性状的一类主要物质。 蛋白质的结构可分为四级:一级结构是组成蛋白质多肽链的线性氨基酸序列;二级结构是依靠不同氨基酸之间的C=O和N-H基团间的氢键形成的稳定结构,主要为α螺旋和β折叠;三级结构是通过多个二级结构元素在三维空间的排列所形成的一个蛋白质分子的三维结构;四级结构用于描述由不同多肽链(亚基)间相互作用形成具有功能的蛋白质复合物分子。 蛋白质在生物体内具有多种功能,包括提供能量、维持电解质平衡、信息交流、构成人的身体以及免疫等。例如,蛋白质分解可以为人体提供能量,每克蛋白质能产生4千卡的热能;血液里的蛋白质能帮助维持体内的酸碱平衡和血液的渗透压;蛋白质是组成人体器官组织的重要物质,可以修复受损的器官功能,以及维持细胞的生长和更新;蛋白质也是构成多种生理活性的物质,如免疫球蛋白,具有维持机体正常免疫功能的作用。 蛋白质的合成是指生物按照从脱氧核糖核酸(DNA)转录得到的信使核糖核酸(mRNA)上的遗传信息合成蛋白质的过程。这个过程包括氨基酸的活化、多肽链合成的起始、肽链的延长、肽链的终止和释放以及蛋白质合成后的加工修饰等步骤。 蛋白质降解是指食物中的蛋白质经过蛋白质降解酶的作用降解为多肽和氨基酸然后被人体吸收的过程。这个过程在细胞的生理活动中发挥着极其重要的作用,例如将蛋白质降解后成为小分子的氨基酸,并被循环利用;处理错误折叠的蛋白质以及多余组分,使之降解,以防机体产生错误应答。 总的来说,蛋白质是生物体内不可或缺的一类重要物质,对于维持生物体的正常生理功能具有至关重要的作用。

    IMG_20240520_180055.HEIC

    IMG_20240520_180055.HEIC

    基于java实现的智慧医院门诊管理系统项目源码+设计文档+实验报告+详细资料.zip

    基于java实现的智慧医院门诊管理系统项目源码+设计文档+实验报告+详细资料.zip

    JavaScript_网页复制工具,网页抓取预渲染和SEO提升.zip

    JavaScript

    batik-xml-1.7.jar

    Batik是为想使用svg格式图片来实现各种功能的应用程序和Applet提供的一个基于java的工具包

    node-v4.7.0-headers.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v14.19.0-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v18.19.1-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    JavaScript_DeFi开发人员路线图是一个精心策划的开发人员手册,其中包括DApps开发资源和参考的最佳工具列表.zip

    JavaScript

    node-v17.0.0-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    CoordinateData.java

    CoordinateData.java

    JavaScript_命令行工具自定义Spotify客户端支持Windows MacOS和Linux.zip

    JavaScript

    头歌c语言实验答案.rar

    头歌c语言实验答案

    ip.xdb 最新的,改进

    ip.xdb 最新的,改进

    字符串逆序及java代码实现

    字符串逆序及java代码实现

    基于微信小程序的小说实体书商城(源代码+论文+说明文档+PPT)-计算机专业精品毕业设计

    0基础可以根据说明文档进行项目部署的计算机专业精品毕业设计和课程设计,基于微信小程序的小说实体书商城(源代码+论文+说明文档+PPT)。 随着互联网技术和通讯技术的快速发展、成熟,两者最终结合到了一起,即移动互联网。移动互联网时代的到来,微信的普及,致使基于微信小程序的系统越来越多,因此,针对用户手机微信购买小说书籍方面的需求,特开发了本微信小程序小说实体书商城。 本微信小程序小说实体书商城采用微信开发者工具、MYSQL数据库,基于微信平台设计开发。微信小程序小说实体书商城主要实现了用户功能模块和管理员功能模块两大部分,用户通过微信平台可进行查询小说、购买小说等,管理员可通过系统后台可对系统进行全面管理。该微信小程序小说实体书商城具有操作简单,界面清晰,管理方便,功能完善等优势,具有很高的使用价值。 “操作简单,功能实用”这是本软件设计的核心理念,本系统力求创造最好的用户体验。

Global site tag (gtag.js) - Google Analytics