5 年经验面试:数据项目为什么总是延期?工期怎么估才靠谱?
面试怎么回答
数据项目延期通常是因为只估了写 SQL 的时间,而需求澄清、数据探查、口径确认、校验和对数往往占大头;另外数据比想象的脏、依赖上游和业务方确认、需求中途变化、开发人员被临时需求打断。我估工期会先花一两天做数据探查再承诺,把项目拆成澄清、探查、设计、开发、校验、对数验收、上线几个阶段分别估,参考历史类似项目的实际耗时,按每天约六成的实际投入算,给出乐观和大概率两个时间并写清依赖和风险。过程中设每周里程碑,需求变更要评估影响、由业务方在延期和砍内容之间选,优先交付最小可用版本,发现延期风险第一时间同步并给出新计划。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
「这个数仓模型两周能做完」,结果做了五周。数据项目延期几乎是常态。面试官问这道题,是想看你知不知道数据项目的时间花在哪,能不能给出靠谱的估算并管理风险。
数据项目为什么总延期
- 只估了开发时间:写 SQL 可能只占三分之一,需求澄清、数据探查、口径确认、数据校验、和业务方反复对数往往占大头;
- 数据比想象的脏:上游字段含义不清、历史数据缺失、编码不统一,开发到一半才发现;
- 依赖别人:上游系统改字段、埋点补充、业务方确认口径,都不受自己控制;
- 需求在变:做到一半业务方说「再加几个维度」;
- 被打断:开发人员同时还在处理临时需求和线上问题,实际投入远不到 100%。
怎么估
- 先做数据探查再承诺:花一两天看源数据的质量、量级、关联关系,再给工期,而不是听完需求就报数;
- 拆细:拆成需求澄清、探查、模型设计、开发、测试校验、对数验收、上线几个阶段,每个阶段单独估;
- 用历史数据:参考类似项目实际花了多久,而不是凭感觉;
- 算实际投入:一个人每天真正能用在项目上的时间可能只有 60%;
- 给范围而不是一个数:「乐观 3 周,大概率 4 周,风险项包括上游字段确认」;
- 把依赖写清楚:哪些事情依赖外部,什么时候需要别人给到什么。
过程中怎么管
- 设里程碑:每周对照计划检查,越早发现偏差越好调整;
- 需求变更走流程:新增内容要评估影响,要么延期,要么砍掉其他内容,由业务方选择;
- 先交付最小可用版本:核心指标先上线,再逐步补充维度;
- 风险早暴露:发现要延期,第一时间告诉相关方并给出新的计划,而不是最后一天才说。