事后诸葛亮
设想和目标
我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
我们的软件是为了提高实验室协作管理的效率,让实验室事务安排变得有秩序,解决实验室项目监管的可视化以及学生经常遗忘项目安排的问题。定义较清楚,对典型用户和典型场景也给出相应的描述。
我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么?)
我们原计划的功能做到了3个,完成部分的模块为日程管理,尚待完成的模块为协作管理,总体而言完成了Alpha阶段的计划内容,但相比于计划,日程管理完成不够。
有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
设想和现实还是存在不小的差距,为了保证项目的进度,必须根据实际情况设定较合理的目标,所以在下一阶段我们需要对目前组员的实力进行重新评估,已制定更好的计划以进行Beta阶段。
计划
是否有充足的时间来做计划?
计划用的时间较少,这也是我们项目进展的一大隐患。有做一定的计划工作,但做得不够充分,计划时未考虑到具体进展速度相对较慢时应如何处置,比如学习新框架的效率等,没有在计划工作考虑详细。
你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
计划工作并未全部做完。主要原因在于项目中使用较多的新框架,而且成员中Web项目开发经验不足,我们需要花费更多的时间来学习和调试新框架。
有没有发现你做了一些事后看来没必要或没多大价值的事?
太过于注重框架的细节,而在项目开发过程中,发现这些细节可以忽略,并不影响整体的开发质量。
是否每一项任务都有清楚定义和衡量的交付件?
定义较不清晰,大多以功能是否实现进行定义和衡量,没有使用较优秀的评价方法。
是否项目的整个过程都按照计划进行?
对于整体而言,我们的项目是按照计划进行的。
在计划中有没有留下缓冲区,缓冲区有作用么?
没有留下缓冲区,主要原因在于我们已经用了较多的时间去学习,所以后面都是加紧进度地敲代码实现。
将来的计划会做什么修改?(例如:缓冲区的定义,加班)
计划的修改主要将在以下方面进行:1、设置一定的缓冲区 2、细化任务 3、明确任务评价指标
资源
我们有足够的资源来完成各项任务么?
缺少Web开发经验较丰富的成员是影响我们项目进度一个很大的问题,但经过Alpha阶段的紧张学习和敲代码的实践,我们相信下一阶段将更好地解决这一问题。
各项任务所需的时间和其他资源是如何估计的,精度如何?
各项任务所需的时间和其他资源主要以该任务涉及的知识领域以及代码量进行估计,这种估计依赖于之前的开发经验,所以整体精度不高。
测试的时间,人力和软件/硬件资源是否足够? 对于那些不需要编程的资源 (美工设计/文案)是否低估难度?
由于时间较紧迫,我们所做的测试工作相对较少。而对于美工这类资源也确实低估了,调试前端也花费了较多的时间,特别是我们使用了较新的框架。
你有没有感到你做的事情可以让别人来做(更有效率)?
并没有这种感觉,主要原因在于成员都处于学习的状态,并没有说他人就有更丰富的经验和更高的效率,而且我们的任务分配也相对合理,都能尽自己最大的效率。
变更管理
每个相关的员工都及时知道了变更的消息?
我们一般会在日常会议中提及变更信息,让所有成员都了解项目的变化情况,也让成员能够在开会时对有些变更提出质疑。
我们采用了什么办法决定“推迟”和“必须实现”的功能?
主要以学习成本来衡量,对于学习成本较高的暂时推迟实现,而对于较易学习的内容则设置为“必须实现”。
项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?
目前并没有较好地定义出口条件,我们希望通过Beta阶段通过系统的测试以及前期的需求分析给出一个完整的项目出口条件。
对于可能的变更是否能制定应急计划?
对于部分变更制定应急计划,比如某框架确实太难用决定放弃使用时,就可以启用相应的备选方案。
设计/实现
设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
主要由有开发Web项目经验的同学做设计工作,由于接触过Web项目,对项目的设计也能较好地进行把控。
设计工作有没有碰到模棱两可的情况,团队是如何解决的?
我们会在日常会议中反馈自己对于项目设计的疑惑,而设计人也会在这个时候通过讨论明确相应的设计描述,避免模棱两可的情况。
团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?
Alpha阶段运用较少的单元测试,我们需要在Beta阶段不断强化项目的测试工作。本来也是计划以TDD驱动,但由于缺少项目开发经验,代码抽象能力有限,后没有采用。
什么功能产生的Bug最多,为什么?
日程管理模块Bug较多,主要是因为该模块是在阶段后期进行,所剩的时间太少,导致代码质量有所下降。
代码复审(Code Review)是如何进行的?
主要由有开发Web项目经验同学进行代码复审,在日常会议中给出代码的评价,反馈存在的问题以及下一步的更改计划。
测试/发布
团队是否有一个测试计划?
由于时间较为紧迫,我们的测试计划相对粗糙,主要以需求说明书为基础。
是否进行了正式的验收测试?
并没有进行验收测试,因为我们还有部分功能尚待实现。
团队是否有测试工具来帮助测试?
主要通过Junit框架进行单元测试,而前端主要以人力进行,未使用自动化工具进行前端测试。
有什么经验教训??
我们在Alpha阶段做的测试工作需要较大的改进,我们将在Beta阶段开始之前制定一个较完善的测试计划,加大单元测试的力度。
团队的角色,管理,合作
团队的每个角色是如何确定的,是不是人尽其才?
根据团队各个成员的项目开发经验以及个人精通的领域进行角色确定,当然我们也会轮转有些角色,比如一直是A测试B写的代码,但有时也会进行反转,由B测试A写的代码。
团队成员之间有互相帮助么?
日常会议是我们互相帮助一个很好的机会,通过面对面的交流,可以互相讨论在学习或敲代码过程遇到的难题。
当出现项目管理、合作方面的问题时,团队成员如何解决问题?
除了日常会议外,我们也会通过QQ、微信进行相关讨论,鼓励成员提出不同的见解,同时在会议或者个人聊天中进行讨论,及时处理这些疑惑,而不是留到下一阶段。
总结
你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?
我们团队目前处于规范阶段。
你觉得团队在这个里程碑相比前一个里程碑有什么改进?
改进在于团队交流更加频繁,通过日常会议这种面对面沟通的方式确实能提高不少办事的效率,不懂的问题讲一下就明白了,有质疑的地方也能及时提出,避免成员在合作上存在沟通不及时的问题。
你觉得目前最需要改进的一个方面是什么?
我们都一致觉得下一阶段最需要改进的是测试工作,同时需要提高编程的效率,由于前期用了较多的时间进行框架的学习,我们希望下一阶段能及时补上前阶段落下的内容。