管理
在雇用开发人员之前如何确定软件项目的范围
在雇用开发人员之前定义 5 个领域:用户角色、每个角色的功能、集成、数据模型草图和成功标准。 52% 的项目经历过范围蔓延,平均超出预算 27%。 使用 MoSCoW 优先级划分方法进行 2-4 小时的范围界定练习可以防止大多数超限。
软件项目超出预算的第一大原因:在开发开始之前没有定义范围。开发商不错。 技术没有错。 范围不明确。 2024 年 PMI 研究发现,52% 的项目经历了范围蔓延,这些项目的运行平均超出预算 27%。
如果您是一位创始人,打算雇用软件开发人员或代理机构,那么您可以做的最高投资回报率的活动就是在与任何人讨论时间表或定价之前编写清晰的软件项目范围。 该文档成为您的期望与实际构建之间的合同。
这是我们在 Savi 与客户运行项目范围界定会话时使用的框架。 您可以在 2-4 小时内自行完成此操作。
范围文件应包括哪些内容
一个好的软件项目范围涵盖五个领域。 错过其中任何一个,你都会得到与现实不符的报价。
1. 用户角色。谁使用该系统? 具有一个角色的面向客户的应用程序的成本远低于具有五个角色(客户、供应商、管理员、支持代理、超级管理员)的平台。 每个角色都需要自己的视图、权限和数据访问规则。 列出每个角色,甚至是您认为显而易见的角色。 “Admin”不明显; 它可能意味着 10 个不同的权限级别。
2. 每个角色的功能。对于每个用户角色,列出他们可以执行的具体操作。 “管理员可以管理用户”太模糊了。 “管理员可以查看所有用户、停用帐户、重置密码以及将用户数据导出为 CSV”,具体到足以估计。
3. 整合。您的产品涉及的每个外部系统:支付网关、电子邮件提供商、SMS API、分析工具、CRM 系统、会计软件。 每次集成都会为项目增加 1,000-4,000 美元,具体取决于 API 质量和复杂性。
4.数据模型草图。您不需要数据库架构。 您需要对核心数据对象及其关联方式进行简单的语言描述。 “一个客户有很多订单。一个订单有很多行项目。每个行项目都引用一个产品。一个产品属于一个类别。” 这需要 20 分钟,并可避免 20 小时的项目中期误解。
5. 成功标准。你怎么知道项目已经完成了? 不是“感觉完整”。 可衡量的成果。 “客户可以创建帐户、浏览产品、将商品添加到购物车、使用 Stripe 结账,并在付款后 3 秒内收到订单确认电子邮件。” 这是可以测试的。 这是一个范围边界。
范围文件不应包括哪些内容
创始人经常在错误的领域过度指定。 范围文件不是技术规范。 忽略这些:
技术堆栈决策。不要指定“使用 PostgreSQL 和 Redis 缓存并在 AWS 上部署”。 这是开发人员的工作。 您定义系统的功能; 他们决定如何做。 如果您在没有工程背景的情况下决定技术选择,您要么会限制您的选择,要么为不适合问题的堆栈付费。
数据库模式。您的数据模型草图用简单的语言描述了关系。 开发人员将其转换为表、列和索引。 在雇用工程师之前编写架构就像在雇用建筑师之前绘制蓝图一样。
像素完美的 UI 模型。线框和粗略布局很有用。 在范围界定之前实现像素完美的 Figma 文件还为时过早。 一旦看到实际的用户流程,您将重新设计 40% 的屏幕。 在确定范围之后而不是之前投资详细设计。
如何定义用户角色和流程
将此模板用于软件需求文档中的每个功能:
作为一个[角色], 我可以[行动]以便[结果]。
示例:
- 作为一个顾客,我可以按类别和价格范围过滤产品,以便在 10 秒内找到我需要的产品。
- 作为一个行政,我可以将过去 30 天内的所有订单导出为 CSV,以便我可以与我的会计软件进行核对。
- 作为一个小贩,我可以设置自己的产品价格和库存数量,这样我就可以控制我的店面,而无需联系支持人员。
这种格式强制特定性。 “作为管理员,我可以管理产品”并没有告诉开发人员任何信息。 “作为管理员,我可以创建、编辑、存档和删除带有图像、描述、价格和库存计数的产品”,准确地告诉他们要构建什么。
写出 10-30 条这样的陈述。 这就是您的功能列表。 这就是您在询问报价时发送给开发人员的内容。
如何确定功能的优先级:MoSCoW 方法
您不会立即构建所有内容。 你不应该。 MoSCoW 方法将您的功能列表分为四个部分:
必备:没有这些,产品就无法工作。 如果您正在建立电子商务商店,结帐是必须具备的功能。 用户身份验证是必须具备的。 产品列表是必须具备的。
应该有:很重要,但产品可以在没有它们的情况下启动。 订单跟踪、电子邮件通知、库存警报。 它们使体验变得更好,但客户仍然可以在没有它们的情况下购买东西。
可以有:如果时间和预算允许的话很高兴拥有。 愿望清单、产品评论、推荐计划。 这些功能可以提高参与度,但不会影响核心功能。
不会(本轮):您决定推迟到稍后阶段的功能。 移动应用程序、多语言支持、市场模型。 把这些写下来很重要; 它通过明确边界来防止范围蔓延。
范围广泛的 MVP 仅包含必备条件和 1-2 个高影响力的应有条件。 其他一切都进入第 2 阶段。这种方法可以使您的第一个构建保持在预算之内,并让您更快地进入市场,因此您可以在构建更多之前收集真实的用户反馈。
如何处理集成
集成是软件项目规划中最常见的部分。 您的产品连接的每个外部系统都会增加复杂性、成本和潜在的故障点。
对于每个集成,记录三个细节:
- 什么系统:Stripe、SendGrid、Twilio、Google Analytics、QuickBooks 等。
- 哪些数据流向:“客户付款信息发送至 Stripe。Stripe 发回一个 Webhook 来确认付款。我们的系统更新订单状态并通过 SendGrid 触发确认电子邮件。”
- 失败时会发生什么:“如果 Stripe 出现故障,请向客户显示错误消息并保存他们的购物车。5 分钟后重试付款。”
大多数创始人都会列出前两项并跳过第三项。 错误处理占集成工作的 20-30%。 如果您没有在范围界定中定义它,开发人员要么会跳过它(不好),要么猜测您想要什么(也不好)。
设定成功标准
“项目可行时就完成了”并不是成功的标准。 这是无休止修改的秘诀。 在开发开始之前定义可衡量的成果:
- 新用户可以在 3 分钟内注册并完成首次购买。
- 管理仪表板在 2 秒内加载过去 90 天内的所有订单。
- 系统可处理 500 个并发用户,响应时间不超过 1 秒。
- 所有支付交易都记录有时间戳,并且可以导出以供审核。
- 该应用程序在 Google Lighthouse 上的性能和可访问性得分超过 90。
这些标准为您和您的开发人员提供了明确的终点线。 当列表中的每一项都通过时,项目就完成了。 没有关于按钮是否“感觉正确”的主观争论。 可衡量的结果,而不是感受。
常见的范围界定错误
在运行数百次项目范围界定会议后,以下是持续导致预算超支的模式:
写一本小说而不是一份清单。40 页的需求文档并不能让项目变得更清晰。 这使得估计变得更加困难。 开发人员浏览长文档。 他们阅读清单。 将范围文档控制在 5 页以内,其中包含要点、用户故事和优先功能列表。
在流程之前指定 UI。“我想要一个带有侧边栏和三个图表的仪表板”描述的是屏幕,而不是功能。 从用户流程开始:管理员需要完成什么? 然后决定哪些 UI 支持这些流程。 屏幕来自于流程,而不是相反。
忘记管理和后端需求。创始人痴迷于面向客户的体验,却忘记了需要有人来管理它。 内容管理、用户审核、订单履行、分析仪表板、支持工具。 管理面板通常占用总开发时间的 30-40%。 如果您的范围文档仅描述客户体验,您的报价将会低 30-40%。
不定义错误状态。付款失败时会发生什么? 当用户输入无效的电子邮件时? 当文件上传超过10MB时? API何时返回500错误? 每个错误状态都需要定义的行为。 保留这些未定义并不能节省时间; 它会产生一些错误,在发布后需要花费更多的成本来修复。
一个简单的范围模板
在为下一个项目编写软件需求时,请使用此清单作为起点:
项目范围清单
项目概况
☐ 产品的一句话描述
☐ 目标用户及其解决的核心问题
☐ 启动日期或截止日期
用户角色
☐ 列出每个角色(客户、管理员、供应商等)
☐ 定义每个角色的权限
☐ 指定启动时与后期阶段存在哪些角色
特征(每个角色)
☐ “作为[角色],我可以[行动]以便[结果]”格式的用户故事
☐ 优先级标签:必须有、应该有、可以有、不会有
☐ 每个功能的错误状态
数据模型
☐ 核心对象(用户、订单、产品等)
☐ 对象之间的关系
☐ 每个对象的关键字段
集成
☐ 外部系统(支付、电子邮件、短信、分析)
☐ 每个集成的数据流向
☐ 每个集成的错误处理
成功标准
☐ 可衡量的绩效目标
☐ 用户流程完成基准
☐ 验收测试场景
超出范围
☐ 明确推迟到第 2 阶段的功能
☐ 启动时不支持的平台(例如移动应用程序)
范围界定后会发生什么
范围文件完成后,您就可以获取报价了。 将同一份文件发送给 2-4 个机构或开发商。 清晰的范围让您可以对提案进行逐一比较。 如果一个机构对同一范围的报价为 8,000 美元,而另一机构报价为 25,000 美元,您可以询问具体原因。
这是典型的顺序:
1. 发送您的范围文件入围机构或自由职业者。 如果有的话,请包括您的时间表和预算范围。 透明度加快了这一过程。
2. 审查提案。从三个维度进行比较:价格、时间表以及工作人员。 高级工程师的报价为 10,000 美元,4 周内发货,而初级团队的报价为 7,000 美元,12 周内发货。 在我们的指南中阅读有关评估机构的更多信息如何聘请开发机构。
3. 澄清假设。每个提案都包含假设。 “假设使用 Stripe 进行付款。” “假设设计进行最多 3 轮修改。” “假设客户提供产品摄影。” 在签字之前先把这些内容摆出来。 未阐明的假设后来会成为争议。
4. 开始开发。有了明确的范围和商定的提案,开发工作就开始了坚实的基础。 改变仍然会发生,但它们将是小调整,而不是破坏预算的根本方向改变。
想了解项目范围如何影响定价? 阅读我们的细分定制软件开发成本。 如果您准备好编写完整的产品需求文档,请查看我们的PRD 模板指南。
常见问题
如何编写软件项目范围文档?
涵盖 5 个领域:用户角色(列出每个角色及其权限)、每个角色的功能(使用“作为 [角色],我可以 [操作]”格式)、集成(Stripe、SendGrid 等)、描述核心对象和关系的数据模型草图以及可衡量的成功标准。 将其控制在 5 页以内并包含要点。 这需要 2-4 小时。
MoSCoW 功能优先级排序方法是什么?
MoSCoW 将功能分为 4 个部分:必须具备(如果没有它,产品就会失败)、应该具备(重要但不会阻碍启动)、可能拥有(如果时间允许的话很好)和不会拥有(推迟到稍后阶段)。 一个范围广泛的 MVP 只包括必备品和 1-2 个高影响力的必备品。 其他一切都进入第 2 阶段。
第三方集成会给软件项目增加多少成本?
每次集成会增加 1,000-4,000 美元,具体取决于 API 质量和复杂性。 仅错误处理一项就占集成工作的 20-30%。 对于每个外部系统,记录哪些数据流向何处以及发生故障时会发生什么。 记录不完善的 API(在银行和物流中很常见)需要比预计时间多 2-3 倍的时间。
软件范围文档中不应包含哪些内容?
忽略技术堆栈决策(PostgreSQL、React、AWS)、数据库模式和像素完美的 UI 模型。 您定义系统的功能; 开发商决定如何。 线框和粗略布局很有用,但一旦测试了用户流程,40% 的屏幕就会重新设计。 在确定范围之后而不是之前投资详细设计。
范围蔓延如何影响软件项目预算?
2024 年 PMI 研究发现,52% 的项目经历了范围蔓延,这些项目的运行平均超出预算 27%。 仅管理面板就常常占用总开发时间的 30-40%,而创始人经常忘记确定其范围。 明确的“不会有”项目的书面范围边界可以防止最昂贵的超支。