上一篇提到Devops(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
那项目管理是啥呢?引用如下:
项目管理是运用管理的知识、工具和技术于项目活动上,来达成解决项目的问题或达成项目的需求。所谓管理包含领导(leading)、组织(organizing)、用人(staffing)、计划(planning)、控制(controlling)等五项主要工作。
其实Devops促进要做的事,就是项目管理者全局把控以及持续按时交付要做的事。刚来第二家公司的时候做过一段时间的Release Manager,其实就是一个小的项目管理,作用就是整合各方(广告、直播、主app、付费、渠道)的需求,然后做一个整理,调整各方时间,定好本期版本迭代交付时间,以及各方排期是否可以跟上本次发版,时间不够是否需要delay还是延迟到下一个版本。更多的是跟各方沟通截止发版时间点上的需求是否可以及时的交付,是否需要延迟等,但是中间没有监控各方的进度,只是在截至时间看看实际的交付。这部分东西后来交到了产品经理手上,后续也就没去跟踪,但形式上也就是基于我所做发版经理的雏形去做此类的事。
后来公司开始使用jira来管理项目,有了真正的项目管理。那为啥要有项目管理呢?具体是做什么呢?
痛点:
1. 公司产品迭代主要由产品发起,一般都会针对于某一具体需求或者某一具体实现方式,没人全局把控。产品从产品角度,开发从开发角度,业务从业务角度。始终没有一个最终的协调人,然后开发就跟着业务产品走,主导权也主要在产品手上;
2. 各种业务方的临时紧急需求,很多业务方没有技术背景和项目管理背景,很多时候提出的需求都是发生在项目开始过程中,都是很急的需求,不得不重新估算时间和排期。开发为了避免延期风险,就是让产品排优先级,然后我们根据优先级估时,直到有必要的需求都在这个迭代中计划上;
3. 产品经理飘忽不定的需求给项目的打击是很大的,开发在摇摇坠坠中估时,此时的估时肯定会有大量的冗余,因为之前需求的变动,上线时间一改再改,再加上,主管、产品经理偶尔砍几刀,所以开发在估工时都会冗余很多;
3. 开会一般都是临时决定,产品经理会准备prd,但是其他人提前看prd准备问题的情况极少,导致会议冗长效率低,尤其是在大型prd会议中。
有了痛点就需要解决,项目管理者就是协调整个事,全局把握整个迭代的过程,使得整个交付流程无冗余无错乱。
1.需求移交:产品经理、各个需求方或者开发本身需要做的一些重构,需要在下个迭代周期开始前移交。产品移交需要各方参与,包括产品经理、开发、测试和项目经理共同参与评审需求。项目管理者协调评审时出现的各类不一致问题;
项目管理者输出:各方prd可行性上开发和测试一致通过。
2. 项目估时:主要是开发时间和测试时间;
项目管理者输出:各方prd被开发leader和测试leader认可的开发预估时间和测试预估时间。
3. 排期:排期是很重要的一个环节,而每次产品迭代的时间是固定的,在固定的时间需求的优先级和重要性就是一个必须要去考虑的因素。项目经理通过计算每个移交需求的开发和测试时间安排本次需要迭代的需求,如果时间不足够完成移交的所有需求,需要根据优先级和重要性去除。经常在迭代期间会遇到有很重要的需求必须进某个版本,那这时就需要项目经理来去辅拿主协调某个业务需求的delay;
项目管理者输出:制定项目目标及项目计划、项目进度表。
4. 交付:根据项目计划中交付时间点查看各方交付以及delay原因;在项目交付中期也需要实时监控各个prd的开发进度以及遇到的问题,是否需要拉会重新协调沟通。
项目管理者输出:项目已交付清单、未交付问题清单、遇到的问题、解决方案、后续优化。
5. 分析:每次迭代完成分析做的好的和不好的部分,持续的优化和改进交付流程。
项目管理者输出:简要的交付总结会议以及抛出一些问题,让研发、测试和产品思考问题,以及对问题本身作出本身的思考,找到问题的解决方案。通过每个人的参与来加强放大问题本身,使得每个人都可以有心里认知效应。
以上是一个简单的交付流程和项目管理者需要在每一步中输出的东西,通过这些东西来达到整个项目流程上的进展和优化,使得项目处于一种良性的持续交付。
测试某个项目时,因为需求移交冗余,测试排期杂乱无优先级,中间也尝试去管理过此项目,主要是通过jira这个工具去管理项目,下面是整个过程:
(1)Sprint创建 - 项目经理(已创建未来三-五周的Sprint)
(2)Story移交和创建:(1)PRD (2)开发、测试确认(3)创建task(4)时间(预估开发时间/预估测试时间/上线时间);
开发/测试对于移交的PRD不清楚/无法开发/测试点不清楚情况下,可以不确认;但是确认后的story无特殊情况,不能无故取消不做;取消操作至少需要经过开发leader;
技术重构时长超过一个Sprint的,需分期开成多个Story执行放入相对应的Sprint,注明(xxx-x期)。
(3)每个Spirnt需要交付的Story移交时间必须是在每个迭代开始之前;
(4)每天至少三个时间点(早上、中午、晚上)去监控各个story的状态变化;
(5)每隔两个迭代复盘移交情况以及一些出现问题的探讨和改进。
那么互联网公司到底需不需要项目管理呢?大型的互联网公司肯定是需要项目管理者去协调各方的,但是小型公司呢?没有项目经理也可以完成既定需求,也可以按期完成业务交付,问题总归也会被处理,但是有了项目经理呢?项目经理的职能除了时间点的把控,是否可以在效率上、交付质量和手段上也提出一些改进呢?