任务管理

更新时间:2023-03-18 17:53:54 阅读: 评论:0

兔肉好吃吗-ipad清理垃圾

任务管理
2023年3月18日发(作者:川菜食谱)

看板任务管理

作为一个开发团队的管理者,例如当你是一个团队的项目经理的时候,任务的完成

情况通常是你最关心的内容之一,比如说分配的任务是否能够按时间完成,整个

项目的进度是否尚在计划之中,团队内的人是不是都在高效地工作,大家有没有什

么困难,这些是你经常会关注的问题。在软件开发团队中,任务的分配、跟踪和

管理通常是这个团队管理者的一个重要的工作内容。

1从问题谈起

我曾经碰到过一个项目经理,她管理着一个团队开发一个web应用,团队里开发

人员大概10个左右,测试人员3个,业务分析师1个人。对于任务的管理她是这

么做的。通常,她会将需求分析人员分A型血的特点 析得到的需求给每个人分一些。然后每个人

在领到任务之后会给她承诺一个大致的时间点。整个项目大致的交付计划用一个

excel表管理着,根据客户要求的交付时间点,并且考虑到一些需求之间的集成测

试关系,定出了每个需求的大致交付时间点。只要每个开发人员承诺的时间点和

期望的相差不大,她都可以接受,每个开发人员这样就知道自己应该在什么时间点

交付什么东西。

一切本该很完美,但是不和谐的问题不断出现。最经常发生的事情就是大家在承诺

的时间点快要到的时候不能按时交付,每次她询问进度的时候,会被告知还差一

点就完成了。通常的说法是“底层部分已经做完了,或还差页面部分就可以搞定了”,

然而实际情况是又过了相当的时间才真正完成。当然也不是没有按时交付的需求,

但是她发现也许是大家经常加班,已经开始疲倦了,有时候明明很简单的可以提前

完成的需求,大家还是到最后一刻才交付给测试。

相关厂商内容

QCon上海2013精彩演讲回顾:“十大性能传说”

QCon上海2013精彩回顾:“互联网移动化碎片化终端整合的思考”

QCon北京2014“推荐系统工程实践”专题,由ReSysChina发起人谷文栋担任出品人

英国金融时报实验室负责人AndrewBetts确认参加QCon北京2014

QCon北京大数据专题,由Intel研究院首席工程师吴甘沙出品

相关赞助商

QCon全球软件开发大会(北京站)2014,4月25-27日,诚邀莅临。

也有的开发人员拿到自己的那一批需求之后,会批量工作,把若干个类似的需求的

底层逻辑全部实现,然后再实现上层内容。她默认了这种做法,就像这位开发人

员说的“这几个需求都差不多,只要底层做好了,基本上就都差不多完成了”。虽然

这部分工作早点和其他人一起集成测试会比较好,但是他这样做也只能推后集成

测试的时间点了。还好承诺给测试团队的交付时间点还在1个月之后,只要1个月

之内能够完成这些需求就可以了。

还有一些其他的问题,比如有的新人经常碰到问题,然而出了问题并不会主动问其

他人,而是在胡乱尝试中浪费了时间。组里还有个开发人员非常激进,经常花时

间去重构代码,追求完美的架构设计,进度很让人担忧。组内的开发人员有时候还

经常被其他项目的事情打扰,因为有几个人刚刚从上一个项目中调过来,上个项

目的有些问题只有他们熟悉和有能力解决。她就不止一次发现,有一个开发人员经

常在修复其他项目的bug。

她会不定时地去询问每个开发人员的开发进度,当需求的计划交付时间点逼近的时

候,这种检查会越来越频繁,开发人员感受到压力,有时候甚至需要加班来完成

开发工作。然而尽管她花了很多精力去跟踪和检查每个需求的完成情况,还是有很

多出乎期望的事情在不断发生。尽管她一直相信说,只要开发人员们能够完成任

务,采用什么方式她是不干预的,而具如何拉赞助 体的时间也是由他们自己分配的。但是她渐

渐感觉到,任务越来越不可控,计划通常无法按时完成,每天对大家的检查花了

大部分时间,然而却不能揭示出真正的问题。

运转良好的项目都差不多,而问题项目的问题各有各的不同。尽管每个团队的问题

可能不完全相同,但是当我们审视这些项目的运作和管理方式的时候,不难发现

一些诸如多任务并行等共性的问题,这些问题给软件项目带来了各种各样的浪费。

当一个团队采用瀑布开发模式的时候,开发阶段全部结束之后测试人员才会介入,

开展测试活动,在一个通常很漫长的开发阶段内,各种开发活动中的浪费、估计的

不准确,以及成员自己的拖沓、被打扰、问题阻塞等,都被掩盖住了。只要在最

终时间点前能够全部开发完成,不管是前松后紧,还是加班熬夜,都已经成了项目

开发的常态。项目经理只能看到交付的最终时间点,问题不能及时的暴露,而等

到问题被暴露的时候,可以使用的调整手段也非常有限。

这样的一种团队生存状态在外部环境要求短交付周期,需求允许经常变化的情况下

显示出了极度地不适应。市场环境的变化驱动了软件需求的变化,这种变化催生

了缩短交付周期的诉求,较短的交付周期使得人们可以不必去预期过于长远的需求,

具备根据市场的变化快速地制定和调整软件需求的能力。而当交付模型由几个月

的瀑布模型转变为数周甚至更短的迭代模型的时候,我们在前面谈到的团队中的各

种浪费、低效、半成品堆积等问题,就会急剧地爆发出来。

熟悉敏捷方法的读者可能都知道,敏捷方法包含一系列实践来帮助团队实现短周期

快速交付,更好地响应需求变化。比如说urstory方法,将需求从用户价值的角

度进行组织,避免将需求从功能模块角度划分。小粒度的用户故事可以在一两周的

迭代内完成开发和测试(并行开发),从而可以缩短交付周期。问题是,在敏捷

团队内,我们是如何有效管理大量小粒度urstory,同时避免上述项目管理中的

问题呢?下面我们结合敏捷开发中的看板工具来看看敏捷团队是如何管理任务的。

2可视化看板任务管理

看板源于精益生产实践,敏捷将其背后的可视化管理理念借鉴过来,经过一番改造,

形成了有自己独特风格的可视化管理工具。曾有人总结过scrum和kanban的使用

[1],而很多时候,我们也将它叫做迭代状态墙。

先看看我们怎么样能用这个状态墙来管理迭代任务。说起来其实是一个很简单的东

西。

通常一个迭代的状态墙上反映了某一个迭代干锅肥肠 的计划和任务进展情况。状态墙上按照

一个迭代内团队的典型开发活动分成几栏,例如“待开发”、“开发中”、“待测试”、

“测试中”、“测试完成”等。在一个迭代之初,我们会将计划在本迭代完成的故事卡

放到“待开发”这一栏中。可视化状态墙的一个好处就是所有团队成员都可以实时

地了解到本迭代的计划和进展情况。开发人员领取任务时,就将他领取的故事卡片

从“待开发”移到“开发中”,同时贴上带有自己名字的小纸条。当他开发完成之后,

就将故事卡片移到“待测试”一栏。我们的测试人员看到这一栏里有待测的故事卡时,

就取下一张,移动到“测试中”,开始这个用户故事的测试,测试完成后,就将故

事卡移动到“测试完成”一栏。如果测试人员发现了一个bug,那么他可以用红颜色

的卡片记下这个bug,然后放到待开发这一栏中。在状态墙上,除了用户故事、

bug之外,还会有一些诸如重构、搭建测试环境这样的不直接产生业务价值的任务,

这三类任务用不同颜色的卡片,放到状态墙上统一管理。

这样一个简单的工具,是如何帮助我们消除浪费、解决项目管理中的问题的?让我

们逐条分析一下看看。

2.1如何减少返工带来的浪费

返工是软件开发过程中的一大严重浪费。比如说开发人员开发完成的任务交给测试

人员测试的时候,关键流程不能走通,阻碍了测试进程;交付给客户的东西被客

户说“这不是我想要的东西”;分析人员将还没分析透彻的任务交给开发人员,在

最后验收的时候发现开发人员加入了自己的一些“发挥”。这些都会造成返工。返

工意味着没有一次性将事情做对,意味着流程中的上游没有交付高质量的工作,也

可能意味着团队成员间的沟通出了问题。

在传统的瀑布流程中,我们往往是期望通过前期细致入微的工作来确保一个阶段的

工作被高质量完成之后才移交到下一阶段。后来我们慢慢从失败的经验中学习到,

这种方法在变化的需求环境下实在是太过脆弱,不仅不能如愿保证质量,而且会造

成更大的浪费,交付周期也不能满足要求。于是我们引入了迭代式开发方法[2],

一个需求的分析、开发、测试、验收成了一个小粒度地更连续的过程,在这个小的

交付循环中,看板帮助我们以更细节的粒度来管理一个任务每个阶段的工作质量。

通常我们是这么做的。当我们把一张故事卡从“待开发”移动到“开发中”时,这张卡

片必须是已经分析品质方针 完成的。也就是说,当开发人员准备真正开始开发这张故事卡

之前,我们的需求分析师们必须保证这张卡片所包含的所有内容和细节已经被分析

完成,不再有模棱两可的细节,不再留给开发人员过多的自我发挥和想象空间,

而且这些细节必须和客户确认过,而不只是团队自己“设计”的结果。

这一道关看似很寻常,实际上很多项目会在这里出问题。很多时候开发人员开始开

发的时候,需求还没有分析完成,很多细节尚须澄清确认,实现上的技术风险还

没有被完全排除。也有的分析师善于给开发人员留有大量自我发挥空间,需求过于

言简意赅。开发人员开始开发这样的需求时,要么做不下去,要么按照自己的理

解做下去。做完了之后分析师一看发现不对,和我想的不一样,于是开发人员返工。

最糟糕的情形莫过于最后被客户发现说,这不是我当初想要的东西。

由此可见,确保开发人员挪卡的时候,这张待开发的用户故事已经被真正分析完成,

是我们准确实现用户需求的第一步。通过规定这一挪卡的前提,同时辅以用户故

事的澄清(由分析师向开发人员澄清)或者反向澄清(由开发人员向分析师讲述自

己的理解),可以很大程度上将返工减少到最低。

还有一种浪费发生在测试过程中。测试人员经常会发现,处于“待测试”状态中的一

些故事卡,在测试的时候主要的流程都走不通,根本无法进一步展开测试,于是乎

不得不将故事卡

打回到开发人员手中。而往往这个时候开发人员已经工作在另一个用户故事上了。

要么他停下手中的任务解决测试的问题,要么让测试人员等到这些问题修复过后再

测。无论哪种都是不好的选择。

这种问题的一个主要原因是因为开发人员声称他已经“开发完成”,将故事卡从“开

发中”挪到“待测试”时,实际上自己并没有对这部分功能进行测试。或者是因为疏

忽,或者是因为懒惰,或者是因为过于自信。通过在这个状态转换阶段引入用户故

事初验,让分析师在挪卡之前先到开发人员机器上看看是否该故事卡包含的功能

被实现了,可以很大程度上提升效率,减少浪费。若分析师在初验过程中发现了问

题,那么开发人员马上能以最小的成本进行修复,而不用等到之后测试人员发现

时再来修复。而且,分析师初验也提供了一个判断实现是否良好的反馈点,这是我

们能够看到一个需求是否被实现并能够真正工作的最早的时间点。

2.2如何避免多任务并行

多任务之间的频繁切换是一个常见的问题。表现在团队里的成员,特别是开发人员,

会在不同的任务间切换。就像前面的故事中提到的,可能这一刻还在实现某一个

需求,而下一刻马上就会被叫走去修复某一个遗留版本的缺陷。又或者该人手头被

分配了多个任务,每个任务都在进行中,而没有一个处于完成状态。任务切换是

导致效率降低的一个重要原因[3],不同任务间的上下文的切换会导致频繁地将任

务当前状态在头脑中“压栈”和“出栈”,这些操作会耗费时间。如果完成一个任务需

要一个人一天时间,那么两天内这个人可以完成两个任务,但是如果他在第一天

同时开始并行工作在这两个任务上,那么完成这两个任务会需要大于两天的时间。

大家可能已经注意到了,在前面的看板图中,处于“开发中”的所有任务卡片上都有

一个小纸条,上面标记着正在这张卡片上工作的人的名字。如果说有两个人结对

在一个卡片上工作,那么这张卡片上应该有两个名字。这一小小的实践可以帮助我

们随时发现团队内某一时刻,是否每个人只工作在一个任务上。

如果这一简单的规则能够严格被遵循,那么当我们看到一个人的名字出现在多张卡

片上的时候,我们小熊英语 就知道这个人此刻可能忙着在多个任务之间切换,而每一个任

务都将不会在估计的时间点内完成。如果我们看到有人的名字没有出现在任何卡片

上,那么他目前大概处于休息状态。团队内的每个人的名字都应该对应在一个小

纸条上,如果你此刻工作在某个任务上,那么就将自己的名字贴到相应卡片上,如

果此刻没有工作在该任务上,就将自己的名字移去。

我们在领取“待开发”状态栏中的卡片时,保证每次每人只领一张卡片,不要多领,

完成了这张卡片之后,再回来领下一张。当一张卡片被认领之后,我们就会对这

张卡片进行跟踪,在站会上谈论它的完成情况,谈论实现过程中碰到的问题。当它

的进度和估计的可能偏差较大时,我们能够及时而不是在最后一刻察觉到,提供

需要的帮助,确保它能够顺利完成。这样一种方式让我们能够将注意力集中到小粒

度的需求(例如用户故事)上,更多地关注这些用户故事的流动速度。而当每个

小的用户故事能够顺畅地流动起来时,整个项目的交付也得到了保障。

当然这一实践并不能自动保证团队内不再出现多任务并发、拖延、或者做和任务无

关的其他事情等问题。可能有些人在做一个用户故事的过程中,突然中断去做了一

些其他事情,但是

却没有及时在状态墙上更新自己的状态。重要的是团队要有实现交付目标的共同愿

景,能够透明地暴露问题,并且善于利用状态墙来发现和改进自身的问题。对于不

成熟的团队,这可能需要一个转变的周期。

如果一个团队的职责共享较好,代码被所有人集体拥有,每个人都被鼓励熟悉和工

作在代码的不同部分,那么在这样的团队内便不太会出现把一大块任务事先就明

确给某一个人的情况。相反,所有人的工作事先不具体确定,大家会更容易形成某

一时刻只领取一张卡片的情况,避免同时工作在多个任务上。实际上,状态墙的

使用也可以帮助团队走向职责共享之路,只需要在大家领取任务的时候有意地给人

们分配一些之前没做过的内容,同时安排好有经验的人与其结对工作,一段时间

之后,团队内的人便会逐渐体会到和之前只是专注在一个模块内不同的工作方式。

2.3如何减少半成品库存,缩短交付周期

一个需求的交付周期(leadtime[4])是从它被识别到最终交付给用户手中所耗费的时

间。交付周期越短,意味着客户从提出想法到能够在软件中实际使用到这个点子的

时间越短。从客户的角度来看,更短的交付周期意味着自己的软件能够对市场变

化的更快地响应,因而获得更强的竞争力,同时也意味着能够更快地验证自己的想

法。

任务管理的粒度太大会直接导致交付周期变长。最极端的情况是将属于某一模块的

任务在一开始就全部分给负责这个模块的人,所有这个模块相关的修改都由他来

实现。在一个按模块划分职责,每个人只负责自己具体模块的团队里,通常这个模

块的负责人会实现这个模块的所有修改。不然,就是将一个可能需要做2周到一个

月的任务分给某个人。或者更好一点的情况是,单个任务本身不大,但是会将相关

联的任务成批地分配给某个人。如果你的团队内也是采用大篇的“规格说明书”等

word文档来组织需求的,那么就要小心,这种问题很可能在团队内已经存在。整

个团队没有小粒度频繁交付的概念,习惯了大批量长时间地交付方式。由于批量

大,所以估计常常不准,而且时间跨度长,中间也会有更多地干扰因素出现,这些

都导致任务不能在开始承诺的时间点交付。开发周期长同样导致测试活动的滞后,

极端地滞后就演变为所有开发工作完成之后才能进行测试,这就是我们熟悉的瀑布

模式。最终的影响就是需求的交付周期会很长。

传统团队的一个常见组织方式是按照功能模块划分团队成员,明确分离职责,这也

会变相增长交付周期。这样的团队通常倾向于按照功能模块来组织半成品任务,

而不是按照可以交付价值的完成品来组织任务。习惯按照功能模块来组织开发的团

队通常会阶段性得“联调”,不同模块的人带着自己的代码合在一起调试,由于缺

乏频繁地集成,这种联调活动的时间经常不可控。团队在大部分时间内通常只拥有

一大堆半成品,后续的测试和验收活动没有办法进行,而只能等到团队在某一刻

组装出一个完整的功能后才能测试,因此交付周期也会比较长。

因此,如果我们的需求都是按照软件的功能模块划分,而不是按照面向用户的价值

来划分的,那么我们在交付用户价值这一目标上,一开始就走错了路。采用用户故

事能够把需求以用户能够理解的价值来组织,这一点是我们缩短交付周期的一个重

要基础。

我们的状态墙能够揭示需求的交付周期。让我们来看看这样几个场景。

如果我们的需求是按照软件的功能模块划分的,那么通常单个模块的编码完成往往

不可测。例如有的团队喜欢将web应用的上层页面部分和下层数据库逻辑部分划

分到不同的模块组,一个用户的需求也会拦腰切成两截,一部分交给上层团队完成,

一部分交给下层团队。单个团队的任务完成都不能开展这个需求的测试,于是这

些任务就会堆积在“待测试”这一栏。

如果我们的需求很大,以至于开发人员要花费很长的时间(超过1周)才能完成开

发,那么这个需求会在“开发中”这一栏停留很久。大家可以猜到,当一个人同时进

行多个任务时,这些任务也会比它们单个依次被开发时在“开发中”这一栏停留更久

的时间。

任何一栏中的任务其实都是半成品,只有完成测试,交付到用户手中的需求才是完

成品。状态墙上的每一栏都好比一个存放着各种零件的仓库,每一栏中的卡片越

多,停留的越久,就说明当前半成品的库存越多,是该得到团队的认真关注的时候

了。状态墙将每个阶段的半成品数量可视化呈现出来,让虚拟的数量通过卡片这

种物理介质的数量得以呈现。

通过状态墙,我们可以计算出每一个需求的交付周期大概是多久。状态墙上一个用

户故事从放到“待开发”这一栏,到它被移动到“完成”这一栏,这一个时间段是需

求的整个交付周期的其中一段,也是很重要的一段。通过优化从“待开发”到“完成”

的这一个过程,我们可以缩短需求的交付周期。通过比较需求的交付周期和客户

对交付周期的要求,我们可以量化之间的差距,然后指导我们的改进。

在我们理解了状态墙是如何呈现一个需求的交付周期后,我们就不难理解瀑布方法

是如何让交付周期变长的。在瀑布模型中,全部开发完成之后才会进行测试工作,

相当于所有的任务卡片都堆积到“待测试”状态之后,才开始逐一测试。所有开发完

成的半成品,都会留存在“待测试”这一仓库中,一直等到所有开发活动结束的那

一刻。

当出现库存堆积的时候,就是我们需要改进的时候。如果“待测试”这一栏有太多的

任务卡片,那么就说明我们的测试活动没有跟上。有可能是我们的测试环境出了

问题,或者是我们的测试人员人力不足。如果太多的卡片位于“测试完成”状态,说

明我们的发布和最终交付过程出了某些问题。如果“待开发”这一栏中任务过多,

说明我们的计划有可能超出了当前团队的开发能力,或者说反映了开发人员的不足。

也有一种情况,那就是柱状图怎么制作 “待开发”这一栏空了很久,这可能说明了另外一个问题,

那就是我们的分析师的分析速度匹配不上团队的开发能力。一个良好的团队,必然

是各种角色协调配合,并行工作,同时他们之间的任务衔接也能够比较流畅。

2.4迭代产能的度量,计划及其他

团队在每个迭代所能完成的工作量,通常被成为迭代的velocity(速度),是衡量

团队每迭代产能的一个指标。这个指标能够帮助团队进行制定迭代计划。根据团队

估计任务工作量的方法不同,迭代的velocity的单位也可能不同(例如故事点数)。

通常,我们只需要在迭代结束的时候,数一数状态墙上完成的任务工作量就可以了。

当我们经历了若干个迭代以后,通常团队的迭代速度会趋于稳定,我们在做下一个

迭代的计划的时候,会参考以往迭代的数据。如果上个迭代完成了15个点,那么

下个迭代我们通常也

会计划15个点左右的工作量,将这些卡片放到“待开发”这一栏中。也就是说,每

个迭代结束时,我们都会对状态墙进行更新,将即将到来的迭代的卡片放到墙上,

并且将一些处于半成品状态的卡片进行适当的调整。

前面提到,状态墙上可能由三种卡片,除了需求,还可能有bug和技术任务。测试

人员每次在迭代中测出一个bug,就会将bug写成卡片,放到“待开发”这一栏。当

bug不多的时候,团队可以在不太影响原有计划的情况消化掉这些bug,确保软件

的质量持续地得到保证。如果bug太多,则需要做一些计划,将bug分散到几个迭

代里去消化。然而到这个时候,团队可能更需要及时反省一下为什么会出现这么多

bug的原因了。

另一类技术任务也需要和bug以及需求卡片一起被考虑到迭代计划中去。通常技术

任务包括诸如搭建持续集成环境、准备测试环境、重构这样的任务。它们虽然不直

接给用户带来价值,但是却是保证软件质量、确保团队效率的重要因素。比如重

构类的任务,对于工作在遗留系统上的团队来说可能是需要一直考虑的事情,为了

保障新的需求的顺利实现,可能需要有计划地重构之前的一些遗留代码。

bug和技术任务耗费团队成员的时间资源,但是不直接产生用户价值。如果我们衡

量团队每个迭代的总体生产能力,需要在计算迭代速度时考虑这三类任务。但是

如果我们只考察团队每迭代交付的用户价值的量的大小,那么就不应该包含技术任

务和bug。当一个团队在迭代中花了过多的时间在技术任务上,或者修复bug上,

那么团队就需要回顾反省一下其中的原因,是否是团队的基础设施太差,或者是团

队在开发时过于粗心导致太多的bug,抑或是其他的一些原因。

3总结

在本文中我们从项目管理中常常出现的一些问题着手,分析了其中的一些原因,然

后介绍了如何采用状态墙(看板)来可视化任务管理。在敏捷项目中,状态墙作

为一种有效的迭代任务管理工具,已经被广泛地使用。团队利用状态墙这样一种简

单的工具,将迭代开发中的日常工作透明实时地跟踪管理起来,能够帮助团队及

时发现问题,消除浪费,快速地交付用户价值。希望这些文字,能够对渴望尝试敏

捷、改善任务管理和日常运作的团队带来一些帮助。

本文发布于:2023-03-18 17:53:52,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/1679133234301512.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:任务管理.doc

本文 PDF 下载地址:任务管理.pdf

上一篇:项羽本纪翻译
下一篇:返回列表
标签:任务管理
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
  • 任务管理
    兔肉好吃吗-ipad清理垃圾2023年3月18日发(作者:川菜食谱)看板任务管理作为一个开发团队的管理者,例如当你是一个团队的项目经理的时候,任务的完成情况通常是你最关心的内容之一,比如说分配的任务是否能够按时间完成,整个项目的进度是否尚在计划之中,团队内的人是不是都在高效地工作,大家有没有什么困难,这些是你经常会关注的问题。在软件开发团队中,任务的分配、跟踪和管理通常是这个团队管理者的一个重要的
  • 0℃项羽本纪翻译
  • 0℃配置
  • 0℃全家福摄影
  • 0℃雷锋简笔画
  • 0℃资中文庙
  • 0℃玛氏巧克力
  • 0℃eton手机
  • 0℃yoryu
  • 0℃法国著名旅游景点
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图