Alpha事后诸葛亮
设想和目标
1、 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
- 我们的软件要解决的是日常生活中消费记录理财规划问题。
- 定义的挺清楚的。
- 对典型用户和典型场景有清晰的描述。前期根据问卷来调查用户需求,确定目标人群,从而建立文档。
2、 是否有充足的时间来做计划?
- 有的。课程前的选题作业和需求分析作业阶段足够我们制定详细的计划了。
3、 团队在计划阶段是如何解决同事们对于计划的不同意见的?
- 由于团队规模比较小,比较少出现意见不同的情况。极少数情况下也是直接讨论,各抒己见,选择更合理更能令人信服的方案。
有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
- 在实现过程中没有出现大的纰漏,但如果历史重来一遍,我们会将文档、框架等写的更加详细一些。
计划
1、 是否有充足的时间来做计划?
- 我们在Alpha冲刺前期就完成了计划制定和任务分工。
2、 团队在计划阶段是如何解决同事们对于计划的不同意见的?
- 鼓励大家积极发言,然后团员共同商讨选出大家认为比较合适的方案。
3、 你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
- 所有任务已按原计划完成。
4、 有没有发现你做了一些事后看来没必要或没多大价值的事?
- 自己写算法。
5、 是否每一项任务都有清楚定义和衡量的交付件?
- 有明确的交付件,在编写过程中有调整。
6、 是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
- 由于明确的分工,合理的计划安排,整个过程都按照计划进行了。
- 没有什么风险是前期没估计到,后面才发现的。
7、 在计划中有没有留下缓冲区,缓冲区有作用么?
- 有留下部分缓冲区,毕竟在整个冲刺时间短暂中还有课程,还有部分科目要考试,缓冲区是不可少的。
8、 将来的计划会做什么修改?(例如:缓冲区的定义,加班)
- 每个人都应明确缓冲区的具体时间段,不要在缓冲区以外的时间仍在休息
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 更加合理的安排时间,毕竟不是专门做开发的,在开发冲刺的同时还有课业。讨论方案时要讨论到更加细节的地方,而不是大致的商讨,并将商讨结果做详细的记录,不至于遗忘。
资源
1、 我们有足够的资源来完成各项任务么?
- 前期花了很多时间在安装配置工具上为后期使用提供很多方便。
- 人力资源虽然团队只有五个人但明确分工使用个人的工作量都不至于过于大。
- 学习资料:网页上有很多供参考的资料,也助教老师供大家咨询。
2、 各项任务所需的时间和其他资源是如何估计的,精度如何?
- 首先确定我们的任务极其相对应的难度值,再根据任务难度和任务类型分配给每个人,最后确定每个任务的完成时间极其资源。
3、 测试的时间,人力和软件/硬件资源是否足够? 对于那些不需要编程的资源 (美工设计/文案)是否低估难度?
- 人力、软硬件资源充足,但是时间就比较赶。
- 文案的编辑还是很重要的,虽然不用编程,但好的策划、计划、设计决定了后期的工作方向。
4、 你有没有感到你做的事情可以让别人来做(更有效率)?
- 每个队员的能力都不同,每个人擅长的也不同。但不能因为一个人做事更有效率,就把每件事都交他做。能力相对较差的人可以分配相对比较简单点的任务,当然能力较高者可以分配相对较难的任务。所以前期分配任务时就应先了解每个人的能力,再分配相当的任务。
有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
- 团队之间多进行交流和沟通,任务分配明确且尽量均等,避免有人任务过重,有人清闲。
变更管理
1、 每个相关的员工都及时知道了变更的消息?
- 因为每天都会开会,有什么问题也会扔到群里讨论,所以消息传递效率还是有保证的。
2、 我们采用了什么办法决定“推迟”和“必须实现”的功能?
- 通过开会讨论共同商议决定的。
3、 项目的出口条件(Exit Criteria)是否得到清晰的定义?
- 在需求报告里的性能、界面需求等模块中有比较清晰的定义。
4、 对于可能的变更是否能制定应急计划?
- 基本没有,紧急情况全靠肝。
5、 员工是否能够有效地处理意料之外的工作请求?
- 没碰到意料之外的工作请求。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 目前没有遇到变更情况。
- 如果历史重来一遍,我们会提前制定好变更应急计划。
设计/实现
1、 设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
- 设计工作是在项目选题报告时,由组长挑选,全组人共同完成的。
- 时合适的时间合适的人。
2、 设计工作有没有碰到模棱两可的情况,团队是如何解决的?
- 没有碰到模棱两可的情况,一般一起讨论后就会有结果。
3、 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么? 比较项目开始的 UML 文档和现在的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?
- 团队运用了单元测试、UML等工具帮助实现。
- 有效。单元测试有效地帮助测试了每个类的debug,uml帮助我们理清用户、需求、系统功能单元之间的关系。
- uml文档暂时还没有区别。
- 不需要更新unl文档。
4、 什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?
- 添加账单功能产生的bug最多。因为这一块的代码逻辑比较复杂,需要考虑的方面也比较多。
- 在发布之后还未发现bug。
5、 代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
- 代码复审由审查者评审代码的格式、风格、命名是否符合规范。
- 严格执行了代码规范。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 我们学到了如何用测试工具辅助设计和实践。
- 如果历史重来一遍,我们会多应用自动化工具进行代码的测试和复审。
测试/发布
1、 团队是否有一个测试计划?为什么没有?
- 有。
2、 是否进行了正式的验收测试?
- 还未进行正式的验收测试。
3、 团队是否有测试工具来帮助测试?
- 运用Junit和UI Automator来帮助测试。
4、 团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
- 还未进行软件的效能测试。
5、 在发布的过程中发现了哪些意外问题?
- 还未发布。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 我们学到了测试的重要性。
- 如果历史重来一遍,我们会花更多一些的时间在学习自动化测试上。
团队的角色,管理,合作
1、 团队的每个角色是如何确定的,是不是人尽其才?
- 团队的角色是根据团队成员各自选择喜欢或熟悉的方向确定的。
- 有做到人尽其才。
2、 团队成员之间有互相帮助么?
- 有。
3、 当出现项目管理、合作方面的问题时,团队成员如何解决问题?
-
还未出现过这样的问题。如果出现了会及时反馈,集体进行合作方面的debug吧。
每个成员明确公开地表示对成员帮助的感谢 (并且写在各自的博客里):
许郁杨:我感谢丁丁对我的帮助,因为她就是我们的明天。
许斌:我感谢郁杨对我的帮助,因为组长帮我们找学习资料。
余文茜:我感谢丁丁给我的帮助,因为我很多界面其实弄不清楚,丁丁帮助我修改了很多控件和界面,没有她就没有我们的明天。
杨心逸:我感谢许郁杨对我的帮助,因为他教我使用leancloud管理云端数据,处理后台请求。
温伊倩:我感谢郁杨对我的帮助,因为组长顿顿请吃饭(๑˃̵ᴗ˂̵)و!
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 我们学到了团队氛围对开发的重要性。
- 如果历史重来一遍,我们会继续保持现阶段良好的团队氛围。
总结
你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?
- 我觉得团队目前的状态输入可重复级(Repeatable)档次。
你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?
- 我觉得团队目前处于磨合阶段。
你觉得目前最需要改进的一个方面是什么?
- 我觉得目前最需要改进的方面是前端和后端之间协作同步的问题。