为什么软件开发方法论不管用? - 开源中国社区
为什么软件开发方法论不管用?
腊八粥 2014年02月14日

为什么软件开发方法论不管用?

腊八粥 腊八粥 发布于2014年02月14日 收藏 55 评论 12

无论大小项目,大型团队还是我个人,陈腐的联邦机构还是牛逼的硅谷公司,我都工作过。我学习并使用过至少20种编程语言。我还经历过瀑布模型/预先设计模型(BDUF:big design up front),结构化编程,自顶向下,自下向顶,模块化设计,组件,敏捷,Scrum,极限,TDD,OOP,快速原型,RAD,还有我可能想不起来的其它方法。我不敢肯定它们都管用。

【EDIT:让我解释一下本文的目的。我认为它们本身不能提供一个可预期的或可复制的软件开发过程。我不认为使用一种方法论会使项目失败。大多数软件开发方法论试图使编程成为类似工程的过程,在那方面它们是不足的。

你该如何识别方法论管用?

一种方法论是否管用取决于条件:团队生产力,快乐,保持,遵从,可预言,有责任,沟通,每天代码行数,人月,代码质量,工件等。如果你用对了地方,每个方法论都管用。但是依照唯一的衡量方法就会出现问题,那就是按时、不超过预算地满足需求,我还没有看到任何方法论能够取得一致的结果。

我自己的经历有些轶事,但是它们也被我认识的每个程序员分享。这表明轶事是每个人都有的:软件开发方法论的严格学习并不管用,因为控制所有变数是不可能的。

做个思想上的实验:假定两组程序员小组,相同的需求、日程规划和预算,同样的环境,相同的语言和开发工具。一个小组使用瀑布模型/BDUF,另一个使用敏捷技巧。很明显这不是一个好的实验:个人技能和团队成员性格,彼此如何沟通,都将对方法论产生非常大的影响。

Alistair Cockburn 2003年的论文《软件开发中的人和方法论》指出,“人们的状态,因人不同,一个时刻与另一个时刻也不同,形成了团队行为和结果的第一位的驱动力。他们彼此相处如何,性格与工作分工是否匹配等因素,都对方法论产生着巨大的、与项目相关的约束。结果表明了通常人们的性格特点对方法论有一定影响。”

我们自己最大的敌人

当我在1970年开始编程时,软件开发稍稍通过项目经理、业务分析员和高级程序员等层级管理。我们没有选择语言和工具。我在公司里的一些大型的、复杂的项目就是这样做的。一些成功了,一些没有成功。现在让程序员选择方法论和工作方式,还有语言和工具比较普遍了。分析员不再出现在大多数程序员的经历里,项目经理已经被演变成“team lead”和“Scrum master”,没有管理授权,除了团队一直通过的仪式,并不真正控制什么。

严格的管理,像甘特图、日程规划和文档,被精简为“利益相关者”和“用户”,再被抽象为“用户故事(user stories,也有叫用例的。译者注)”。对于我来说,参与没有成熟监督机制的项目变得普遍了。令人惊奇的是,留下程序员自己,他们不会回归到冒失鬼的编程方式——他们采用或创造更为严格的方法论,被 比我在1980年经历的要多得多的仪式 所包围。事实上,今天的程序员对他们的方法论比他们认为的70年代COBOL shop更为教条和宗教徒式。现在我常常老一套地陷入1-2个开发人员的项目中,背负着太多的过程和“最佳实践”,而它们并没有产生多大价值。

一旦编程小组采用了一套方法论,不可避免地一些小组成员,或许只有一个人专横,就会要求严格地遵守,并转化成宗教徒。被动侵害的后果扼杀了比任何方法论或技术决定更快的效率。

有管用的吗?

我的个人经验,被Cockburn的论文和Frederick Brooks的《没有银弹》验证过,当团队关键人物分享共同愿景,Brooks称之为“概念完整性(conceptual integrity)”。这不会催生任何特定的方法论,就算缺乏类似于一个过程也会出现。团队每个人情投意合,事情就搞定了,我懂这种感受。我不理解的是,为什么 我在过去有BDUF和业务分析员的日子里 比 现在 感觉更强烈。

我认为程序员应该在倾听和协同工作上 比 仪式和工具上 投入更多的关心,我们应当对 过多的、号称能够使每个人神奇地提高效率的过程或方法论 保持怀疑。与其他人相比,或许社交技能对程序员太难了(我不确定这是真的),但是培养这些技能一定比尝试另一种开发方法论取得更多的回报。

原文地址:http://typicalprogrammer.com/why-dont-software-development-methodologies-work/

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:为什么软件开发方法论不管用?
分享
评论(12)
最新评论
0

引用来自“小潘pfl”的评论

加班是最有效的。 +1 项目成功不成功,关键看加班多少

shabi
0
目标不明确,细化原则不明确,什么方法论都是假的。不过这些都明确,很多方法论都是有效且必要的。编程包括两种,按目标(可以细分和对应到具体的功能实现),按想法。对于后者,方法论无法有效保障质量和交付效率。不过只是按想法来编程,本身就不是个工程化的行为,更多是“创造”。哈,shit和面包都算创造。
0
没有最好的理论方法 只有最强的团队
0

引用来自“Raphael_goh”的评论

引用来自“小潘pfl”的评论

加班是最有效的。 +1 项目成功不成功,关键看加班多少

项目成不成功有时还要看老板一句话。好不容易加班加点搞定了,结果老板来了一句不要了....

然后老板又说了一句,我再想想,一会想好了再告诉你。。。
0

引用来自“小潘pfl”的评论

加班是最有效的。 +1 项目成功不成功,关键看加班多少

项目成不成功有时还要看老板一句话。好不容易加班加点搞定了,结果老板来了一句不要了....
0
写的不错
0
是的工具跟框架都是次要的
0
中国有句话叫因地制宜,总纲
0
加班是最有效的。 +1 项目成功不成功,关键看加班多少
0
不错 人与人才是关键
0
加班是最有效的。
0
不完全肯定,也不能完全否定
顶部