《软件开发践行录——ThoughtWorks中国区文集》一一1.11.从问题谈起

1.11.从问题谈起

我曾经碰到过一个项目经理,她管理一个团队开发一个Web应用,团队里开发人员大概10个,测试人员3个,业务分析师1个人。对于任务的管理她是这样做的。通常,她会将需求分析人员分析得到的需求给每个人分一些。然后每个人在领到任务之后会给她承诺一个大致的时间点。整个项目大致的交付计划用一个Excel表管理,根据客户要求的交付时间点,同时考虑到一些需求之间的集成测试关系,她定出了每个需求的大致交付时间点。只要每个开发人员承诺的时间点和期望的相差不大,她都可以接受,这样每个开发人员就知道自己应该在什么时间点交付什么东西。

一切本该很完美,但是不和谐的问题不断出现。最经常发生的事情就是大家在承诺的时间点到来的时候不能按时交付,每次她询问进度的时候,都会被告知还差一点就完成了。通常的说法是“底层部分已经做完了”或“还差页面部分就可以搞定了”,然而实际情况是又过了相当长的时间才真正完成。当然也有按时交付的需求,但是她发现也许是大家经常加班,已经开始疲倦了,有时候明明很简单的、可以提前完成的需求,大家还是到最后一刻才交给测试。

也有的开发人员拿到自己的那一批需求之后,会批量工作,把若干个类似需求的底层逻辑全部实现,然后再实现上层内容。她默认了这种做法,就像这位开发人员说的“这几个需求都差不多,只要底层做好了,基本上就都完成了”。虽然这部分工作早点和其他人一起集成测试会比较好,但是他这样做也只能推后集成测试的时间点了。还好她承诺给测试团队的交付时间点还在1个月之后,只要1个月之内能够完成这些需求就可以了。

项目执行过程中还有一些其他的问题,比如有的新人经常碰到问题,但是出了问题并不主动问其他人,而是在胡乱尝试中浪费了时间;还有个别开发人员非常激进,经常花时间去重构代码,追求完美的架构设计,进度很让人担忧。组内的开发人员还经常被其他项目的事情打扰,因为有几个人刚刚从之前一个项目中调过来,前一个项目的有些问题只有他们熟悉并有能力解决。她就不止一次发现有一个开发人员在修复其他项目的bug。

她会不定时地去询问每个开发人员的开发进度,当需求的计划交付时间点逼近的时候,这种检查会越来越频繁。开发人员感受到压力,有时候甚至需要加班来完成开发工作。尽管她花了很多精力去跟踪和检查每个需求的完成情况,还是有很多出乎意料的事情在不断发生。尽管她一直相信,只要开发人员能够完成任务,采用什么方式她都不干预,而具体的时间也是由他们自己分配的。但是她渐渐感觉到任务越来越不可控,计划通常无法按时完成,每天对大家的检查花费了大部分时间,然而却不能揭示出真正的问题。

运转良好的项目都差不多,而问题项目的问题各有各的不同。虽然每个团队的问题可能不完全相同,但是当我们审视这些项目的运作和管理方式的时候,不难发现一些诸如多任务并行等共性的问题,这些问题给软件项目带来了各种各样的浪费。当一个团队采用瀑布开发模式的时候,开发阶段全部结束之后测试人员才会介入,开展测试活动,在一个通常很漫长的开发阶段内,各种开发活动中的浪费、估计不准确以及成员自己的拖沓、被打扰、问题阻塞等,都被掩盖了。只要在最终时间点前能够全部开发完成,不管是前松后紧还是加班熬夜,都已经成了项目开发的常态。项目经理只能看到交付的最终时间点,问题不能及时地解决,而等到问题暴露的时候,可以使用的调整手段也非常有限。

这样的一种团队生存状态在外部环境要求短交付周期、需求允许经常变化的情况下显示出了极度的不适应。市场环境的变化驱动了软件需求的变化,这种变化催生了缩短交付周期的诉求,较短的交付周期使得人们不必去预期过于长远的需求,具备根据市场的变化快速地制定和调整软件需求的能力。而当交付模型由几个月的瀑布模型转变为数周甚至更短的迭代模型的时候,我们在前面谈到的团队中的各种浪费、低效、半成品堆积等问题,就会急剧地爆发出来。

熟悉敏捷方法的读者可能知道,敏捷方法包含一系列实践,来帮助团队实现短周期快速交付,更好地响应需求变化。比如说用户故事(User Story)方法将需求从用户价值的角度进行组织,避免将需求从功能模块角度划分。小粒度的用户故事可以在一两周的迭代内完成开发和测试(并行开发),从而可以缩短交付周期。问题是,在敏捷团队内,我们如何有效管理大量小粒度用户故事,同时避免上述项目管理中的问题呢?下面我们结合敏捷开发中的看板工具来看看敏捷团队是如何管理任务的。

时间: 2024-09-27 18:13:35

《软件开发践行录——ThoughtWorks中国区文集》一一1.11.从问题谈起的相关文章

《软件开发践行录——ThoughtWorks中国区文集》一一第一章看板任务管理(黄亮)

第一章看板任务管理(黄亮) 软件开发践行录--ThoughtWorks中国区文集作为一个开发团队的管理者,例如当你是一个团队的项目经理的时候,任务的完成情况通常是你最关心的内容之一,比如说分配的任务是否能够按时间完成,整个项目的进度是否尚在计划之中,团队内的人是不是都在高效地工作,大家有没有什么困难,等等.在软件开发团队中,任务的分配.跟踪和管理通常是这个团队管理者的一个重要的工作内容.

《软件开发践行录——ThoughtWorks中国区文集》一一第二章 实战:持续交付中的业务分析 夏洁

第二章 实战:持续交付中的业务分析 夏洁 软件开发践行录--ThoughtWorks中国区文集在需要频繁交付.不断收集用户反馈.拥抱变化.追求业务敏捷的项目中,软件的开发和交付是迭代式进行的.在这样的项目团队中,业务分析师(BA)通常需要在一个开发迭代开始之前完成该迭代开发任务的分析.但在特殊情况下,从收集客户需求到将功能细节传达给开发团队的周期会缩短到一至两天.BA可以用于思考和分析的时间远远少于可以预先做出所有设计的瀑布式项目. 那么在这样的敏捷项目中,BA如何能够适应这种交付模式.完成高质

《软件开发践行录——ThoughtWorks中国区文集》导读

前言 软件开发践行录--ThoughtWorks中国区文集关于本文集三年前因缘际会,我加入了ThoughtWorks中国公司.在这之前,参与线上和线下社区的我,已经认识了不少早期的TWer,而加入之后更是近水楼台,我跟他们在一个项目工作,听他们的分享,得以从更近距离学习和体会他们身上似乎与生俱来的价值观和对软件构建本身的独到认识.也是一直以"程序员中的编辑,编辑中的程序员"自诩的我,从一开头就认定,传播这群人的意识和经验对于我来说责无旁贷,而这样的贡献也权当是允许自己滥竽充数混迹其中的

《软件开发践行录——ThoughtWorks中国区文集》一一2.6 结语

2.6 结语 业务分析是困难的,特别是当我们面对未知领域的时候.如果只是简单地按照客户的具体需求进行软件开发,那么我们交付给客户的产品价值将非常有限.然而识别业务价值.帮助客户分析需求优先级.保障团队协作,将有效提升团队的软件设计能力,解决客户真正的业务问题,实现更大价值. 作为一名业务分析人员,当您在尝试以上实践时,可能会发现自己对客户业务的理解变得更加深刻.在与客户的沟通中,也能够更加容易地提出有价值的问题以及建议,从而提升客户对项目团队的信任,为成功交付项目打下良好基础.

《软件开发践行录——ThoughtWorks中国区文集》一一2.5 发挥团队其他成员在业务分析中的作用

2.5 发挥团队其他成员在业务分析中的作用 在频繁交付的项目中,如果BA独自承担业务分析工作,难免会出现疏漏.ThoughtWorks曾与ABC公司的IT部门合作完成其业务系统的一些集成工作.在合作过程中发现,ABC公司IT部门的开发人员在业务分析中参与度很低,由此造成了如下问题. (1)BA需要写大量需求文档,所以从需求分析到软件交付的周期较长. (2)设计缺陷的发现滞后. (3)在需要频繁交付的情况下,解决方案质量较差,方案优化能力较弱. 而ThoughtWorks的开发人员在业务分析中的参

《软件开发践行录——ThoughtWorks中国区文集》一一2.2 BA在该项目中面临的主要挑战

2.2 BA在该项目中面临的主要挑战 该项目为分布式开发,ABC公司的决策方在美国,而ThoughtWorks的开发团队在中国,沟通反馈周期有时较长. 由于ABC公司对用户体验的重视,开发团队需要频繁交付软件,以便收集用户反馈并及时调整解决方案和后续开发计划.这大大缩短了从收集需求.开始分析到进入开发的周期,增加了分析中出现缺陷的风险. 当开发过程中发现问题时,开发团队无法马上与客户取得沟通,开发进度可能会受到影响.

《软件开发践行录——ThoughtWorks中国区文集》一一2.3 识别业务价值

2.3 识别业务价值 业务分析的重要性在于首先做正确的事情.理解客户的业务,关注需求背后的价值可以帮助项目团队在软件的设计方面做出正确的选择. 而我们面临的困难是,客户提出的需求往往都是直接的软件功能,而不是需要解决的业务问题.如果BA只专注于针对客户需要的功能进行系统分析,就丧失了帮助客户优化解决方案以及改进业务流程的机会. 如何寻找业务价值?以敏捷开发方法中的用户故事为例,找出客户要解决的业务问题的一个简单办法是,用以下方式概括每个用户故事的内容. As-(角色),I want to-(完成

《软件开发践行录——ThoughtWorks中国区文集》一一2.1 项目背景

2.1 项目背景 ABC公司是一家知名的国际性会计师事务所,业务规模庞大,分支机构遍布全球170多个国家. ThoughtWorks受邀对公司"全球派遣服务(International Assignment Service)"业务部门提供IT解决方案以及软件系统的开发服务.该系统包括收集公司客户的全球派遣雇员的报税数据,同时管理ABC公司税务咨询师对这些数据进行审核.汇算和出具报告的业务流程:逐步替换它目前远远不能满足业务和性能需求的遗留系统. 该系统主要有两类用户,一类是ABC公司客

《软件开发践行录——ThoughtWorks中国区文集》一一1.2可视化看板任务管理

1.2可视化看板任务管理 看板源于精益生产实践,敏捷将其背后的可视化管理理念借鉴过来,经过一番改造,形成了有自己独特风格的可视化管理工具.曾有人总结过scrum和kanban的使用[1],而很多时候,我们也将它叫作迭代状态墙. 我们先来看看怎样用这个状态墙来管理迭代任务.说起来其实是一个很简单的东西. 通常一个迭代的状态墙反映了某一个迭代的计划和任务进展情况.状态墙按照一个迭代内团队的典型开发活动分成几栏,例如"待开发"."开发中"."待测试".