`
ywlqi
  • 浏览: 70588 次
社区版块
存档分类
最新评论

浅谈项目经理在敏捷开发中如何切分任务

阅读更多

敏捷开发这个概念也出现好几年了,我一直没有实践,除了知道敏捷开发是一种迭代式交付模型以外,其他一无所知。刚好公司来了一位新同事,以前是搞敏捷开发的,前几天给我们做了个《敏捷开发初探》培训,引发了公司的几位“大牛”对敏捷开发的讨论,我也从中学到一些东西,但仍然很粗浅。

 

传统的瀑布式模型VS迭代式模型

可以看到,迭代式模型就是多次交付,每次迭代都是一个小瀑布。

 

敏捷宣言:

敏捷开发团队的工作环境:

 

可以看出,团队之间的交流是比较频繁的,而且迭代式交付,意味着需要团队成员共同完成一个功能模块,再接着共同完成另一个功能模块。

 

那么作为项目经理,如何切分任务,如何保证团队之间的协同呢?

传统的瀑布式模型中,通常来说任务切分是按功能模块切分的,张三完成功能1,李四完成功能2,王五完成功能3....,最后组装,完成项目。而在敏捷开发中,需要张三李四王五共同完成功能1,然后再共同完成功能2...,这种情况下,可以按层来切分任务,一人做页面,一人写逻辑,一人写数据库存储。这样就能有效的把组员利用起来,让他们都有事做。

 

以上说的是3、4个人的小团队的情况,如果是十几人甚至几十的团队,不可能几十号人去完成一个功能,可以把他们分为3、4个人的若干小组,每个小组按上述办法去完成功能模块。

 

最后申明一下,关于任务切分办法不是我想出来的,是一位“大牛”说的,我认为很有道理,希望以后有机会能够实践一下。

另外哪位同学有敏捷开发经验的,欢迎来谈谈自己的看法。

  • 大小: 56.8 KB
  • 大小: 84.2 KB
  • 大小: 47.9 KB
分享到:
评论
26 楼 ucetgg 2010-06-17  
zyeming 写道
mock1234 写道

其实开发前期在概要设计时对层次、接口作出描述甚至论证还是完全可能的,甚至经常是必要的,许多做过大项目的人都已经养成了这个习惯,所以并不是真的很沉重的事情。


的确是可能啦,但我还真不觉得必要,至少在大部分项目中。我工作的前两个公司做的都算大项目,特别是第一家日企,每次开发都会有密密麻麻的一堆概要设计、功能设计、详细设计等等,然后每次都陷入维护代码文档同步的无穷无尽的深渊……

mock1234 写道

而如何将Story变得足够准确,你觉得很难。这也就是为什么一些人回复说“要注重测试驱动技术”的原因。因为只有那些习惯了高强度的测试驱动开发的人,很自然地“仅凭触觉”就能写出非常讲究“不做不必要的事情”的TDD代码。因为他们凡是做计划必用可执行的TDD来写,于是不存在忽悠的成分(否则一旦到了计划日期那么TDD测试程序就会每隔10分钟就“抛出异常的bug”),而是自然而然地不断追求实际应用中的设计模式。


这个建议很不错。

mock1234 写道

我给一个我“发明”的标准:每个任务只有1小时的任务量,更粗糙的任务描述肯定是无法迅速写出测试用例和测试程序的;每个人(假设一天工作8小时)每天只预先安排30%的时间用于工作,而70%用于机动。


我倒是很想请教一下这个标准,至少从我的直觉来看,1小时的任务划分也太细了。能不能稍详细点说说怎么个弄法的?

Test-Driven Development(测试驱动开发):它是敏捷开发的最重要的部分。在ThoughtWorks,实现任何一个功能都是从测试开始,首先对业务需求进行分析,分解为一个一个的Story,记录在Story Card上。然后两个人同时坐在电脑前面,一个人依照Story,从业务需求的角度来编写测试代码,另一个人看着他并且进行思考,如果有不同的意见就会提出来进行讨论,直到达成共识,这样写出来的测试代码就真实反映了业务功能需求。接着由另一个人控制键盘,编写该测试代码的实现。如果没有测试代码,就不能编写功能的实现代码。先写测试代码,能够让开发人员明确目标,就是让测试通过。

25 楼 ucetgg 2010-06-17  
楼主谈敏捷完全不提测试 ,不好吧
24 楼 zyeming 2010-04-18  
mock1234 写道

其实开发前期在概要设计时对层次、接口作出描述甚至论证还是完全可能的,甚至经常是必要的,许多做过大项目的人都已经养成了这个习惯,所以并不是真的很沉重的事情。


的确是可能啦,但我还真不觉得必要,至少在大部分项目中。我工作的前两个公司做的都算大项目,特别是第一家日企,每次开发都会有密密麻麻的一堆概要设计、功能设计、详细设计等等,然后每次都陷入维护代码文档同步的无穷无尽的深渊……

mock1234 写道

而如何将Story变得足够准确,你觉得很难。这也就是为什么一些人回复说“要注重测试驱动技术”的原因。因为只有那些习惯了高强度的测试驱动开发的人,很自然地“仅凭触觉”就能写出非常讲究“不做不必要的事情”的TDD代码。因为他们凡是做计划必用可执行的TDD来写,于是不存在忽悠的成分(否则一旦到了计划日期那么TDD测试程序就会每隔10分钟就“抛出异常的bug”),而是自然而然地不断追求实际应用中的设计模式。


这个建议很不错。

mock1234 写道

我给一个我“发明”的标准:每个任务只有1小时的任务量,更粗糙的任务描述肯定是无法迅速写出测试用例和测试程序的;每个人(假设一天工作8小时)每天只预先安排30%的时间用于工作,而70%用于机动。


我倒是很想请教一下这个标准,至少从我的直觉来看,1小时的任务划分也太细了。能不能稍详细点说说怎么个弄法的?
23 楼 zyeming 2010-04-13  
同问。一直在想如何切分任务最合适,但一直都没有发现比较好的办法。按层划分个人认为是不太合适的,因为在开发前期很难确定各层直接的接口,开发过程中就会有很多无效的交流和返工。

当然如果能把每个Story划分到足够小,那是最好的,但有时候很难做到这一点。不过总的来说,纵向的划分,即使是把一个模块的里不同的页面(比如查看页面和编辑页面)划分成两个任务,也比按层划分好很多。不知道有没有高手有更好的办法??

另外,硝烟中的Scrum和XP的确是个好东西啊~~
22 楼 ccxw1983 2010-04-13  
敏捷敏捷,字面意思就是快速响应,如果是这样,那么核心的东西应该是沟通的效率+开发的效率,应该从团队建设、工作方式、工作能力、业务培训……多方面下手了。
而不是盲目的结对编程……
21 楼 orcl_zhang 2010-03-30  
君淋天下 写道
大家对敏捷开发有兴趣,对如何实施scrum有兴趣 可以参考这里
http://www.infoq.com/cn/minibooks/scrum-xp-from-the-trenches
我们项目70%是按照那篇文档实施

这本书确实不错.没有多废口舌的理论,看着有劲,还实在.
20 楼 wuhoufeng 2010-03-30  
根据我对敏捷的一点了解,这种方式是要有很多必要前提条件,如果不具备,实施起来的话很难成功。有开发经验的人员用起来的可能行比较大,对于本来就过程不完整,水平不高的团队来说这个没用。如果人数多了以后,对管理人员的能力要求会比较高。
19 楼 君淋天下 2010-03-29  
大家对敏捷开发有兴趣,对如何实施scrum有兴趣 可以参考这里
http://www.infoq.com/cn/minibooks/scrum-xp-from-the-trenches
我们项目70%是按照那篇文档实施
18 楼 orcl_zhang 2010-03-29  
引用
那么作为项目经理,如何切分任务,如何保证团队之间的协同呢?
传统的瀑布式模型中,通常来说任务切分是按功能模块切分的,张三完成功能1,李四完成功能2,王五完成功能3....,最后组装,完成项目。而在敏捷开发中,需要张三李四王五共同完成功能1,然后再共同完成功能2...,这种情况下,可以按层来切分任务,一人做页面,一人写逻辑,一人写数据库存储。这样就能有效的把组员利用起来,让他们都有事做。

这个有点无语.....难道楼主的敏捷就是这个样子..
按照模块划分和按照层次划分,是这两个的区别么?
魔力猫咪 写道
以Scrum为例。产品负责人这个角色提出团队要完成的功能列表,并列出优先级。这个功能列表也称作一系列故事。每个故事都是预估可以在一个迭代周期内由一个人或者结对组完成的、可测试的完整的功能模块。如果不能,则继续分解。
一定要注意的是这些故事的描述是基于业务的,而不是莫名其妙的如在某表上加个属性之类的要求。因为加属性之类的要求无法反映业务需求。
在每个spint的启动会议上,产品负责人向团队讲解这些故事,按照优先级挑选本次spint要完成的故事。挑选完成本次spint的故事后,这些故事一般由团队成员按照自己兴趣选择。也就是大家优先挑选自己最感兴趣的故事,而不是由某个人强制分配。如果有大家都不敢兴趣的,协商解决。
很明显的是楼主的思想并没有转换成为敏捷团队思想。还是原来的领导做派。敏捷要求的是团队的自管理。项目经理应该是引导团队和协助团队,不是命令团队。

说到点子上了,我给分成几条:
1,功能列表(故事).属性:优先级,estimate,可测.
2,spint.
3,敏捷要求的是团队的自管理.
我再补充一点:
1,小版本release.
2,tdd(这点,我觉得比较难)
17 楼 orcl_zhang 2010-03-29  
开发团队比较小的话,可以尝试.10人内都可以考虑,再多的话就比较困难.
可以根据团队的情况,适当的做下调整,慢慢的引入一些敏捷的开发发给你是.
结对?尝试过,失败了,就放弃了.
16 楼 抛出异常的爱 2010-03-29  
ywlqi 写道
我确实没试过,所在在这里向大家取经了,呵呵。
前面有人说结对,在培训中老师也提到过,我感觉结对有可能会提高效率,提高代码质量,但是也会使队员在一种高度紧张的状态下工作,也许是我传统或是散漫惯了,还不太适应这种工作方式。

结对在国外也许有许多成功案例,在国内有吗?知道的请透露一二。

补充一下,请问结对的副作用是什么?有什么办法消除?

想尽办法把重复的事去掉的话。结对
想实现以前的最佳实践别结。忍不住想改。
15 楼 chanball 2010-03-29  
抛出异常的爱 写道
没有合适的测试方式分工免谈


现在做的项目好像就是像楼主说的切分小组,有几个组长完成几个模块。但是却连测试人员都没有,结果项目上线后bug一大堆,客户怨天载道。
14 楼 ywlqi 2010-03-29  
我确实没试过,所在在这里向大家取经了,呵呵。
前面有人说结对,在培训中老师也提到过,我感觉结对有可能会提高效率,提高代码质量,但是也会使队员在一种高度紧张的状态下工作,也许是我传统或是散漫惯了,还不太适应这种工作方式。

结对在国外也许有许多成功案例,在国内有吗?知道的请透露一二。

补充一下,请问结对的副作用是什么?有什么办法消除?
13 楼 xly_971223 2010-03-29  
3,4个人共同完成? lz有没有试过啊
两个人就够要命的了 别说3,4个
工作效率是跟人头成反比的
人越多效率越低(当然不是绝对的)

还是小组制比较好,4个人一组,设置小组长
小组长细化功能 包干到户,这样才比较快
最后让小组长来抓质量和整合
12 楼 softcat 2010-03-29  
都是废话,等于没说
11 楼 imlsq 2010-03-28  
多看 scrum .

我给公司的培训PPT。

http://luosq.opcol.com/?p=77

10 楼 魔力猫咪 2010-03-28  
以Scrum为例。产品负责人这个角色提出团队要完成的功能列表,并列出优先级。这个功能列表也称作一系列故事。每个故事都是预估可以在一个迭代周期内由一个人或者结对组完成的、可测试的完整的功能模块。如果不能,则继续分解。
一定要注意的是这些故事的描述是基于业务的,而不是莫名其妙的如在某表上加个属性之类的要求。因为加属性之类的要求无法反映业务需求。
在每个spint的启动会议上,产品负责人向团队讲解这些故事,按照优先级挑选本次spint要完成的故事。挑选完成本次spint的故事后,这些故事一般由团队成员按照自己兴趣选择。也就是大家优先挑选自己最感兴趣的故事,而不是由某个人强制分配。如果有大家都不敢兴趣的,协商解决。
很明显的是楼主的思想并没有转换成为敏捷团队思想。还是原来的领导做派。敏捷要求的是团队的自管理。项目经理应该是引导团队和协助团队,不是命令团队。
9 楼 抛出异常的爱 2010-03-28  
tottichen 写道
TDD != 敏捷,只是敏捷的一部分;
功能 != Story,Story只是功能的一部分;
Story是可测的,对用户有价值的最小功能块。
所以按照你的“一人做页面,一人写逻辑,一人写数据库存储”完全是错误的。
另外,关于结对编程,这要看公司的现状。

只要交流的好。。。。
我实践过。
两个人一周重写了
五个人三周的活
(包括前面二个人)
PS:那些统计用的SQL太变态了。
后来用于表现层的抽象又太复杂了。
8 楼 tottichen 2010-03-27  
TDD != 敏捷,只是敏捷的一部分;
功能 != Story,Story只是功能的一部分;
Story是可测的,对用户有价值的最小功能块。
所以按照你的“一人做页面,一人写逻辑,一人写数据库存储”完全是错误的。
另外,关于结对编程,这要看公司的现状。
7 楼 ttion 2010-03-27  
ywlqi 写道
ttion 写道
敏捷开发,任务切分(可以称为Story的划分),以站在客户的角度上来划分故事点,另外一个故事点他应该是完整的,依赖性较小,可测的,而不是“,一人做页面,一人写逻辑,一人写数据库存储。”。在敏捷开发当中有一个实践是“客户签收”可以由测试代替,如果根据LZ的说法,那么做出来的Story根本不可测,如何签收?如何做到测试先行?

感谢这位同学,我又学到一个名词,story。
不过我理解所谓的故事点相当于我文中说的功能,我所说的任务切分是在划分好story以后的任务分派,这两点似乎并不冲突。
TDD大概是敏捷开发中常用的一种方法(我不知道是不是必需的),我理解方法不过是实现目标的一种手段,是不是一定要用,在什么场景下用,怎么用,都要看具体情况,不能生搬硬套。
不知道我理解的对不对?欢迎拍砖。


抱歉,我把任务理解为一个需求了,如果是任务的话,我也觉得没必要采用“大牛”说的方式,可以采用结对的方式,思维碰撞,保证代码的质量,以及知识共享。

相关推荐

    浅谈项目经理在敏捷开发中如何切分任务.doc

    在敏捷开发中,项目经理进行任务切分时,需要考虑到团队的协同效率。不同于瀑布模型中按功能模块分配任务,敏捷团队倾向于将任务按照工作层进行切分,如前端展示层、业务逻辑层和数据存储层。这种方式使得团队成员...

    浅谈项目经理能力与素质

    项目经理作为软件项目的核心领导者和协调者,其...项目经理需要不断学习和提升自身在技术、组织、沟通以及领导力等各方面的能力,同时要注重个人素质的提高,以确保能够有效应对项目管理和软件开发中不断出现的新挑战。

    浅谈敏捷开发中的设计.doc

    敏捷开发的设计实践还包括**重构**,在开发过程中不断改进代码结构,以保持代码的可维护性和扩展性。同时,**技术债务**的概念也是敏捷开发中的重要概念,它强调在快速交付的同时,不应忽视长期的技术积累和系统的可...

    浅谈在软件开发中如何充分发挥项目经理作用.pdf

    在软件开发过程中,项目经理的角色至关重要,他们需要有效地管理和协调整个项目,确保项目按时按质完成。以下是如何在软件开发中充分发挥项目经理作用的关键知识点: 1. **人员管理**:项目经理不能直接管理所有...

    浅谈项目管理的重要性及项目经理人对项目的影响.pdf

    项目经理在项目执行过程中起着决定性的作用,他们的能力直接影响项目的成功与否: 1. **决策能力**:项目经理需要做出关键决策,如资源分配、风险应对等,直接影响项目结果。 2. **团队建设**:项目经理需要构建...

    浅谈敏捷软件项目研发.rar

    总结来说,“浅谈敏捷软件项目研发”这一主题涵盖了敏捷开发的核心理念、常用框架和实践策略,以及它在提升项目效率和应对不确定性方面的优势。通过深入理解和应用这些知识,软件开发团队可以更好地适应快速变化的...

    浅谈并行工程在整车开发项目中的应用.zip

    总结来说,"浅谈并行工程在整车开发项目中的应用"这个主题涵盖了如何通过并行工程理念提升汽车行业的研发效率,降低成本,以及应对市场竞争的策略。并行工程的实施是一个涉及多部门协作、多阶段并行、全面考虑整个...

    软件项目为什么会失败?- 浅谈需求驱动的项目管理

    然而,软件项目的需求往往在开发过程中发生变化,使得基于任务驱动的管理方式不再适用。软件开发更倾向于采用敏捷方法,如极限编程和迭代开发,以适应需求的动态性。一旦需求发生变化,预定义的任务和时间表可能迅速...

    浅谈项目管理

    - **敏捷方法**:在快速变化的IT环境中,敏捷方法(如Scrum或Kanban)已成为项目管理的主流。了解这些框架,以及如何在团队中实施它们,将大大提升项目经理的适应性。 - **证书认证**:获得PMP(项目管理专业资格...

    浅谈区域经理如何开发一个新市场.doc

    浅谈区域经理如何开发一个新市场.doc

    浅谈敏捷软件项目研发.pptx

    浅谈敏捷软件项目研发.pptx

    浅谈敏捷开发及Scrum工具leangoo(三)

    敏捷开发方法论在软件开发领域中被广泛采用,它强调快速响应变化、持续交付可用软件以及强化团队合作。Scrum作为敏捷开发的一种具体实践框架,通过一系列仪式化的过程确保团队能够高效协作。在实施敏捷开发的过程中...

    火星人敏捷开发手册

    《火星人敏捷开发手册》是一本专注于敏捷开发实践的指南,由火星人出版,以图文并茂的方式深入浅出地阐述了敏捷开发的核心理念和实施方法。这本书的目的是帮助读者理解并掌握敏捷开发这一现代软件开发的重要模式。 ...

    敏捷开发 课件

    - **目标:** 即使在开发后期也能灵活应对需求变更。 - **实施:** 使用敏捷工具和技术(如持续集成)来快速响应变化。 **3.3 团队协作** - **目标:** 促进业务人员和开发人员之间的日常沟通。 - **实施:** 创建一个...

    浅谈怎样做好项目经理.doc

    【项目经理的角色与职责】 项目经理是建筑施工项目的核心人物,承担着整个项目的管理责任。他们不仅是项目的执行者,更是...只有这样,项目经理才能在复杂多变的项目环境中,带领团队克服困难,实现项目的成功交付。

    软件开发项目进度控制浅谈

    在现代软件开发过程中,项目进度控制是一项至关重要的任务。它涉及到对整个项目周期内的各项活动进行规划、执行与监控,确保项目能够按照既定的时间表顺利完成。本文旨在探讨影响软件开发项目进度的因素,并提出有效...

    SCRUM敏捷项目管理.rar

    《SCRUM敏捷项目管理》是敏捷开发领域的一部重要著作,它深入浅出地阐述了敏捷开发的核心理念、方法和实践。敏捷开发是一种以人为本、快速响应变化的软件开发方法论,其核心价值在于通过迭代和增量的方式,提高开发...

    跟我学敏捷开发

    《跟我学敏捷开发》一书,由蔡煜著,版本1.1.0,深入浅出地介绍了敏捷开发的基本概念、核心原则及实践技巧,适合企业新人和技术经理阅读。 #### 敏捷开发的核心原则 1. **重视个体和交互**:相比过程和工具,敏捷...

Global site tag (gtag.js) - Google Analytics