📚 项目开发入门系列 · 第2篇
一个软件项目是怎么从0到1跑完的
六大阶段完整拆解,每个阶段谁在干什么
📚 上篇回顾
上篇我们搞清楚了 PRD、API、Bug、敏捷、Sprint、Git、部署、DevOps 这8个核心概念。今天我们用"开餐厅"的视角,把一个软件项目从想法到上线的完整过程,按时间顺序走一遍。
💡 先记住这句话:软件开发不是"写代码"那个阶段最重要,而是写代码之前想清楚要做什么的那几个阶段决定了项目的成败。大多数失败的项目,问题都出在前三个阶段(立项、需求、设计),而不是开发写不好代码。
①立项阶段 — 决定要不要做
时长:1-4周 | 关键角色:老板/投资人、产品负责人
🍴 开餐厅视角:老板说"我想开一家川菜馆"。但光有想法不够,得搞清楚:为什么是川菜不是粤菜?公司楼下那条街已经有3家川菜了,我们还有机会吗?
这个阶段在干什么:讨论"要不要做"和"值不值得做"。核心问题是三个:为什么做?做什么?谁来做?这也是项目章程(Project Charter)要回答的三个问题。
产出物:
• 项目章程:一句话描述项目目标,划定边界(做什么、不做什么),明确关键参与人
• 初步预算和时间估算:不是精确计算,而是"大概需要3个人做6个月,大概花200万"这个量级
⚠️ 最大陷阱:立项阶段最容易犯的错误是"没想清楚为什么做就开工"。老板说"我们要做一个App",但你问他"这个App解决用户什么问题?"他答不上来。这种项目十有八九做一半就黄了。
②需求阶段 — 把想法变成详细说明书
时长:2-8周 | 关键角色:产品经理(PM)、UI/UX 设计师
🍴 开餐厅视角:产品经理开始写菜单了。不光写菜名,还要写每道菜用什么食材、做法、口味、辣度、上菜顺序。厨师拿到这份菜单,知道今天要做什么。
这个阶段在干什么:把立项阶段的模糊想法变成详细的、可执行的说明书。核心是回答"用户怎么用这个产品?"
产出物:
• PRD:功能列表、每个功能的详细描述、异常情况怎么处理
• 用户故事:用"作为XX用户,我希望XX功能,以便XX目的"的格式描述需求
• 原型图/线框图:低保真的界面草图,画清楚页面结构和交互跳转
⚠️ 最大陷阱:需求反复改。开发做到一半,产品经理跑过来说"不对,老板昨天说换一个方向"。这种情况在项目里极其常见,也是最消耗团队士气的事情。解决办法是在需求阶段多花时间对齐,把高优先级的需求先冻结,低优先级的可以留到后面迭代。
③设计阶段 — 确定技术路线怎么走
时长:1-4周 | 关键角色:技术负责人(架构师/TL)
🍴 开餐厅视角:确定厨房布局:灶台放哪、冰箱放哪、传菜口开在哪。选厨具:用燃气灶还是电磁炉?用不锈钢台面还是大理石?这些决策决定了后续做菜的效率和菜品的品质。
这个阶段在干什么:不是画界面(那是设计师的事),而是决定技术架构:用什么语言、什么数据库、系统分成几个模块、数据怎么流转。这是纯技术决策。
产出物:
• 技术架构图:系统分成哪几层、每层负责什么
• 数据库设计:有哪些表、每张表存什么字段、表之间怎么关联
• API 文档:前后端约定好的接口清单,每个接口的输入输出格式
⚠️ 最大陷阱:技术选型追新不追对。看到知乎上说某个新技术很酷,拍脑袋就用了,结果团队里没人会用,踩坑踩到怀疑人生。选技术栈的第一原则是团队熟悉、社区活跃,不是"今年最火"。
④开发阶段 — 把功能写出来
时长:4周-数月 | 关键角色:前端工程师、后端工程师
🍴 开餐厅视角:后厨正式开工!切菜的切菜、掌勺的掌勺、摆盘的摆盘。每个人有明确的分工,但需要密切配合。一道水煮鱼的鱼片切好了,但炒料还没准备好,就会卡住。
这个阶段在干什么:按照 PRD 和设计文档写代码。通常是多个工程师并行工作,每人负责一个模块。每天站会同步进度,遇到卡点立刻说。
开发阶段的日常:
• 早上站会:每人说三件事 — 昨天做了什么、今天要做什么、有什么障碍
• 写代码 + 自测:写完一个功能先在本地跑一遍,确认基本能用
• Git 提交 + 代码审查:代码提交后,另一个工程师检查,没问题才能合并
• 部署到测试环境:让测试工程师开始测
产出物:可以运行的软件功能(在开发/测试环境中),不是最终上线版本。
⚠️ 最大陷阱:三个坑:① 不写注释,三个月后自己都看不懂;② 不沟通进度,最后一天说做不完;③ 追求完美,一个功能反复打磨,影响了整体进度。记住:先做出来能用的版本,再优化。
⑤测试阶段 — 找Bug,确保质量
时长:2-6周 | 关键角色:测试工程师(QA)
🍴 开餐厅视角:试菜环节。不是为了"证明菜好吃",而是找出问题。太咸了?肉没熟?摆盘歪了?每个问题记下来,让厨师改。
这个阶段在干什么:把开发做出来的功能系统地检查一遍。不是随便点点就完事,而是有测试用例——一套标准的操作步骤和预期结果。比如"用户输入错误密码三次,应该锁定账号15分钟"。
测试的类型:
• 功能测试:每个功能按不按预期工作
• 回归测试:改了老代码后,确认以前的功能没有被改坏
• 性能测试:同时有1000个用户用,系统会不会崩
• 安全测试:有没有漏洞能被黑客利用
产出物:测试报告、Bug 清单(每个 Bug 有严重级别和复现步骤)、回归测试结果。
⚠️ 最大陷阱:"这个功能我自测过了,没问题"——这是上线出事故的头号原因。开发者自测和专职测试工程师测是两回事。开发者知道自己怎么写代码的,潜意识会避开会出Bug的操作路径。测试工程师不知道代码怎么写的,会用各种意想不到的方式操作,反而能发现真正的问题。
⑥上线与运维 — 让用户真正用起来
时长:1天-1周(上线);持续(运维) | 关键角色:运维工程师、客服/运营
🍴 开餐厅视角:开门迎客!但开门不是终点——客人来了得有人接待、有人上菜、有人处理投诉。厨房不能因为开业了就不管了,食材要补货、菜单要根据客人反馈调整。
这个阶段在干什么:
• 部署上线:把代码从测试环境推送到生产环境
• 监控告警:设置自动监控,系统出问题立即发告警通知
• 用户反馈收集:建立渠道让用户报 Bug、提建议
• 持续迭代:根据上线后的数据和反馈,调整下一版的 PRD
产出物:线上运行的系统、监控看板、用户反馈记录。
⚠️ 最大陷阱:上线后没人管。用户遇到问题找不到人,系统崩了也没人知道,然后用户在应用商店打一星差评。上线不是终点,上线是另一个起点。
总览六大阶段时间线
① 立项(1-4周)→ ② 需求(2-8周)→ ③ 设计(1-4周)→ ④ 开发(4周-数月)→ ⑤ 测试(2-6周)→ ⑥ 上线与运维(持续)
💡 关键认知:这个流程不是单向的。上线后收集到的用户反馈,会触发新一轮的需求调整,回到需求阶段开始下一个迭代。所以它是一个不断循环的环,不是一条走完就结束的直线。
自测
• 哪个阶段决定了一个项目"值不值得做"?
• 需求阶段最核心的产出物是什么?
• 设计阶段选技术栈的第一原则是什么?
• 为什么"开发者自测"不等于"测试工程师测"?
• 上线后的持续运维为什么重要?
下篇预告
第3篇我们来认识团队里的8个关键角色:产品经理、设计师、前端、后端、测试、运维、Scrum Master、安全工程师。每个人每天都在干什么?他们怎么配合?哪个角色适合你?
项目开发入门系列 · 第2篇共5篇
夜雨聆风