围绕软件开发实践和方法论,总有很多教条式的口水仗。阶段式 (phase-gate)方法能够有效管理软件开发过程的风险,还是说只是风险管理中的花哨噱头?
TDD真的能够促生出高品质软件?结对编程是代码评审的有效替代抑或只是增加了商议沟通代价?
我想说,虽然缺之证据判断这些论调的Z处,但有两条常用的法则能够帮助我们选择好的实践,同时,提升我们所提供软件的价值:划小开发周期以及提升反馈效率。
世界是动态的,是未知的,要想让即将到来的事情都井然有序,那就需要周密的计划来应对。
而这,就是方法论的方向——让整个软件开发过程变得可控。
为什么软件开发方法论让我觉得如此糟糕?
它的出发点是好的,有迹可循的工作模式能够帮助工作人员有条不紊地完成作业。
但实际上一切并非都如你所愿,这就导致了方法论方法论,最终越陷越深,脱离实际。
所以我们不能,也不可能制定出完美的计划,完美的方法。
我们需要的是能够应对变化的团队,能够高效学习的团队。
最终,还是要回到依靠工程师的个人能力上。