传统开发(瀑布、V模型等)与敏捷开发是两种截然不同的哲学。
传统开发的特点:计划驱动、阶段固化、文档详尽、变更困难。它假设需求在项目开始时就已知且稳定,客户能够清楚地说出自己想要什么。但实际上,很多客户在看到可运行的软件之前,自己都不知道想要什么。传统开发适合需求明确、技术成熟、失败代价极高的场景,如火箭控制系统、医疗设备软件。
敏捷开发的特点:价值驱动、迭代增量、拥抱变化、轻文档重沟通。2001年发布的敏捷宣言指出:“个体和互动”高于“流程和工具”,“可工作的软件”高于“详尽的文档”,“客户合作”高于“合同谈判”,“响应变化”高于“遵循计划”。常见的敏捷方法包括Scrum、XP(极限编程)、看板。
两者的核心区别:传统开发试图通过详细的计划来消除不确定性,而敏捷开发承认不确定性是固有的,通过短迭代(通常1-4周)来快速获取反馈、适应变化。比如开发一个电商App,用敏捷方法可以在第一周就做出一个能登录浏览的基础版本,然后根据用户反馈逐步增加购物车、支付等功能。
怎么选?企业级大平台、生命攸关系统倾向于传统;互联网产品、创业项目、需求变化快的场景倾向于敏捷。大二学生建议从敏捷入手,因为学校里的小项目天然适合敏捷。
