我是淄博一家制造企业的老板,去年想开发一套内部管理系统。第一次接触软件开发,我完全懵了。服务商抛出“瀑布”和“敏捷”两个词时,我第一反应是:“我就想做个系统,怎么还扯上瀑布了?”后来,我花了三个月亲自下场参与,才搞明白这两种流程到底意味着什么。

先说说我们选瀑布模型的那段经历。当时我们觉得项目需求很明确——就是管库存、管订单、管财务。瀑布模型要求我们一次性把所有需求写清楚,像盖房子一样先画图纸再施工。我们团队花了两周写需求文档,二十页纸,自认为很完美。结果开发两个月后,财务主管说:“等等,这个报表格式和我们现在用的不一样,得改。”开发团队反馈:“改可以,但这是需求变更,要加钱、延期。”那滋味,就像你点了份红烧肉,吃到一半发现想要加个蛋,厨师却让你重新排队。最终项目延期一个月,多花了15%的预算。

吃一堑长一智,第二次我们尝试了敏捷开发。这次是要开发一个客户关系管理模块。我们不再要求一次性把所有功能都想好,而是把需求拆成一个个小功能点,每个功能点用一个“Sprint”(冲刺周期)来完成,一个周期就两周。比如第一个Sprint只做客户信息录入,第二个Sprint再加上搜索功能。每两周我们就能看到一个可以运行的小版本,当场测试、当场提意见。有个销售总监说:“这个客户跟进记录放的位置不对,应该放在联系人详情页里。”开发团队当场记下,下一周就改好了。整个过程就像吃火锅——想吃什么涮什么,随时加料,随时调整。

现在回头看,如果项目需求像盖楼一样明确、很少变动,瀑布模型确实合适,因为它计划性强、文档完整。但如果你的业务在不断变化、需求会随着市场调整,敏捷开发才是救命稻草。我常跟同行说:别怕选错流程,就怕你选了个流程却不知道它意味着什么。软件开发不是写代码,而是解决问题。