先说一下结论吧:现行的软件工程方法,无论是瀑布还是敏捷,都无法真正提高软件行业的生产力。
为什么?
因为现行的软件工程方法都是企图用一种思想方式来提高软件的质量。
说到底。不管这个思想再好。再漂亮,他只不过是一种方式,一种方法论。
但是这些美好的思想约束的对象是谁那?
是人。
是一个个活生生的人。
而人有一个重要的特点就是,人的行为是不可靠的。
如果人是可靠的,那就不会有墨菲定律了。
软件工程的众多方法企图用一些可靠的方法论来约束不可靠的人。
这种想法本身就只是一种美好的愿望,仅此而已。
一个老司机在开车,前方50米是一个路口,绿灯在倒计时,还有6秒。
问题一:你猜他会刹车吗?
问题二:为什么这个事情是不确定的而导致我要问你他会不会刹车?
why?
问题三:一脚有门冲过去而导致的车祸概率是多少?
你觉得我在谈老司机。不,我在谈软件开发者。
这样的软件老司机比比皆是。
你觉得怎么能规范这些老司机的行为那?靠《中华人民共和国道路交通安全法》吗?
如果人人都能遵循道路安全法,那车祸率不能说归零吧。也得只剩一点点了。
但是不幸的是 2011年,全国共接报涉及人员伤 亡的道路交通事故210812起,共造成 62387人死亡。
人们渴望代码的可靠性与写代码的人的不可靠性之间本身就是一个矛盾。这种原生性的矛盾不以人的主观意志为转移。
只有接受了这个客观矛盾的存在。才能找到软件工程的真正解决。否则,一切都是枉然。