从客户角度审视需求
在软件开发中,高质量的产品源于卓越的需求,而卓越的需求植根于开发人员与客户之间的高效协作。以下是剔除冗余背景后的需求工程核心干货,旨在帮助团队建立健康的跨界合作框架。
一、 警惕并消除“期望落差”
- 什么是期望落差:在缺乏足够客户参与的情况下,用户的真实需求与开发人员最终构建的产品之间往往存在巨大的鸿沟,这就是期望落差。
- 如何缩小落差:缩小期望落差的唯一有效途径是与合适的客户代表保持频繁且持续的沟通。通过访谈、需求评审、原型评估以及敏捷开发中的增量反馈,不断纠正产品方向,使最终交付的软件无限趋近于用户的实际需要。
二、 精准界定核心角色:干系人与客户
- 干系人 (Stakeholders):指受项目过程和结果影响,或能影响项目的个人、群体或组织(如法务、技术支持、测试人员等)。广撒网识别干系人是防止需求遗漏的关键。
- 客户 (Customers):客户是干系人的子集,指直接或间接从产品中获益的群体,包括出资人、直接终端用户和间接用户。
- 关键避坑准则:业务需求应由负责商业价值的管理者(出资方)提供;而用户需求必须直接来自实际点击屏幕或执行任务的“终端用户”。绝不能让出资人代替终端用户闭门造车,否则极易导致交付物不符合实际工作流。
三、 需求工程的双向契约:权利与责任法案
健康的客户与开发团队关系建立在相互尊重的基础上。客户在项目中拥有特定权利,同时也必须履行相应义务。
1. 客户的核心需求权利
- 语言对等权:期望业务分析师使用客户熟悉的业务术语进行交流,而非晦涩的技术黑话。
- 业务理解权:期望业务分析师主动投入时间观察和了解客户的日常业务、工作流及目标。
- 拥抱变更权:允许在项目推进中提出需求变更,但需通过正规流程评估变更代价。
- 知情与选择权:期望业务分析师能够以易懂的形式记录需求,并在提供解决方案时给出备选方案及优劣势分析。
2. 客户的核心需求责任
- 时间与知识投入:必须为澄清需求、传授业务背景准备足够的时间,不能当“甩手掌柜”。
- 提供清晰细节并及时决策:提供具体、准确的需求描述。在面临需求冲突或优先级排序时,必须果断、及时地做出业务决策。
- 尊重技术评估与优先级限制:尊重开发团队给出的可行性和成本估算。在资源受限时,需与团队协作,务实地排列需求优先级,放弃非核心功能。
- 设定验收条件与参与评审:主动参与需求和原型的评审环节,并预先定义好用以验收产品是否合格的明确条件。
四、 达成共识:重新定义“签字”与“基线”
- “签字”不是冻结需求的武器:很多团队将客户的签字(Sign-off)误认为需求从此锁定不可更改,这往往导致客户因害怕承担责任而拖延审批。
- 建立“需求基线” (Requirement Baseline):签字的本质是确立一条基线。它代表着各方在当前时间点对项目需求达成了最深入的共识,并以此作为下一阶段开发的基石。未来如果发生变化,团队将基于这条基线启动标准的变更流程。
- 敏捷项目的共识机制:敏捷开发不追求早期对所有需求进行大一统的签字。共识是通过产品代办事项列表(Backlog)和迭代计划会议逐步达成的。在敏捷中,轻量级的签字更像是一个“参照点”(即“我们今天确定走到这里了”),这既拥抱了变化,又防止了认知错位。
总结:软件需求不是单向的下达指令,而是业务方与技术方基于同等责任与义务的协同共创。确立清晰的决策机制,保障沟通的频次,是避免返工和项目延期的根本保障。