团队作业7——Alpha冲刺之事后诸葛亮

设想和目标

1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?

我们的软件要解决的是在校大学生舍费管理问题。在学校的生活中必不可少的就是宿舍生活,宿舍生活就会涉及到舍费管理问题。之前大部分宿舍里的舍费都是由舍长管理,通常都是记在纸上,既麻烦又容易忘记,而且还容易丢失账单,照成不必要的麻烦。而我们的项目就是为了解决学生的舍费管理问题而创造的,银河宿舍致力于通过微信小程序这一简单的平台,帮助学生们有规律有保障的舍费记账。

2. 我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?)

经过alpha阶段的冲刺,我们按原计划完成了界面的设计、记账的功能,部分任务不能按照原计划时间交付,离原计划还是有一定的差距的,比如还未实现剩余舍费与账单支出的同步计算,收支无法区别开来等问题。现在暂时还未能提交给用户使用。

3. 和上一个阶段相比,团队软件工程的质量提高了么? 在什么地方有提高,具体提高了多少,如何衡量的?

和上一阶段相比,我们的软件工程质量提高了。提高在于从什么都没有,团队的磨合,到alpha阶段的冲刺也是团队磨合的一个阶段。之前都是各做个的,在做的过程中没有交流,后来在PM的任务安排和积极沟通下,团队才有了较好的配合。

4. 用户量, 用户对重要功能的接受程度和我们事先的预想一致么? 我们离目标更近了么?

在对附近五个宿舍的产品试用中,基本上对我们的舍费记账小程序很感兴趣,这对于我们来说是一个好的兆头,虽然我们没有完整的实现记账功能,但对未来的改进开发还是很有信心的。

  • 有什么经验教训? 如果历史重来一遍, 我们会做什么改进?

    教训:就是前期用户调查得到的信息不够完全,再就是团队磨合时间较长,沟通较少,还有时间的不合理安排,导致了项目进度的拖拉。

    改进:在alpha冲刺前就要先对软件工程的流程已经团队配合方面要有充足的准备,开发知识的准备也是很重要的。

计划

1. 是否有充足的时间来做计划?

alpha阶段我们并没有花多少时间来做计划,即使做了计划也由于这样那样的原因未能按时完成计划。项目的每一个部分都没有我们想象的那么简单,一开始我们觉得有充足的时间来做计划,但是随着时间的推移,我们发现之前制定的计划不能符合我们的进度。任何一个项目都需要比预计更多的时间投入,因为我们不懂的地方远远超过了我们的预期。在之后的项目中,我们会提前准备好足够的时间来做计划。

2. 团队在计划阶段是如何解决同事们对于计划的不同意见的?

团队在计划阶段的不同意见是必然存在的,如何统一同事之间的分歧是保证项目进展的关键,这点我们由我们项目的pm来做,我们会在团队讨论组里展开讨论,针对大家提出的疑问立足于我们面对的进度,就事论事保证最后的结果是最适合我们项目的,正常沟通都能解决分歧。

3. 你原计划的工作是否最后都做完了? 如果有没做完的,为什么?

我们原计划的工作未完成,剩下舍费和账单开销的同步。对于微信小程序来说我们的开发人员还是不够上手,经常因为一个小问题纠结半天,但主要原因还是在冲刺阶段没有做好充足的知识准备。

4. 有没有发现你做了一些事后看来没必要或没多大价值的事?

暂时没有,前期我们做的都是一些基础的开发,并没有什么没多大价值的事。

5. 是否每一项任务都有清楚定义和衡量的交付件?

没有,alpha阶段我们致力于程序关键功能的开发,把大部分精力放在代码的学习和设计开发上,所以对这部分定义交付件没有多少的准备。

6. 是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?

alpha阶段的前两三天有按照计划进行,但在后来遇到的代码问题越来越多,项目进度不得不延迟。这点的风险是我们没有考虑到的,对于一门新语言的学习和使用还是需要提前去准备的,代码的问题时我们遇到的最大问题。

7. 在计划中有没有留下缓冲区,缓冲区有作用么?

在计划中我们没有考虑到留下缓冲区,这是我们的一个弊端。

8. 将来的计划会做什么修改?(例如:缓冲区的定义,加班)

团队还是需要配合的,这样才能保证任务的及时完成和下一阶段任务的布置。缓冲区也是我们将来要考虑的一个点。

我们学到了什么? 如果历史重来一遍, 我们会做什么改进?

项目进度的计划制定还是至关重要的,没有压力就没有动力,下一阶段我们要好好制定计划。

资源

1. 我们有足够的资源来完成各项任务么?

目前遇到的问题网上都有充足的资料和教程来帮助我们完成各项任务,后续问题暂未发现。

2. 各项任务所需的时间和其他资源是如何估计的,精度如何?

项目中所需的时间是根据项目负责人的能力和知识,所需时间是根据大家的能力和工作量来划分,总体上来看还算满意,但是在有些方面还是不够。时间花费超过预定安排。
我们根据对于我们来说任务实现的难易程度来进行时间估计,但没有对资源进行估计,估计的精度有百分之五六十左右。

3. 测试的时间,人力和软件/硬件资源是否足够? 对于那些不需要编程的资源 (美工设计/文案)是否低估难度?

我们花在测试的时间上并没有很多,人力、软件资源足够,硬件资源暂未发现。我们在美工设计没有花多少时间,主要还是在代码开发这一块,文案也比较少。

4. 你有没有感到你做的事情可以让别人来做(更有效率)?

有,一开始划分项目时候只是粗略的划分,后续跟进时候未对项目进行再根据每个人适合做的事进行划分,一开始划分只是根据主观感受进行划分。

有什么经验教训? 如果历史重来一遍, 我们会做什么改进?

对于资源这块在alpha阶段我们没有遇到太大的问题,主要就是在人员任务分配上有些小问题。

变更管理

1. 每个相关的员工都及时知道了变更的消息?

每次的变更我们都会在讨论组里进行通知,每个团员都会回复告知收到消息。

2. 我们采用了什么办法决定“推迟”和“必须实现”的功能?

对于我们项目的关键功能,比如记账功能的实现,是必须实现的,像后端数据存储和舍员的加入等是可以推迟的。

3. 项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?

通过小组成员的测试和评估,就算是出口条件

4. 对于可能的变更是否能制定应急计划?

这个暂时没有

5. 员工是否能够有效地处理意料之外的工作请求?

小组成员都能接受一些力所能及的工作请求,因为我们是一个团体。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
小组成员对于变更管理是有很好的意识的,都能在团员间的帮助下解决一些变更问题。

设计/实现

1. 设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?

在设计工作时候,有小组组长和项目的pm来共同协商,总体上来看是合适的时间和适合的人来完成。

2. 设计工作有没有碰到模棱两可的情况,团队是如何解决的?

遇到摸棱两可的问题时候,我们会开团队讨论会,问题出现肯定是有问题的,针对问题是如何发生的去寻找答案,团员之间还是很好说话的,都能很好的解决。

3. 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么? 比较项目开始的 UML 文档和现在的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?

我们暂未找到较完善的微信小程序测试工具

4. 什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?

账单和舍费之间的计算出现的bug最多,还有收支的不明显。在发布之后暂未发现重要的bug。我们在开发设计中对代码的使用不熟悉,导致了种种bug的出现。

5. 代码复审(Code Review)是如何进行的,是否严格执行了代码规范?

我们在代码复审上做的不够好,对代码体系结构没有固定的规范,但在可维护性和可读性还是有进行规范的。

我们学到了什么? 如果历史重来一遍, 我们会做什么改进?

之前的感觉就是代码规范不是那么重要,只要程序能运行就可以了,但结果并不是这样的,一个好的代码规范能很有效的帮助你去修改程序,修复bug 。

测试/发布

1. 团队是否有一个测试计划?为什么没有?

没有一个完整的测试计划,因为测试人员对于测试这一块的工作不是很了解,磕磕碰碰的没有做出一个完整的测试计划。

2. 是否进行了正式的验收测试?

没有

3. 团队是否有测试工具来帮助测试?

测试工具由微信小程序自带的状态监控来帮助测试,但测试内容并不多。

4. 团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?

测试人员是根据微信小程序运行的时间、使用的数据量和质量带来的运行时间、cpu使用率等来跟踪软件效能,但提供的信息不多。还有就是各种bug的测试结果,对我们修复代码bug也是有一定帮助的。

5. 在发布的过程中发现了哪些意外问题?

发布的只是带有基础功能的小程序,没有意外问题。

我们学到了什么? 如果历史重来一遍, 我们会做什么改进?

我们学到了测试的流程和整个测试环节的要求,虽然没有很好的进行测试,但在下个阶段中测试也是我们要重点关注的问题。

团队的角色,管理,合作

1. 团队的每个角色是如何确定的,是不是人尽其才?

每个角色是根据他擅长的方面来确定,基本上是人尽其才了。

2. 团队成员之间有互相帮助么?

团队成员之间的帮助那是必须有的,在初期的代码学习上还是通过成员之间的学习讨论解决的,还有就是任务之间的帮助。

3. 当出现项目管理、合作方面的问题时,团队成员如何解决问题?

项目管理主要由队长和PM负责,也是主要由他们俩在负责协商问题,解决问题。一般都是代码问题,我们都会在宿舍里进行讨论。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
人员任务的分配和合作是很重要的,一个项目的完成与否,就看这个团队之间是如何配合的了。

总结:

你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?

CMM第二阶段,可重复级

你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?

磨合之上规范之下

你觉得团队在这个里程碑相比前一个里程碑有什么改进?

对整个项目流程和团队配合有了更好的理解和实施,代码使用也较为娴熟。

你觉得目前最需要改进的一个方面是什么?

最需要改进的就是代码的开发和规范、测试,这些都是需要我们改进的

对照敏捷开发的原则, 你觉得你们小组做得最好的是哪几个原则? 请列出具体的事例。

对于我们小组来说,团队定期地反思如何能提高成效,并依此调整自身的举止表现是我们做得最好的原则。因为我们一半是男生一半是女生,虽然不能经常面对面开会,但我们经常在讨论组里进行项目反思和效率的讨论。

讨论照片

团队成员在Alpha阶段的角色和具体贡献排序

名字|角色|团队贡献排序|可验证的贡献|个人贡献分

  • | :-: | :-: | :-😐 :-: | -:
    李晓冬|后端开发|1|记账功能实现|30
    苏叶潇|前端开发、测试|2|记账界面开发、测试|21
    龚厦彬|后端开发|3|宿舍成员界面开发|20
    柏清晔|宣传、测试|4|测试、博客撰写|18
    王妍|issue管理、前端设计|5| 管理每个阶段的任务完成情况,博客撰写|16
    郭余晟|PM|6|统筹规划、分配任务、组织会议|15

成员总结

柏清晔:

  • 要完成一个项目就需要各式各样的人员整合到一起,扮演不同的角色。如何发挥我们的特色,分配适合的角色,从而更快更好的完成各自的分工,就是需要考虑到问题了。团队应该有较高的执行力,做事不拖泥带水,不应该什么事都拖到最后再来。

王妍:

  • 制作一个软件哪怕是这样一个功能不多的小软件,在编程的时候都要方方面面去考虑,开发注重的是编程的思想,要善于去考虑问题,团队制作项目比之个人独立完成最有优势的就是在碰到问题的时候大家都能提出自己的见解。

李晓冬:

  • 在Alpha冲刺阶段由于对微信小程序语言的不了解,项目的开发也都是从头开始,一点一滴的学习新语言以及应用到项目里,从中我也学会了很多,不仅提高了自己的编程能力,还意识到团队合作的重要性,在对的时间做对的事,有时会因为一定的疏忽造成严重后果,希望在下一阶段能够合理解决这些alpha阶段发生的配合,工作分配,代码管理等这些问题能得到顺利的解决。

苏叶潇:

  • 经过一周的Alpha阶段,我对如何做一款符合要求的软件有了大致的认知,并不是以前印象中单单写好代码运行那么简单,写代码的过程中会出现很多问题,都需要团队去一一讨论解决,测试过程发现软件出现弊端也要合理的解决。团队中的每个人都是不可或缺的,碰到问题,大家一起去查阅资料,结合每个人自身的想法,在一起讨论,这样解决问题的效率完全不是1+1=2那么简单。

龚厦彬:

  • 在Alpha阶段,我们团队通过合作的方式,完成了之前觉得不大可能会完成的事(至少在我看来是这样的),大家其实之前的写代码能力都不太好,这期间大家都是边学边做,边做边学。

郭余晟:

  • 在alpha阶段,我们小组完成得不是很顺利,分工没做好,所以项目进度完成得比较不好,需要学习改进的地方还还是很多。但是因为大多小组成员都是第一次做这样的项目,所以难免有压力,还好大家相互帮助,真心感谢各位小组成员。
posted @ 2018-05-16 21:32  灰化肥挥发会发黑  阅读(169)  评论(4编辑  收藏  举报