流程目的是规范协作、减少错误、提高效率,过多的流程会导致官僚主义和效率低下,但是没有任何流程的约束将会导致无序发展。互联网项目需要选取适合于该行业项目的特征(‘无快不胜’和需求变化多)的流程文档。
可以通过以下几个步骤为一个互联网项目选取合适的文档流程:
■ 流程文档了解期:
◇ 找出目前项目/团队中最需要解决或提高的问题;
◇ 了解相关的流程方法,找出一种或几种流程方法进行深入学习;
◇ 查看相关项目使用该流程方法的经验教训;
◇ 确定合理的期望,选定合适的项目/团队进行试点;
■ 流程文档试用期:
◇ 获得部门或公司管理层支持;
◇ 确定试用该流程方法的时间跨度和成败标准;
◇ 开始应用所选定的流程方法于选定的项目/团队;
◇ 跟踪记录相应的度量数据;
◇ 试用期结束后进行度量评估,以决定是否进行后续推广;
■ 流程文档推广期:
◇ 根据试用期的反馈,组织相关的培训和宣传,将选取的流程文档推广到更多的部门/项目中,修改不适用的部分;
◇ 设定时间目标和负责人,对采用该流程模板的项目进行定期跟踪,收集更加广泛的反馈;
■ 流程文档持续优化期:
◇ 对收集到的反馈组织专家小组进行分析讨论,去其糟粕,取其精华,对流程文档进行更新修改;
◇ 发布和宣传修订后的流程文档,使之形成持续完善和更新的流程;
◇ 流程文档的优化本身就是敏捷的体现;
流程模板是需要不断的‘活’下去才能适应互联网项目的业务发展需要,因此持续地优化选取的流程模板本身就是一种‘敏捷’方式的体现。
针对互联网项目的特征,一个典型的互联网项目生命周期和主要交付物(如上图所示),包含的主要内容有:
● 流程,推荐采用里程碑规划和小周期迭代的开发方式:
◇ 里程碑规划是为了使产品的‘基因’能够比较好的确定下来,使最终的产品尽可能达到‘概念一致性’;也许在项目初期无法定义整个产品生命周期的特征,但是至少可以基本确定1.0版本的功能和2.0版本的初步想法。
◇ 采用小周期迭代开发方式,是为了适应业务需求的发展,更快的获得反馈,拥抱变化,降低后期的修改成本。
◇ 每个迭代结束时应能够交付有一定商业价值的特征或模块,是可潜在发布的版本(需要一定的自动化测试环境支持)。项目最开始的几个迭代的输出可能不能达到潜在可发布的要求。
● 主要活动和文档输出物:
◇ 项目启动会议,项目出资人或项目经理介绍项目背景、项目目标、主要里程碑计划、团队构成和纪律方法等内容,是一次动员和激励会议,使项目/团队有一个共同的愿景。其对应的文档为项目启动报告。
◇ 迭代计划会议,根据项目/团队的实际情况(效率、能力、环境和人力资源日历)计划下一个迭代的工作任务、时间跨度以及任务完成的定义。其对应的文档为迭代任务列表,包括迭代目标和对完成的定义。
◇ 迭代结束演示会议,将上一个迭代中的交付物向项目发起人/客户进行演示,以获得反馈和确认,如有差距则现场反馈、澄清和在后续的迭代中进行灵活调整。项目发起人/客户的反馈和评价对项目/团队成员将会起到很好的激励作用。其对应的文档为更新后的产品需求列表,增加新的需求项和标注已经完成的需求项。
◇ 迭代结束回顾总结会议,全体团队成员对过去的一个迭代进行回顾,至少包含以下两个问题并形成迭代回顾总结报告:
▲ 在过去的一个迭代中,团队的哪些优点可以继续保持下去;
▲ 在过去的一个迭代中,团队存在哪些改进之处,如何改进,并安排对应的责任人跟踪处理过程;
◇ 里程碑总结会议,评估过去的里程碑完成情况,同时更重要的是需要对以后的所有里程碑定义重新进行可行性评估和相应的调整。其对应需要书写和完善的文档为项目里程碑计划。
◇ 上线评估会议,由各相关的团队对需要上线的内容(含质量情况)和时间进行确认,以及对上线后可能存在的风险进行评估和制定相应的预防和应对措施。如果是一些影响比较小的hotfix可以通过邮件进行确认而无需进行评估会议。其对应的文档为上线评估报告。
◇ 收集用户反馈、优化产品功能会议,项目组主要人员对于上线的用户反馈进行集中的评估,汲取有价值的建议在后续的版本中进行实现。其对应的文档为用户反馈列表。
总结起来,上述流程对应的文档有:项目启动报告,产品需求列表,迭代任务列表,迭代回顾总结报告,项目里程碑计划,上线评估报告,用户反馈列表。
● 其他一些可能涉及到的或可选的流程文档列举如下:
◇ WBS分解
◇ 概要设计和详细设计
◇ 测试用例
◇ 需求变更流程及其记录
流程文档是为实现商业价值服务的,并无好和坏的流程之分。一个适合于团队的流程至少应该是:团队成员认同的、领导层支持的、在本公司/部门的企业文化中是可执行的、能够带来高效沟通和协作的、能够保持一定发布节奏的流程。