先附上团队博客地址:https://www.cnblogs.com/buaareadsun/
学期初的提问博客
在学期开始的时候课程组布置了阅读作业,要我们快速阅读,同时提出自己的问题,这是当时的博客链接:https://www.cnblogs.com/jeffan/p/10478930.html
对当时的问题进行解答
问题1:单元测试应该由谁来写?
在软件工程的实践过程中,我们的单元测试是由最熟悉代码的人(程序的作者)来写的,因为在实际的敏捷开发中,时间紧任务重,不可能由其他人来写单元测试,而至于测试的覆盖性问题,我们在进行全方面的功能测试时进行尽可能的保证。另外,单元测试最好是在设计的时候就写好单元测试,这样单元测试就能体现API的语义。
问题2:何时使用goto语句更为合理?
书中(P69 4.3代码设计规范)提到:
函数最好有单一的出口,为了达到这一目的,可以使用goto。只要有助于程序逻辑的清晰体现,什么方法都可以使用,包括goto
通过阅读博客1和博客2,goto语句有优点也有缺点,它的缺点是能有意识地进行避免的,因此只要能够善用goto语句,就能把goto语句的作用发挥到极致。
问题3:对于结对编程不大认可,还需实践检验
在实践的过程当中,发现结对编程的好处还是很明显的。结对编程中一对程序员肩并肩、平等地、互补地进行开发工作,确实能够很好地互相弥补双方的不足,激发双方的斗志,通过讨论等方式碰撞出新的火花。
问题4:PM在本课程项目中的具体任务
书中(P189 9.3 PM做开发和测试之外的所有事情)提到在一个项目中PM的具体任务:
- 带领团队形成团队的目标/远景,把抽象的目标转化为可执行的、具体的、优美的设计;
- 管理软件的具体功能的生命周期(需求/设想/设计/实现/测试/修改/发布/升级/迁移/淘汰);
- 创建并维护软件的规格说明书,让它成为开发/测试人员及时准确的指导,而不是障碍;
- 代表客户和用户的利益,主动收集用户反馈,预期用户新的需求。协调并决定各种需求的优先级;
- 分析并带领其他成员对缺陷/变更需求形成一致意见,并确保实施;
- 带领其他成员确保项目保持功能/时间/资源的合理平衡,跟踪项目进展,确保团队发布令客户满意的软件;
- 收集团队项目管理和软件工程的各种数据,客观分析项目实施过程中的优缺点,推动项目成员持续改进,从而提振士气。
除了这些之外,作为本次软件工程项目alpha和beta阶段的PM,我认为还有PM还具有市场调研、竞品分析、运营推广等任务,必须懂市场、懂调研、懂营销、懂管理。
问题5:在这个时代,创客们更需要注重哪种创新?
书中(P349 16.1.6 迷思之六:技术的创新是关键)提到:
我们在这里看到,除了技术的创新,还有很多方面的创新:商业模式的创新…用户体验的创新…生态系统的创新…
本学期我参加了一个创业项目,该项目技术上其实比较简单,没有什么技术壁垒,最重要的地方在于看到了用户的需求痛点。其实看很多成功的互联网公司,比如快手、滴滴,也并不是技术上多么牛,如果能够尽早地、准确地把握用户的需求,尽早进入市场培养用户习惯才是重点。总之我任务,技术创新固然重要,但是也要特别注意从解决市场需求的角度入手。
我学到的知识点
需求阶段
对需求的准确分析,是软件工程一切的基础。
需求分析涉及到产品的定位问题、用户的需求理解、以及最后的产品设计与实现问题,只有更详细地调研用户的深层次需求,才能明白本产品该如何去解决这些痛点,进而为下一步的产品计划和实现树立一个明确的目标。
设计阶段
产品设计应综合考量多个方面,设计时应尽量详细,这样能为后续的产品实现提供详细的目标指导。
产品的设计,需要综合考虑用户不同方面和不同程度的需求、团队的能力、产品实现的难度、产品的交互设计、功能实现的性价比等,是一个需要权衡、调研、并与团队与用户进行沟通讨论的过程。产品设计时应尽量做到详细,给负责产品实现的开发人员定下统一的标准,才能更好地推动产品实现的进度。
实现阶段
实现阶段要注意做好分工计划和进度管控。
在具体实现之前,应该根据产品的设计做好分工,分工应尽量明确,且要注意依赖项任务之间要适当地安排、不能拖慢整体进度,尽量把不互相依赖的任务并行进行,最大化地利用仅有的开发时间。同时在整个实现的过程中,难免会与计划相差较远,此时要注意管控好进度、随时调整计划。
测试阶段
测试阶段要注意全面地进行测试。
开发人员(写这部分代码的人)要进行单元测试,另外需要一个人进行压力测试,同时前端的功能测试也最好由2个人进行,以免遗漏。显示的适配性也要注意多使用不同版本的显示媒介来进行较为全面的测试,如果可以的话,可以组织一波内测用户,这样更有利于全面测试。
发布阶段
发布阶段要注意从用户的角度书写发布声明。
发布时配套的发布声明中,应该从用户的角度去说明产品如何使用,以及产品有哪些新功能,因此应尽量使用直白简洁的语言,最好能使用清晰易懂的图片或动图或视频,如果更加入一个有趣的元素当然会更好,因为发布声明其实也有一点宣传的性质在里面。
维护阶段
维护阶段要注意及时修复bug,不能拖沓。
进入beta和gamma阶段后,我们就需要对前一阶段的产品进行维护,此时会在开发过程或通过用户得知一些Bug,此时应尽快修复不能拖沓,否则会及其影响用户体验,同时也打击用户对我们团队产品的信心。
心得
作为alpha和beta阶段的PM,我觉得自己的沟通能力、团队协作能力、项目进度管控能力等得到了一定的提升,在这些方面都有一定的心得体会。
(1)在沟通过程中,注意面对不同性格的成员,可能需要使用不同的沟通交流的方式;同时在表述任务时,应尽量做到表述明确、有条理,多个任务时最好能使用编号,这样方便接下来对任务进行讨论和验收。
(2)团队中难免会有遇到一些协作上的问题,如果是偏技术的问题,最好由技术人员之间协商解决,当然PM需要大致了解该问题及其解决方案,如果是沟通协作上的问题,PM应该负起主要责任,应搞清楚问题出现的原因,很多情况下是因为之前的需求分析或产品设计或开发计划没有做好,此时PM应明确问题所在并进行自我反省和做出解决方案。如果没有这个能力,将很难获得团队成员的信任。
(3)项目进行过程中,PM需要从整体上进行进度管控,每天都必须清楚每个人的每日计划的完成情况,以及对明天工作的计划,如果成员遇到什么困难要及时解决,或转移任务,同时要注意课程组的一些时间节点和项目要求,让团队成员能够专心进行开发等工作,外界(课程组/社联)的一些要求都由PM来把握。
总之,在承担PM角色的过程中,需要通过实践和思考,不断总结自己的不足,提升自己的各项能力,而不能仅仅是作为一个博客写手,这样毫无进步。(当然文档表达能力也是很重要滴)
最后很感谢我的队友们,他们都超!级!可!爱!!!团队氛围总体上也十分融洽,正是有了大家的辛苦付出,我们才能以这么高的完成度,做完了这个“麻雀虽小五脏俱全”的项目,也很感谢你们在我这个不成熟的PM的魔鬼push之下仍然能够保持冷静和理智。在与你们的不断磨合中,我也逐渐提升了自己,学到了很多。这学期的合作十分愉快,吐槽之中仍带着欢笑,这就是我们团队的精神吧,嘻嘻嘻如果要给团队选一个icon的话那必然是: