`
chelsea
  • 浏览: 117845 次
  • 来自: ...
社区版块
存档分类
最新评论

卡尔.波普尔与敏捷开发

    博客分类:
 
阅读更多

 

卡尔.波普尔的理论能很好的解释目前的科学, 艺术, 政治, 社会等方面一般性的问题. 它对软件开发过程中一些显而易见的问题有着明确的答案. 比如, 我们都知道我们无法证明软件已经没有Bug, 用波普尔的话说就是: 科学理论都是假说, 爱因斯坦的竞争理论表明对牛顿理论的即使如海王星发现般严格的检验都不能确保其正确性, 即对白天鹅的一千次观察都不足以断言黑天鹅的不存在. 能否证伪是科学和非科学的分界线.

而敏捷是软件开发领域逐渐得到采用的理论和方法. 那敏捷这种具体领域的理论和实践是否能够与卡尔.波普尔一般性的哲学理论相契合呢?

若波普尔的理论是普适的, 能否指出敏捷的一些问题呢?

波普尔理论摘要:

<<卡尔.波普尔摘要: 科学的方法 >>

<<卡尔.波普尔摘要: 客观知识 >>

<<卡尔.波普尔摘要: 三个世界 >>

<<卡尔.波普尔摘要: 历史决定论与历史多元论 >>

<<卡尔.波普尔摘要: 民主与专制 >>

<<卡尔.波普尔摘要: 批评与理性主义, 怀疑主义, 以及启蒙运动 >>

<<卡尔.波普尔摘要: 宽容, 冲突, 以及多元论 >>

<<卡尔.波普尔摘要: 知识分子, 科学家, 哲学家的职业道德 >>

<<卡尔.波普尔摘要: 社会科学, 艺术, 及进化论 >>

 

1. 波普尔强调无知, 可错性, 和试错法. 这导致了XP"反馈"的价值观, 导致了迭代的实践(迭代不是敏捷独有的, 这说明迭代也是一种一般性的方法)

"""

诸神自始就未向我们昭示万物的秘密,

但随着时间的推移,

通过探索我们会学习并懂得更好的东西

"""

在解释反馈的价值观时, Kent Beck批评了"从一开始就选择正确的方法, 不是更容易吗"的想法:

  • 我们可能不知道"正确"的做法是什么

  • 今天正确的, 明天可能就是错误的

  • 今天正确的做法可能需要很长时间来完成, 环境变化会使你的方案失效, 在你完成它之前

关于试错与迭代的关系, 参考<<敏捷质疑: 迭代开发 >>

 

2. 波普尔认为我们应从问题开始, 然后提出一个初步的解决方案, 经过批评性讨论, 前进到下一个问题. 这导致了测试驱动的开发

"""

整个过程可由我称作四个一组的图解的简化的图解表示:P1→TT→CD→P2[问题1→尝试性理论→批评性讨论→问题2]

我们可以从某个问题P1开始——无论理论问题还是历史问题——接着做出尝试性解答——推测的或假设的解答,一种尝试性理论——把它提交按照证据进行的批评性讨论,如果可得到证据的话,结果出现新的问题P2。

因此,科学的概貌就是:

  1. 我们选择某个有趣的问题

  2. 我们提出一种大胆的理论作为尝试性解决办法

  3. 我们尽最大努力批评这种理论,这意味着我们试图驳倒它

  4. 如果成功地驳倒了它,那么我们就试图提出一种新的理论,我们又会对它进行批评

  5. 如此等等

这样,即使我们没有成功地提出一种令人满意的理论,也会了解到许多东西:会了解到关于这个问题的一些情况,我们将知道它的困难所在。

"""

我们必须从失败的测试开始, 这是我们要解决的问题. 完成初步的产品代码使其可通过测试, 即初步解决了这个问题; 然后尽力批评产品代码, 就是写另外的测试, 争取让其失败; 若失败, 则进一步编写产品代码, 如此循环

这是典型的 TDD 循环, 除了重构. 那么重构在哪里?

 

3. 波普尔对更好的理论或科学进步的追求, 导致了重构

"""

没有真理的标准, 但存在着科学进步的理性标准:

  1. 新的假定必须解释旧的假定成功解释的一切事物

  2. 必须至少避免旧的假定的一些错误, 即它在可能之处应能经得住旧的假定所不能经受的一些批判性检验

  3. 在可能之处, 它应当解释旧的假定不能解释或预言的事物

"""

这也是重构的标准:

  1. 重构必须保证不破坏原来的功能, 即新的假定必须解释旧的假定成功解释的一切事物

  2. 必须支持已经出现的一些原来代码无法支持的扩展性需求, 或者消除旧代码的一些可维护性方面的问题, 如重复代码等

  3. 在可能之处, 支持一些就要出现的原来代码无法支持的扩展性需求

在波普尔的P1→TT→CD→P2[问题1→尝试性理论→批评性讨论→问题2]循环中, 批评性讨论总是导致了更好理论, 也导致了TDD过程中对重构的必然需求

 

4. 波普尔反对大词, 反对晦涩难懂的表达, 崇尚简单性. 这符合XP的价值观, 甚至可以帮助修正人们对于XP"简单性"价值观的误解

"""

每 个知识分子都有一个很特殊的责任。他拥有学习的特权和机会。作为回报,他对于同胞(或对于社会)有责任尽可能简单、清楚、谦虚地描述他的研究结果。知识分 子所做的最糟的事情——主要罪过——是试图对同胞自命为伟大的预言家,给他们留下令人迷惑的哲学的印象。任何不能简单、清楚地讲话的人都应住口,继续下些 功夫,直至能这样做为止

我在上面(第1点)所说的主要罪过——受过不充分教育的人的傲慢——简而言之,就是夸夸其谈,佯装具有我们所不具有的智慧。它的诀窍是:同义反复和琐屑之 事再加上自相矛盾的胡言。另一个诀窃是:写下一些几乎无法理解的夸大的言词,不时添加一些琐屑之事。这会受到高兴地在如此“深奥”的书中发现自己原也具有 这样的思想的读者的喜爱。(现在任何人都能看到皇帝的新装正在流行!)

我 认为,每个知识分子的责任就是意识到他所处的优越地位。他有责任尽可能把文章写得简单明白,而且尽可能用规范的形式写;永远不要忘记那些困扰着人类而且要 求用新的大胆而耐心思考去处理的重大问题,不要忘记那种承认自己所知甚少的苏格拉底式的谦虚。与处理琐碎问题的琐碎哲学家不同,我认为哲学的主要任务就是 批判性地沉思宇宙和我们在宇宙中的地位,这也包括我们的认识能力以及我们行善和作恶的能力

叔 本华最明智的意见之一(虽然这可能并不是他最有独创性的意见)是:“在一切艺术中……简单性是必不可少的……;至少忽视它始终是危险的。”我想,他指的是 对一种简单性的追求,而我们尤其可在伟大作曲家的主题中看到这种简单性。例如,我们从《后宫诱逃》可以看出,最后的结果可能是复杂的,但莫扎特仍然可以骄 傲地回答约瑟夫皇帝:其中没有一个多余的音符

"""

基本上可以认为波普尔反对华丽的过度设计

有一种观点, 认为简单就是用最直白的方式实现功能, 然而如果是这样, Kent Beck又怎会把简单看作XP价值观中最具智力色彩的一个? 这里波普尔给出了相似的观点: 最后的结果可能是复杂的,但莫扎特仍然可以骄傲地回答约瑟夫皇帝:其中没有一个多余的音符

 

5. 波普尔对启蒙运动的赞赏, 对理性批评的支持, 对宽容的要求, 也与XP对勇气, 尊重等价值观的推崇一致

"""

敢于显示智慧!要敢于运用自己的理智. 这就是启蒙运动的口号

你可能是正确的,我可能是错误的;即使我们的批评性讨论不能使我们明确决定谁是正确的,我们仍会希望在讨论后对事情看得更清楚。我们都可以互相学习,只要我们不忘记,真正重要的不是谁正确,而是我们更接近真理

宽容是认识到我们人的可错性的必然结果:人孰无过,我们一直在犯错误。因此让我们互相谅解对方的愚行。这是天赋人权的第一个原则

"""

 

6. 波普尔对文化冲突的喜好, 对多元论的执着, 最大程度的支持着代码集体所有与结对编程

"""

他们将欢迎与来自另一个世界、另一个框架的伙伴进行的讨论,因为它给予他们一个机会,去发现他们迄今尚未感觉到的枷锁,打碎它们,从而超越自己。当然,冲破牢房不是常规的事情:它只能是批评的努力——创造性努力——的结果. 非常明显,这种自我解放的、冲破此刻的牢房的理想,又会成为一个框架或一个牢房的一部分——换言之,我们永远不会绝对自由。但是我们可以拓宽我们的牢房,至少能抛开甘受束缚的人的狭隘性

当两种或更多的不同文化相接触时,人们认识到他们长久以来认为理所当然的风俗习惯不是“当然的”,不是唯一可能的风俗习惯,既不是上帝所颁布的,也不是人 性的一部分。他们发现他们的文化是人及其历史的杰作。从而它开辟了充满种种新的可能性的世界:它打开了窗子,放进了新鲜空气。这是一种社会学的规律,解释 了许多东西,它在希腊历史中无疑起了重要的作用

这个猜想是,这种冲突未必总是导致流血的战斗和破坏性战争,而可能也是富有成效的和促进生命的发展的原因。它甚至会导致像希腊文化那样的无可匹敌的文化的发展

"""

 

7. 波普尔理性批评的态度, 又指导着如何处理结对编程中常见的问题

"""

如果相碰撞的文化之一认为自己优越于所有文化,那么文化碰撞就会失去其一些价值,如果另一种文化也这样认为,则尤其如此:这破坏了文化碰撞的主要价值,因为文化碰撞的最大价值在于它能引起批评态度的事实 。尤其是,如果其中一方相信了自己不如对方,那么,如信仰主义者和存在主义者所常常描述的那样,向另一方学习的批评态度就会被一种盲目接受、盲目地跳入新的魔圈或者皈依所取代。

你可能是正确的,我可能是错误的;即使我们的批评性讨论不能使我们明确决定谁是正确的,我们仍会希望在讨论后对事情看得更清楚。我们都可以互相学习,只要我们不忘记,真正重要的不是谁正确,而是我们更接近真理

严肃的批评性讨论总是困难的。总会夹杂进一些人类的非理性的成分。理性的即批评性的讨论的许多参加者都感到,要摆脱人们在辩论会中染上的习气特别困难,他 们必须了解,在一场辩论中获胜是微不足道的,只有澄清人们的问题,只有促进人们对自己的观点或其对手的观点的进一步理解,哪怕是最轻微的澄清和最微小的促 进,才是巨大的成功。如果你在一场讨论中获胜,但它未能帮助你至少稍微改变或澄清你的思想,那么你应把它视为纯粹的损失

"""

 

8. 波普尔关于客观知识的理论, 也可以从另一个角度指导我们正确的对待结对过程中的意见不一致

"""

用语言表达我们的思想,或者更好一些,把它们写下来,是大不相同的。因为这样它们就成为可批评的了. 在这之前,它们是我们自身的一部分。我们也许有怀疑。但是我们不能以批评一个用语言系统阐述的命题,或者更好一些,写下的报告那样的方式批评它们。因此,“知识”至少有一种重要的意义——“提交批评的用语言系统阐述的理论”的意义。这就是我所称的“客观意义上的知识”

知识本质上在于体外人工制品,或产物,或制度

"""

当我们说出我们的观点, 或者更进一步, 写出代码来表达我们的观点, 让它们成为客观知识, 有助于我们把批评聚焦在问题上, 而不是针对人

结对是最直接的批评, 这也暗含着任何一方不是在教导, 而是在接受批评

 

9. 这里有一个有趣的推论. 批评是波普尔理论的核心手段, 实际上意味着沟通是XP的核心价值观, 结对是XP的核心实践

比如, 波普尔认为: "客观性, 不能依靠科学家本人的客观性来保证, 必须依靠批评:可被描述为科学的客观性的事物完全建立在批评传统之上,这种批评传统总是不顾任何反对,使人们能批评占统治地位的教条。换言之,科学的客观 性不是个别科学家的事情,而是相互批评的社会结果,科学家中友好与敌对的分工的社会结果,他们的合作的社会结果,也是他们的竞争的社会结果"

那么XP中对类似"简单性"之类的要求, 也必须建立在批评的基础上, 不能依靠单个开发者的决定, 必须至少是结对, 轮换结对来完成, 代码必须集体所有

 

10. 波普尔对框架神话的反对, 指导者如何处理采用敏捷开发过程中价值观不一致的问题, 敏捷与其它软件开发过程理论的碰撞问题

组织内部价值观一致, 事情自然顺利的多. 对于大部分情况下的组织价值观不一致, 波普尔有另一个角度的观点: 顺利的不意味着是富有成效的, 最终取得一致意见也不意味着是富有成效的; 参与者学到的越多, 越富有成效. 这意味着: 向他们提出的有趣的问题和困难的问题越多, 吸引他们思考的新的答案越多, 他们的观点越是发生动摇, 以及讨论之后他们越是能对事物有不同看法. 简言之, 他们的知识视野越是开阔

结论就是波普尔认为在不同的框架间进行讨论, 是困难的, 但不是不可能的

波普尔主张批评的多元论, 即为了寻求真理,应允许所有理论--多多益善——与所有其他理论竞争。这种竞争在于对理论的理性讨论,在于对它们的批评性淘汰。讨论应当是理性的--这意 味着它应当关注相竞争的理论的真理:在批评性讨论过程中似乎更接近真理的理论是更好的理论,更好的理论取代了较差的理论。因此正是真理的问题利害攸关

因此, 哪怕你最终全面接受了敏捷, 在此之前, 应有一个理性讨论和实践的阶段, 而不是迷信. 这也意味着, 在推行敏捷的时候, 哪怕你全面否定了之前的软件开发理论, 在此之前, 也应该有一个理性讨论的阶段, 而不是盲从. 顺利和一致是好事, 但可能错过发现更好理论的机会

 

手里有波普尔这个锤子, 到处都是钉子. 另请参阅其它牵强附会之作:

<<敏捷外传 >>

<<姑苏慕容与软件开发 >>

<<独孤九剑与软件开发 >>

分享到:
评论

相关推荐

    波普尔的科学发展模式.pdf

    波普尔的科学发展模式是由20世纪著名的科学哲学家卡尔·波普尔提出的,这个模式主要阐述了科学发展的过程和动力。波普尔的核心观点是,科学进步不是通过归纳法从经验中得出普遍规律,而是通过大胆的假设、批判性的...

    猜想与反驳精选.doc

    1. 波普尔的科学哲学思想:卡尔·波普尔是20世纪著名的哲学家,他的核心观点是“猜测与反驳”。他认为科学理论的形成不是基于归纳法和观察证明,而是大胆的猜测。科学理论不可能被绝对证明,但可以通过尝试证伪来...

    量子力学诠释与波普尔哲学的“三个世界”.docx

    卡尔·波普尔提出的“三个世界”理论将世界分为三个层次:物质世界(世界1)、精神感知世界(世界2)以及知识世界(世界3)。这篇文章尝试通过量子力学的视角来重新审视波普尔的观点,并提出了一种新的解读。 **...

    索罗斯的试错与波普尔的证伪.doc.pdf

    索罗斯的试错与波普尔的证伪.doc

    [波普尔始终在探寻,为何一些科学理论好像导]波普尔的证伪理论.docx

    波普尔的证伪理论是科学哲学中的一个重要概念,由卡尔·波普尔提出。这一理论关注的是科学理论的验证方式,尤其是如何区分科学理论与非科学理论。波普尔认为,一个理论如果不能被潜在的观测结果所反驳,即不能被证明...

    经济学方法论中的波普尔证伪主义.docx

    这一理论由卡尔·波普尔提出,是对早期的证实主义的反驳。证实主义认为科学理论可以通过经验观察得到证实,而波普尔则主张科学理论不能被绝对证实,只能被证伪。他认为科学理论的真正价值在于它们能够被潜在的反例所...

    波普尔的科学哲学.ppt

    波普尔的科学哲学,波普尔的科学哲学课件,波普尔的科学哲学PPT

    关于波普尔的“三个世界”理论对构建图书馆哲学的论文-波普尔的哲学精髓DOC任意编辑版.docx

    卡尔·波普尔(Karl Popper)是一位著名的奥地利犹太裔英国籍哲学家,以其在科学哲学领域的贡献而闻名。波普尔提出了著名的“三个世界”理论,这一理论试图将宇宙划分成三个不同的层次: 1. **世界1**:物理客体或...

    波普尔的科学发展模式归类.pdf

    最后,波普尔的“可证伪性”标准用于区分科学与非科学,虽然在理论层面有其新颖之处,但在实际应用中却存在问题。按照这一标准,已被证伪的理论如地心说可能被认为是科学的,而数学、逻辑学和马克思主义等则可能被...

    表达思想经典语录名句精选.doc

    12. 失败与成功:卡尔·波普尔提醒我们不要轻易接受失败,因为可能离真理仅一步之遥。 13. 知识与预见:孔德提出知识是为了预见未来,预见是为了行使权力,强调知识的价值。 14. 个性与共性:莱布尼茨认为没有完全...

    波普尔反对历史唯物主义基本原理.pdf

    波普尔反对历史唯物主义基本原理.pdf

    [波普尔,伪证,史学]波普尔伪证主义史学之下的历史科学性.pdf

    [波普尔,伪证,史学]波普尔伪证主义史学之下的历史科学性.pdf

    [波普尔,伪证,史学]波普尔伪证主义史学之下的历史科学性.docx

    综上所述,波普尔的伪证主义史学揭示了历史科学性与主观解释之间的复杂关系,强调了历史的科学化过程伴随着对历史事件深层次理解和解释的主观介入。历史学家在追求客观事实的同时,必须承认解释的主观性,并在此基础...

    波普尔历史非决定论思想产生影响探析论文.doc

    波普尔历史非决定论思想产生影响探析论文.doc

    分析哲学考试答案.docx

    11. 卡尔·波普尔的《科学发现的逻辑》批评了逻辑主义,指出它在科学知识的界限上的问题。 12. 说话的意义包含交际行为、具有意义和指称的行为,但不包括“心理行为”。 13. 达米特从弗雷格的语言哲学出发进行研究...

    论波普尔渐进的社会工程与新能源汽车在我国的发展之间的关系.pdf

    本文探讨了波普尔渐进的社会工程理念与我国新能源汽车发展之间的关系。波普尔的渐进工程理论反对乌托邦式的整体主义改革,主张在现有基础上进行局部改良和试错,以推动科学技术和社会的稳步进步。新能源汽车,尤其是...

    vfp学生成绩管理系统英文资料和中文译文

    【标题与描述分析】 标题和描述中提到的是“vfp学生成绩管理系统”的英文资料及中文译文,但没有提供具体的系统实现细节或技术内容。"vfp"通常指的是Visual FoxPro,一种用于数据库管理和应用程序开发的编程环境。...

    平行哲学与智能科学:从莱布尼茨的Monad到区块链之DAO.pdf

    围绕卡尔•波普尔的三个交织世界的现实观,提出面向描述知识、预测知识和引导知识的平行哲学理念,使关于智能的哲学之研究对象从Being、Becoming到Believing,并讨论结合区块链DAO技术与范畴数学理论的可能实施途径...

    论文研究-知识进化算法.pdf

    根据卡尔·波普尔的知识进化理论,建立了知识进化算法的基本框架,详细地阐述了该算法的原理和具体实施方案。知识进化算法主要由一个知识空间和多个群体空间组成,群体空间根据知识的指导通过选择操作不断地提出新的...

    人机交互与智能.doc

    - 卡尔·波普尔的科学哲学强调证伪主义,认为科学是通过试错和反驳的过程推进的,而非简单的归纳和证实。 2. 科学与技术的起源: - 人工智能的科学基础可追溯至查尔斯·巴贝奇的机械计算机,这是计算时代的开端;...

Global site tag (gtag.js) - Google Analytics