项目过程管理
1. 项目所需要的文档(需要归档)
- 需求文档(需求评审时的问题列表)
- 技术文档(技术评审时的问题列表)
- 排期文档
- 开发文档(记录开发过程中遇到的难题和解决方案)
- 测试文档(测试提供UT报告和压测报告)
- 风险点(列出项目风险点并做好预案)
- 上线时的checklist
- 算法/服务维护列表
- 算法/服务过程中的问题记录(包括问题本质和解决方案)
- 算法的输入、输出记录
2. 需求评审
需求评审之前,先仔细看一遍需求文档,做什么事情心里大致有个概念。具体来说需要明确以下几点:
- 需求的目的是什么?
- 需求相对于产品来说是否合理?
- 考核指标是什么?
- 是需要重新开发还是复用现有应用?
- 需求的量级如何?
- 需求实现后对产品产生怎样的影响?
以上有些问题对于一个开发来讲是有点超出范围了,但是对于一个合格的项目负责人来说是的确要思考的问题。只有从业务需求本身思考需求,才能将需求做的更好。
需求评审时,在理解需求的基础上,进一步确认,并将还存在的问题当场提出,需要得到产品同事的立即回复。问题可以列在需求的问题列表里。
如:
序号 | 问题 | 答复 |
---|---|---|
1 | 需求的目的是什么? | 提高日活 |
2 | 考核指标是什么? | CTR |
3.技术评审
明确了需求之后,要确定所需要的技术栈,再从架构、模块方面考虑技术设计。
3.1 明确技术栈
比如,一个完整的推荐系统,需要哪些技术栈:
- 大数据相关:hadoop、spark、hive
- 机器学习相关:ml、tensorflow
- 算法:cf、svd、rank、filter
- 算法服务实现:java、spring cloud、redis
- 实时流数据处理:flink、spark streaming、storm
- 数据分析:python、hive sql
3.2 明确子系统划分
以上用到的技术栈是怎么划分在各个子系统的,它们之间是怎样协作的,这是要考虑的第二个问题。
推荐系统可以划分为以下子系统:
- 离线算法
- 实时算法
- 算法服务
将以上子系统整合起来,形成整体框架。画出框架示意图:
同时,划分清楚子系统后,要明确子系统之间的交互和协作。
3.3 明确与外部系统的交互
一般通过暴露接口的方式对外提供服务,那么就得明确接口的参数定义和结果返回,且要与调用方明确接口。
序号 | 接口 | 输入 | 输出 |
---|---|---|---|
1 | Map<String, String> getRecRsByUserId(String userId, String businessId, String sceneId); | String userId 用户id,String businessId 业务id,String sceneId 场景id | 推荐结果对象 |
3.4 技术评审时的问题列表
在评审时,技术设计人员需要一一回答评审过程中参与评审的人员提出的问题,并记录在表中,无法回答的,需要线下进行解答。无重点技术问题和难点时,技术评审通过。
序号 | 问题 | 答复 |
---|---|---|
1 | FTRL实时实现流程? | 参见文档 |
2 | user-cf 开发的数据输入? | 用户-资讯矩阵 |
4.排期文档
排期文档要明确以下重要内容:
- 模块、任务划分
- 完成时间
- 任务负责人
排期需要按照大致的可完成时间进行估计,要实事求是。可以进行风险预估并留出一定的时间,但是不能太多。后续将根据小组成员的实际工作情况来检查排期计划是否合理。
排期文档一旦确定,就需要严格按照排期进行,到任务检查点就去检查,严格考核是否已完成。
5.开发文档
开发文档主要记录开发过程中遇到的问题和相应的解决方案,作为宝贵的经验积累向大家进行分享。
6.测试文档(测试提供UT报告和压测报告)
7.风险点(列出项目风险点并做好预案)
8.上线时的checklist
列出依赖关系,尤其是依赖的外部应用,数据库,redis,离线算法,实时算法等
9.算法/服务维护列表
序号 | 时间 | 负责人 | 上线功能 | 简要描述 | 业务 | 目的 |
---|---|---|---|---|---|---|
1 | 9/28/2018 18:40 | xxx | 修改算法服务 | 主流程和ab流程合并;调整取算法结果的顺序:personaltopn第一,用户画像第二,算法0第三,算法5第四 | 浏览器弹窗 | 提高算法覆盖率,代码优化 |
2 | 9/27/2018 15:00 | xxx | 用户画像2.0 | 1、单用户推荐广告类增加到3个,每类推荐3个广告;2、上线用户画像数据中文版hive表 | 浏览器弹窗 | 丰富广告推荐内容,以利于排序 |
3 | 10/09/2018 10:40 | xxx | ab服务增加时间监控 | ab服务模块 | 增加时间log信息 | 浏览器弹窗 |
10.算法/服务过程中的问题记录(包括问题本质和解决方案)
主要用作线上问题的定位和跟踪。
11.算法的输入、输出记录
记录每一种算法的所有输入表和输出表