如果有人为您提供有关软件开发实践的未经验证的陈述,您是否回答“需要引用”?[关闭]


14

最近,我参加了Greg Wilson(软件木工首席科学家)的演讲。从摘要:

关于软件开发实践的主张应基于证据的想法对于软件开发人员来说仍然陌生,但这终于开始改变:任何声称特定工具或实践使软件开发更快,更便宜或更可靠的学者现在都在改变。希望通过某种经验研究来支持这种说法。

总体而言,这次演讲非常有益,使我对自己的发展方式进行了深入思考。特别是,我现在发现自己正在寻找引用来支持很多陈述。以前,我养成了简单地重复提供的事实的习惯,也许以后会记下一些心理上的注意事项。

坦率地说,我很容易受骗

这是从讲座中获得的一个例子:

“如果超过25%的代码需要重构,则重写起来会更快”。

听起来合理,但这是真的吗?研究在哪里支持呢?所有语言都适用吗?等等。

好的,这很有可能将其推向极致,并且除非您自己是从第一原理中得出的,否则任何人都不相信任何东西。那就是疯狂(或者也许是数学;-))。但是,如果有人向您提出以下声明:“嘿,通过[即时选择语言]执行此操作,如果您倾向于接受它,还是要索取经证明的证据?

如果是后者(我希望是),那么

  1. 您将在哪里找到这些证据?
  2. 你有多严格?

简而言之,如果有人为您提供未经验证的陈述,您会回答“需要引用”吗?


2
在科学以外的哪些领域中,人们需要经验证据吗?根据我的观察,并没有我想要的那么多。
David Thornley,2010年

1
对近票有何评论?在这种情况下,“过于本地化”和“不是一个真正的问题”并不是很明显。
Inaimathi 2010年

1
是的,我也想知道近距离投票背后的原因。
罗伯特·哈维

@Robert感谢您的编辑。反射引起的炎症少得多。
加里·罗

1
好问题。我看到威尔逊教授去年在CUSEC上发表演讲,也受到他不得不说的话的极大影响。最好的部分是,当一个学生挑战他以引用自己的主张为由而提出的主张时,他做到了不遗余力。
马修(Matthew)

Answers:


3

这些陈述的问题在于,即使您有支持该主张的经验证据,也很难确定导致该证据的研究是否适用于您的当前情况。

该行业中的几乎所有事物都有警告,或有几个警告,因此一个地方的每项改进都有可能成为其他地方的损害。

战down中的人们通过经验了解差异,并且通常没有资金/时间/资源来尝试通过科学研究来证明这一点。

试图通过科学研究证明这一点的人们显然有资源专门用于此类研究,因此很有可能向您出售某些东西,因此我想说,您应该更加严格地将自己的个人经验应用到任何声称对得到实证研究的支持。

如果有人告诉您“如果需要重构的代码超过2%,则可以更快地重写它”,那么您就会知道,与有人告诉您“只有超过98%的代码需要重构,它才是错误的”更快地重写它”。实际数字在哪里取决于您在做什么以及当前代码与理想代码有多远。

在某个特定点之后,进行核重构更容易的想法在许多情况下显然是正确的,但是实际百分比更多地是您需要(团队)自己的经验和当前状况考虑的一个例子。


+1可对示例语句进行全面分析。您是否真的认为所有科学研究都有商业角度必须加以利用?(请原谅我的天真,但我对此真的感到很好奇)
Gary Rowe 2010年

@加里:万事万物都没有,但要从外部确定研究的偏见是非常困难的。令人怀疑的是,当没有商定涵盖整个情况的度量标准时
法案

8
如果有人为您提供有关软件开发实践的未经验证的陈述,您是否回答“需要引用”?

不,我在这里发布,看看是否有任何赞誉。社会证明总比没有证据好!


2
使用此模型可能会有所帮助,但是我对一篇论文的想法感到震惊,因为它引用了developer.SE作为源。
Inaimathi 2010年

@Inaimathi:它至少和维基百科一样可靠,如果不是这样的话!
史蒂文·A·洛

+1寻求证据-始终是好的建议。在您相信之前有多少票?;-)
Gary Rowe 2010年

1
@加里:所以十点。在这个网站上,二十岁。在元,百-除非它涉及独角兽和华夫饼,在这种情况下,它必须是真实的
史蒂芬答洛韦

爱独角兽推荐-必须让我成为其中一位
Gary Rowe 2010年

4

许多开发人员根据与代码一起工作的经验以及该代码所服务的客户的时刻决策。

当一个类或方法因错误修复而变得支离破碎并且客户更改请求变得无法维护时,开发人员有时会决定重写它而不是重构,因为他认为这样可以长期节省时间和精力,因为生成的代码将具有更高的质量。

人力资源部门将这种经验情报称为“人力资本”。这是使经验丰富的开发人员变得有价值的原因之一,也是优秀公司为维护其员工的寿命而努力的原因之一。

要求经验丰富的开发人员提出一项研究和经验数据来证明他们的技术是有效的,这似乎不公平甚至不切实际。经验不是那样的。相反,经验是一种“感觉”。在重构世界中,我们通常称其为“气味”。

最终,诸如“如果需要重构超过25%的代码,则可以更快地重写它”之类的语句在所有情况下都无法证明是可行的,因此[需要引用]语句实际上是一种通知教条式程序员的方法。试图将他的观点强加于他人,这并不总是“他的方式或高速公路”。


啊,良好的旧人力资本和人力资源,那些妙妙的成语词组促进了各地工人的持续非人性化……
Aaronaught 2010年

@Aaronaught:一个概念的执行有时可能会缺乏用来描述它的崇高词汇。这就是为什么持怀疑态度的人有时要求证据的原因。
罗伯特·哈维

缺少这些特定概念的执行不是一件好事吗?
亚伦诺特,2010年

+1很好地利用了“教条式”防御教条式程序员的做法-非常有用
Gary Rowe 2010年

4

我认为只要尝试一下就不会知道。即使有证据支持陈述,也总是有可能将事实歪曲以使您受益。话虽这么说,您不应该尝试所有影响互联网的新事物。做出最好的判断。请记住,如果某事听起来好得令人难以置信,那可能就是事实。总是问自己为什么需要采取某些措施?你有什么收获?从业务前景上讲有意义吗?除了信仰之外,从不盲目。


+1询问“为什么需要采用某种东西”。有时候从领先优势退一步是一件好事。
加里·罗

我发现,开发人员经常陷入对次优事物的困扰,而不去分析它,也不了解它如何使他们受益和阻碍。我见过这样的情况,组织在Asp.Net Webforms上采用Asp.Net MVC之类的东西,但不采用TDD。
Carlosfocker 2010年

3

讲座中的示例是一种启发式,经验法则,仅此而已。这应该是显而易见的。

启发式方法与其他任何方法一样:它们受特定上下文的约束,并依赖于许多未陈述的假设,并且它们的用途可能非常不确定。首先,要找到有用的决定要像制定它们一样。

这是否意味着他们没有价值?我完全不会这么说。

启发式方法是我们可以用来解决NP完全问题的方法之一,并且在许多方面,软件工程本身就是NP完全问题。


好点。=)
巴勃罗(Pablo

1

这取决于。:)当某人的陈述与重复,反思和个人验证的经历相矛盾时,那么是的,我希望看到某种研究的参考。另一方面,如果有人回响了您曾经看过并生活过很多次的想法,则不会引起太多反应(但这并不意味着这个想法是绝对可靠的)。

例如,《代码完成》一书中引用了每一章的许多研究内容来阐明自己的观点,有时甚至涉及看似很小的事情(例如缩进和间隔或可变名称长度)。我回想起一些(较年轻的)开发人员,他们向我介绍了本书,认为这些细节和证据水平很愚蠢。但是几个月后,有了更多的生产编码经验,并经过了几番代码审查,一些相同的开发人员诚实地承认,是的,即使缩进中的空格数量也很重要。好的评论很重要。封装很重要。等等等

另一方面,当供应商声称某些新IDE的生产率提高了50%时,我的第一反应是bull $%^&!


1
这取决于,但即使代码完整的示例也取决于您的情况。例如:如果您有一个解析格式器,并且diff工具忽略了空格,那么缩进参数将变得非常琐碎
Bill

1
“代码完成”示例为+1(同一作者史蒂夫·麦康奈尔的“快速开发”也是如此)。
加里·罗

@Bill有趣的是,随着技术的改进,需要证明立即消失的问题。我想知道这是否减少了我们要求证据的影响?
加里·罗

1
@gary我不认为这(一般意义上)是对变化的改进。完整的代码示例肯定在特定的时间点引用了特定的工具集,因此它们两者都是,但是“何时重构”类型与情况的关系远比与技术有关。考虑一下车辆与数据处理解决方案中的安全关键软件。安全系统的测试要求将会更高,因此重构点在获得净收益之前总是会更高。
比尔2010年

1

难道这不取决于很多无形变量(无法科学测量的变量)吗?

我认为,他们正在谈论一种测量情绪的经验方法。Spock甚至无法完成的事情。=)


1
+1有趣。抛开(故意的)毛骨悚然的例子,如果有人对您说,Rails是一个比SpringMVC更好的框架,您将如何确定其有效性?
加里·罗

正如本杰明·格雷厄姆(Benjamin Graham)在其关于投资的经典著作(“安全性分析”)中指出的那样,(投资)工具应从两个不同但孤独的方面进行衡量:定性(无形,情感)和定量(实数,数学) ,计算,逻辑)。
巴勃罗(Pablo)2010年

定量是您通过科学方法测量的内容。定性是通过自己的直觉来衡量的。如果对分析没有情感,就无法判断情感与情感。
巴勃罗(Pablo)2010年

至少可以说,当我们谈论观点和观点之间的差异时,我们无法就合理,科学和切实的方法来衡量摘要达成共识。
巴勃罗(Pablo)2010年

我的回答是,我们只能衡量技术方面,而不能衡量抽象思想/观点。另外,我并不是说听起来像个屁股。这些帖子并不意味着某种愚蠢的回应。
巴勃罗(Pablo)2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.