提问回顾与个人总结
首先我在整个团队负责的是PM的工作,尽管有负责过开发的工作,但是我想更多地以一个PM的角度来看待问题。
提问回顾
通过一定的软件流程,在预计的时间内发布“足够好”的软件。
看完这个要求后,我的疑问在于什么样的软件才能够成为“足够好”的软件
现在我打算从三个方面来彻底考虑这个问题。
·从开发者的角度来看,好的软件是完成了其承诺的所有功能,修复了测试发现的所有bug。
·从测试者的角度来看,好的软件是在经过测试之后,是健壮的,满足了性能的要求。
·从PM的角度来看,好的软件应该是适应用户环境的,对比竞争对手的产品是要有明显的优势的。
综合考虑这三个方面,我觉得评判一个软件的好坏,是由开发规范,测试程度,市场调研,用户体验等多方面来决定的。PM需要时刻了解市场状况,竞争对手的产品特点,依据用户的反馈信息来进行需求分析。开发成员则需要制定相应的规范,保证代码质量。测试人员则需要制定好严密的测试计划,保证软件的性能,健壮性。最终再交付给用户手中,这样才能成为一个“足够好”的软件。
分析麻痹:一种极端情况是想弄清楚所有细节,所有依赖关系之后再动手,心理上过于悲观。分析太多,腿都麻了,没法起步前进。
我记得在完成OO作业的时候,在设计阶段需要弄清楚每一个类应该完成什么事情,以及类之间的调用,依赖关系,完成这部分工作之后再去着手写代码会比较轻松。那么在此处的依赖关系与单纯的程序设计作业之间类的调用依赖关系区别在哪呢?
当初完成程序作业时,我是一个人独立完成开发任务。现在在实际的软件工程项目中,是多人合作完成任务,环环相扣。
在软件工程项目中,依赖关系并不仅仅指的是代码块,各个函数之间的调用依赖关系。这个依赖关系包括前、后端之间的依赖,开发与测试之间的依赖,需求与开发之间的依赖,PM与用户的依赖等等。而我们要做的,就是在起步之前,确定软件的最小功能集——即软件的核心功能。这个核心功能是由PM在经过市场调研,用户调研,分析竞争对手产品之后获得的,它是整个软件工程的重中之重。
杀手功能,外围功能
在需求分析中,杀手功能其实就是能够把用户从竞争对手那边吸引过来的关键功能。在整个团队项目中,我们组的杀手功能有2:其一是访问速度,我们公客网站的访问速度比友商快许多。其二是移动端的适配,这是友商没有做过的。其他功能比如课程评价,课程评分,课程查询等功能也很重要,但是他们相对前俩功能来说都是“外围”的。
如何把我构建的典型用户和场景转换成我的规格说明书呢?又如何去写好我的技术说明书呢?
构建完典型用户和场景之后,还需要和这些典型用户的代表去交流,理解用户的工作方式和需要,然后再去修改,细化典型用户。在确定这些内容之后,首先需要定义好相关功能的概念,规范相应的假设,界定边界条件,然后依据典型用户和场景,模拟、描述主流的用户和软件的交互步骤,并且说明副作用,最后需要说明服务质量。
至于技术说明书,则应该把整个软件当成一个透明的箱子,我们整个团队在完成项目的时候,通过石墨文档,GitHub wiki等置顶了一系列规范,包括接口规范,报错信息等等,同时前、后端、测试、UI进行了分离,大家在互相完成自己的任务的同时也互相沟通交流,通过撰写相应文档的方式补充整个项目的技术说明书。
请问你们在项目的 需求/设计/实现/测试/发布/维护阶段(一共6 个阶段)中都学到了什么“知识点”,每个阶段只要说明一个知识点就可以。
需求
在确定需求阶段,学会了如何去构建典型用户和场景,并且如何将其转化成功能说明书。
设计
整体来说,在设计方面主要是学会了实体关系图和思维导图的应用。
实现
在实现方面,学会了前、后端之间的联系,前端与UI之间的合作,通过这些方式使软件变得更好。
测试
测试这块,主要是学会了如何和测试人员沟通,通过压力测试,兼容性测试等方面让软件在性能和健壮性方面变得更好。
发布
在发布之时,学会的是如何在短时间内向用户展示本项目的“杀手功能”以便第一时间吸引用户~
维护
身为PM,在维护阶段主要的任务就是收集用户反馈,处理用户痛点,并且将其反馈给开发测试成员并且监督修复这些问题。
结合自己在个人项目/结对编程/团队项目的经历,谈谈自己的理解或心得。
其实计算机学院的学生,在接触软件工程这门课之前,所有的项目都是个人独立开发、测试的。因此导致大家都希望成为一个技术人员,在管理、领导、协同这方面的能力比较薄弱。结对编程是我第一次和他人一起完成一个项目。整体来说,由于时间安排不合理,设计的时候也不是很到位,所以遇到了许多困难。在团队项目的时候,团队中有几个技术很强的同学,我在考虑之后,决定成为PM。大家可能都是奔着提升自己的技术水平而选的软件工程课,而我希望自己能在管理、领导这块有所能力提升,所以成为了PM。事实证明,一个好的PM,在整个软件工程项目的进展中有着举足轻重的作用。尽管我的技术水平并没有组内开发、测试人员那么优秀,但是他们都十分愿意听从我的安排,项目虽然有起伏,但是最终还是完成的很好,甚至超乎我的预期。总体来说吧,软件工程课虽然事情多,但是我是实实在在地体验到了一个软件从需求分析到最后发布的完整过程,提升很大!
最后,我不敢说我是一个十分优秀的PM,但是,我能保证的是,我们整个团队合作愉快,大家各司其职,对最后的贡献分也没有任何异议。
注:这是当时助教说转会期必须要有人转出的时候。