`
neora
  • 浏览: 183262 次
  • 性别: Icon_minigender_1
  • 来自: 墨尔本
文章分类
社区版块
存档分类
最新评论
阅读更多
正在学习和实践敏捷开发,但遇到了一些困难,产生了一些困惑,想听听大家的意见。


1、完整团队

XP项目的所有参与者(开发人员、客户、测试人员等)一起工作在一个开放的场所中,他们是同一个团队的成员。这个场所的墙壁上随意悬挂着大幅的、显著的图表以及其他一些显示他们进度的东西。

困惑:
在小型的软件公司,一个团队的工作往往不局限于单一的项目。开发人员需要同时交叉管理3个甚至更多的软件和项目。这么说,墙上得贴好多张进度图表,更新这些图表一定得花费不少精力吧,大家都忙于自己手头的任务,谁来维护墙上这些复杂图表内容的更新呢?


2、计划游戏

计划是持续的、循序渐进的。每2周,开发人员就为下2周估算候选特性的成本,而客户则根据成本和商务价值来选择要实现的特性。


困惑:
持续的计划非常容易被打破,比如一个紧急报告来的客户需求需要开发,或者一个刚刚发现的BUG必须马上修正----这些当然都是计划外的,于是计划被破坏了。事实上这种情况不可避免。如果每次的计划都被破坏,是不是会失去计划的效果,让成员产生挫败感呢?


3、客户测试

作为选择每个所期望的特性的一部分,客户可以根据脚本语言来定义出自动验收测试来表明该特性可以工作。


困惑:
小型的软件公司所服务的客户项目往往在100万RMB一下。与银行不同,这些项目所属的客户单位通常缺少专业的项目配合人员,他们没有(或者不愿意,不习惯)花费时间和精力去配合你的测试。他们的领导更不可能配合你去做这样的工作--这些人恰恰是验收的决定因素。即便客户的配合人员完成了测试,领导的一句话就可能改变需求。怎么解决这个矛盾呢?



5、结对编程

所有的产品软件都是由两个程序员、并排坐在一起在同一台机器上构建的。


困惑:
任何规模的软件公司都非常渴望“结对编程”可能带来的效益。但“结对编程”似乎更难在工作内容相对繁杂的任务环境中实施。而且,做为开发人员的你喜欢结队吗?我想听听你的看法。



6、测试驱动开发

编写单元测试是一个验证行为,更是一个设计行为。同样,它更是一种编写文档的行为。编写单元测试避免了相当数量的反馈循环,尤其是功功能能验证方面的反馈循环。程序员以非常短的循环周期工作,他们先增加一个失败的测试,然后使之通过。

7、改进设计

随时利用重构方法改进已经腐化的代码,保持代码尽可能的干净、具有表达力。


困惑:
TDD真的不错,改进设计和重构也相当必要。而有时改进设计和重构需要更改接口(Interface)甚至改动很多局部结构,这事测试脚本就必须重写,原来写的测试脚本全部作废了。有时完善的测试脚本比代码本身更难写。



8、持续集成

团队总是使系统完整地被集成。一个人拆入(Check in)后,其它所有人责任代码集成。


困惑:
如果一个开发人员Check in了一段可以测试通过的代码,尽管能返回正确的结果,但其内部的实现可能存在很大缺陷。这个缺陷也被“持续集成“进去了,怎么发现呢?可能过了很久才被别人偶然发现,也可能最终部署到用户那里了才被发现(比如并发上去了)。


9、集体代码所有权

任何结对的程序员都可以在任何时候改进任何代码。没有程序员对任何一个特定的模块或技术单独负责,每个人都可以参与任何其它方面的开发。

困惑:
立即接手自己没参与过模块代码,是否会遇到较陡峭的学习曲线,不得不花费一定的时间才能适应?



很想听听大家的意见。
分享到:
评论
7 楼 dongbin 2007-06-14  
道可道,非常道。所有文字上的东西都是教条,用了才明白。
6 楼 xly_971223 2007-06-14  

要理论联系实际 不能完全的教条主义
5 楼 basicbest 2007-06-14  
关于PP似乎讨论过很多,你可以翻以前的帖子看看,要注意每个人的不同观点,因为没有人是完全正确的,必须要放到具体的场景中才有适合或者不适合的说法。
假设一个极端的情况,即在一个没有任何斗志的团队中,PP我觉得是不可能实现的,但出现PP聊天的情况就非常高,呵呵。
所以请记住o6z的建议:实际操作
4 楼 neora 2007-06-13  
ozzzzzz 写道

有些事情我觉得还是要实际操作一下才能有深入的理解。
比如我们这些年纪大的人,其实对pp都会有感觉,因为我们学的时候虽然都不知道pp,但是却不得不被迫的去pp。


我本人对PP还是很有感觉的,充分认为PP对无论是对代码还是程序员都很有好处。但我在团队里尝试过一段时间PP,大家好像都不太积极........
3 楼 ozzzzzz 2007-06-13  
neora 写道
ozzzzzz 写道
1.项目的管理者可以负责维护进度表。而实际上每日的例会之类的站立会议,都会明确目前的项目进度等关键管理参数。同时请注意,这些表格和图示一定是特别容易被理解的,从这个意义上说一定也需要特别容易被维护的。
2.这其实才是迭代计划显露其威力的场景。也仅仅是小步伐的迭代才可能在最即时的计划中满足突然产生的关键需求,也仅仅是在小步中才能够不断的发现关键性bug并进行及时维护。
3.领导一句话就改变了需求,这实际上就是在说领导改变了需求的验收标准,而这个标准实际上就是领导写的客户测试,只不过这个时候需要你把这个测试表达为具体的代码。
5.一般使用过pp的人绝大多数会喜欢pp,不过pp的需要良好的环境进行保证,比如大桌子和舒服的椅子等等这些。
6.7。对我觉得有时候完善的测试比代码难写,不过绝大多数情况下,完善是一个过程,而不是一步到达的目标。也就是说不仅仅你的代码需要在迭代中增量进行,测试也需要这样做。问题的关键在于修改测试,其实也是认识需求和设计思路的一个部分,化点时间精力在这个上面,我觉得很值得。
8.可能的缺陷如果没有具体的测试予以证明,就不是问题。持续集成的优势就在于可以持续的将你的代码集成进去,同时也可以持续的将你的测试集成进去。
9.任何时候学习都需要付出精力,实际上代码集体所有是集体选择持续性review的一个部分。当然对于所有权的问题,有各种不同的考虑,xp只不过是其中的一种适合其团队理念的选择。
5


非常感谢ozzzzzz的精心讲解。我需要在实践中逐步消化和理解。

有些事情我觉得还是要实际操作一下才能有深入的理解。
比如我们这些年纪大的人,其实对pp都会有感觉,因为我们学的时候虽然都不知道pp,但是却不得不被迫的去pp。
2 楼 neora 2007-06-13  
ozzzzzz 写道
1.项目的管理者可以负责维护进度表。而实际上每日的例会之类的站立会议,都会明确目前的项目进度等关键管理参数。同时请注意,这些表格和图示一定是特别容易被理解的,从这个意义上说一定也需要特别容易被维护的。
2.这其实才是迭代计划显露其威力的场景。也仅仅是小步伐的迭代才可能在最即时的计划中满足突然产生的关键需求,也仅仅是在小步中才能够不断的发现关键性bug并进行及时维护。
3.领导一句话就改变了需求,这实际上就是在说领导改变了需求的验收标准,而这个标准实际上就是领导写的客户测试,只不过这个时候需要你把这个测试表达为具体的代码。
5.一般使用过pp的人绝大多数会喜欢pp,不过pp的需要良好的环境进行保证,比如大桌子和舒服的椅子等等这些。
6.7。对我觉得有时候完善的测试比代码难写,不过绝大多数情况下,完善是一个过程,而不是一步到达的目标。也就是说不仅仅你的代码需要在迭代中增量进行,测试也需要这样做。问题的关键在于修改测试,其实也是认识需求和设计思路的一个部分,化点时间精力在这个上面,我觉得很值得。
8.可能的缺陷如果没有具体的测试予以证明,就不是问题。持续集成的优势就在于可以持续的将你的代码集成进去,同时也可以持续的将你的测试集成进去。
9.任何时候学习都需要付出精力,实际上代码集体所有是集体选择持续性review的一个部分。当然对于所有权的问题,有各种不同的考虑,xp只不过是其中的一种适合其团队理念的选择。
5


非常感谢ozzzzzz的精心讲解。我需要在实践中逐步消化和理解。
1 楼 ozzzzzz 2007-06-13  
1.项目的管理者可以负责维护进度表。而实际上每日的例会之类的站立会议,都会明确目前的项目进度等关键管理参数。同时请注意,这些表格和图示一定是特别容易被理解的,从这个意义上说一定也需要特别容易被维护的。
2.这其实才是迭代计划显露其威力的场景。也仅仅是小步伐的迭代才可能在最即时的计划中满足突然产生的关键需求,也仅仅是在小步中才能够不断的发现关键性bug并进行及时维护。
3.领导一句话就改变了需求,这实际上就是在说领导改变了需求的验收标准,而这个标准实际上就是领导写的客户测试,只不过这个时候需要你把这个测试表达为具体的代码。
5.一般使用过pp的人绝大多数会喜欢pp,不过pp的需要良好的环境进行保证,比如大桌子和舒服的椅子等等这些。
6.7。对我觉得有时候完善的测试比代码难写,不过绝大多数情况下,完善是一个过程,而不是一步到达的目标。也就是说不仅仅你的代码需要在迭代中增量进行,测试也需要这样做。问题的关键在于修改测试,其实也是认识需求和设计思路的一个部分,化点时间精力在这个上面,我觉得很值得。
8.可能的缺陷如果没有具体的测试予以证明,就不是问题。持续集成的优势就在于可以持续的将你的代码集成进去,同时也可以持续的将你的测试集成进去。
9.任何时候学习都需要付出精力,实际上代码集体所有是集体选择持续性review的一个部分。当然对于所有权的问题,有各种不同的考虑,xp只不过是其中的一种适合其团队理念的选择。
5

相关推荐

    敏捷开发-敏捷软件开发:原则、模式与实践(全)

    详解敏捷开发的困惑,深入简出的讲解软件设计原则,设计模式,并有丰富的代码案例

    轻松Scrum之旅.pdf

    实践敏捷开发的过程可能遇到种种困难,比如来自人的阻力。因此,对敏捷的哲学思想有所理解是非常重要的。 Scrum方法在敏捷开发中占有重要地位,它通过定义角色、活动和工件来推动项目进展。在IBM中国软件开发中心的...

    敏捷性能合弄结构(APH)中文版0414.pdf

    对于企业而言,导入敏捷方法后可能会面临一些困惑,例如如何规划敏捷导入路线,单团队与多团队敏捷的实施方法,以及如何评价组织的敏捷能力等。而APH模型恰恰能够针对这些问题提供解决方案。它不仅仅是一个框架,...

    Agile Principles, Patterns, and Practices in C#

    《敏捷原则、模式与实践在C#中的应用》是一本全面介绍敏捷开发方法论的书籍,它不仅适用于C#程序员,也适合那些希望了解敏捷软件开发并将其应用到自己项目中的其他编程语言使用者。通过学习本书,读者不仅可以掌握...

    40分钟项目管理实践.pdf

    ### IT项目管理最佳实践 #### 一、项目管理中的常见挑战与感受 ...通过采用敏捷开发方法,实现产品细分、团队管理优化、周期管理和过程改进等策略,能够更好地响应市场变化,提高团队效率,最终实现项目的成功交付。

    100k-Of-Why:YZU敏捷软体开发组别:十万个为什么

    而"YZU敏捷软体开发组别"则表明这个项目是这个特定团队对敏捷开发方法论的应用和实践。 【标签】"Java"指出了这个项目的主要关注点——Java编程语言。Java是一种广泛应用的面向对象的编程语言,尤其在企业级应用和...

    A Project Manager’s Survival Guide to Going Agile

    随着敏捷方法在软件开发项目中的普及,许多组织开始放弃传统的以计划为驱动的开发方式,转向以敏捷原则为指导的敏捷方法。然而,在这一转变过程中,往往被遗留下来的正是项目管理者。他们接受的传统项目管理培训,...

    麦肯锡-中国银行业CEO季刊2019年春季刊-2019.4-204页.pdf.pdf

    期刊指出,敏捷转型可以将产品开发速度提高5倍,决策速度提高3倍。对于银行业而言,敏捷转型不仅关乎效率,更是关乎能否在数字经济时代保持竞争力的关键。然而,许多银行高管在实践中对转型的具体策略和路径感到困惑...

    DDD实践中的那些坑(28页).pdf

    综上所述,《DDD实践中的那些坑》揭示了在采用DDD方法进行软件开发时,我们需要关注并解决的诸多问题。只有充分理解这些潜在的陷阱,并采取相应的策略,才能充分发挥DDD的优势,构建出真正符合业务需求的高质量系统...

    走出软件作坊,编程人的枕边书

    敏捷开发强调迭代和适应变化,TDD则是确保代码质量的有效手段,而代码审查可以促进团队间的知识共享和代码质量的提升。这些方法论都是从作坊式开发向专业软件工程转变的关键步骤。 书中的每个章节都可能通过实例、...

    专题资料(2021-2022年)J2EE开发项目10大风险总结.doc

    - 采用敏捷开发方法,强调迭代和增量设计。 - 制定详尽的设计规范和模板,确保所有方面都得到考虑。 - 设计评审,邀请外部专家提供反馈。 - 为关键组件进行性能预估和压力测试。 【风险4:开发阶段的代码质量问题】...

    IT学生解惑真经.rar

    文档中可能会讨论版本控制(如Git)、敏捷开发方法、测试驱动开发(TDD)等,这些都是现代软件开发流程的关键组成部分,对提升团队协作效率和软件质量至关重要。 数据库管理是IT领域的另一个核心话题,学生需要理解...

    Java解惑和极限编程

    其次,"极限编程"是一种敏捷开发方法论,强调快速反馈、团队协作以及软件质量的重要性。在Java开发中应用极限编程,意味着开发者需要频繁地进行小规模的代码发布,通过持续集成来快速发现并修复错误。XP的关键实践...

    中国DevOps现状调查报告(2020)权威解读.zip

    3. **企业实践与挑战**:报告可能会揭示企业在实施DevOps过程中遇到的主要挑战,如文化转变困难、技术选型困惑、人员培训需求等,并提供应对策略。 4. **DevOps工具链**:报告可能介绍了常用的DevOps工具,如...

Global site tag (gtag.js) - Google Analytics