posts - 56, comments - 77, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          卡爾.波普爾與敏捷開發(fā)

          Posted on 2009-09-28 23:05 切爾斯基 閱讀(2275) 評論(0)  編輯  收藏
          HTML clipboard

          卡爾.波普爾的理論能很好的解釋目前的科學(xué), 藝術(shù), 政治, 社會等方面一般性的問題. 它對軟件開發(fā)過程中一些顯而易見的問題有著明確的答案. 比如, 我們都知道我們無法證明軟件已經(jīng)沒有Bug, 用波普爾的話說就是: 科學(xué)理論都是假說, 愛因斯坦的競爭理論表明對牛頓理論的即使如海王星發(fā)現(xiàn)般嚴格的檢驗都不能確保其正確性, 即對白天鵝的一千次觀察都不足以斷言黑天鵝的不存在. 能否證偽是科學(xué)和非科學(xué)的分界線.

          而敏捷是軟件開發(fā)領(lǐng)域逐漸得到采用的理論和方法. 那敏捷這種具體領(lǐng)域的理論和實踐是否能夠與卡爾.波普爾一般性的哲學(xué)理論相契合呢?

          若波普爾的理論是普適的, 能否指出敏捷的一些問題呢?

          波普爾理論摘要:

          <<卡爾.波普爾摘要: 科學(xué)的方法>>
          <<卡爾.波普爾摘要: 客觀知識>>
          <<卡爾.波普爾摘要: 三個世界>>
          <<卡爾.波普爾摘要: 歷史決定論與歷史多元論>>
          <<卡爾.波普爾摘要: 民主與專制>>
          <<卡爾.波普爾摘要: 批評與理性主義, 懷疑主義, 以及啟蒙運動>>
          <<卡爾.波普爾摘要: 寬容, 沖突, 以及多元論>>
          <<卡爾.波普爾摘要: 知識分子, 科學(xué)家, 哲學(xué)家的職業(yè)道德>>
          <<卡爾.波普爾摘要: 社會科學(xué), 藝術(shù), 及進化論>>

          1. 波普爾強調(diào)無知, 可錯性, 和試錯法. 這導(dǎo)致了XP"反饋"的價值觀, 導(dǎo)致了迭代的實踐(迭代不是敏捷獨有的, 這說明迭代也是一種一般性的方法)

          """

          諸神自始就未向我們昭示萬物的秘密,

          但隨著時間的推移,

          通過探索我們會學(xué)習(xí)并懂得更好的東西

          """

          在解釋反饋的價值觀時, Kent Beck批評了"從一開始就選擇正確的方法, 不是更容易嗎"的想法:

          • 我們可能不知道"正確"的做法是什么

          • 今天正確的, 明天可能就是錯誤的

          • 今天正確的做法可能需要很長時間來完成, 環(huán)境變化會使你的方案失效, 在你完成它之前

          關(guān)于試錯與迭代的關(guān)系, 參考<<敏捷質(zhì)疑: 迭代開發(fā)>>

          2. 波普爾認為我們應(yīng)從問題開始, 然后提出一個初步的解決方案, 經(jīng)過批評性討論, 前進到下一個問題. 這導(dǎo)致了測試驅(qū)動的開發(fā)

          """

          整個過程可由我稱作四個一組的圖解的簡化的圖解表示:P1→TT→CD→P2[問題1→嘗試性理論→批評性討論→問題2]

          我們可以從某個問題P1開始——無論理論問題還是歷史問題——接著做出嘗試性解答——推測的或假設(shè)的解答,一種嘗試性理論——把它提交按照證據(jù)進行的批評性討論,如果可得到證據(jù)的話,結(jié)果出現(xiàn)新的問題P2。

          因此,科學(xué)的概貌就是:

          1. 我們選擇某個有趣的問題

          2. 我們提出一種大膽的理論作為嘗試性解決辦法

          3. 我們盡最大努力批評這種理論,這意味著我們試圖駁倒它

          4. 如果成功地駁倒了它,那么我們就試圖提出一種新的理論,我們又會對它進行批評

          5. 如此等等

          這樣,即使我們沒有成功地提出一種令人滿意的理論,也會了解到許多東西:會了解到關(guān)于這個問題的一些情況,我們將知道它的困難所在。

          """

          我們必須從失敗的測試開始, 這是我們要解決的問題. 完成初步的產(chǎn)品代碼使其可通過測試, 即初步解決了這個問題; 然后盡力批評產(chǎn)品代碼, 就是寫另外的測試, 爭取讓其失敗; 若失敗, 則進一步編寫產(chǎn)品代碼, 如此循環(huán)

          這是典型的 TDD 循環(huán), 除了重構(gòu). 那么重構(gòu)在哪里?

          3. 波普爾對更好的理論或科學(xué)進步的追求, 導(dǎo)致了重構(gòu)

          """

          沒有真理的標準, 但存在著科學(xué)進步的理性標準:

          1. 新的假定必須解釋舊的假定成功解釋的一切事物

          2. 必須至少避免舊的假定的一些錯誤, 即它在可能之處應(yīng)能經(jīng)得住舊的假定所不能經(jīng)受的一些批判性檢驗

          3. 在可能之處, 它應(yīng)當(dāng)解釋舊的假定不能解釋或預(yù)言的事物

          """

          這也是重構(gòu)的標準:

          1. 重構(gòu)必須保證不破壞原來的功能, 即新的假定必須解釋舊的假定成功解釋的一切事物

          2. 必須支持已經(jīng)出現(xiàn)的一些原來代碼無法支持的擴展性需求, 或者消除舊代碼的一些可維護性方面的問題, 如重復(fù)代碼等

          3. 在可能之處, 支持一些就要出現(xiàn)的原來代碼無法支持的擴展性需求

          在波普爾的P1→TT→CD→P2[問題1→嘗試性理論→批評性討論→問題2]循環(huán)中, 批評性討論總是導(dǎo)致了更好理論, 也導(dǎo)致了TDD過程中對重構(gòu)的必然需求

          4. 波普爾反對大詞, 反對晦澀難懂的表達, 崇尚簡單性. 這符合XP的價值觀, 甚至可以幫助修正人們對于XP"簡單性"價值觀的誤解

          """

          每個知識分子都有一個很特殊的責(zé)任。他擁有學(xué)習(xí)的特權(quán)和機會。作為回報,他對于同胞(或?qū)τ谏鐣┯胸?zé)任盡可能簡單、清楚、謙虛地描述他的研究結(jié)果。知識分子所做的最糟的事情——主要罪過——是試圖對同胞自命為偉大的預(yù)言家,給他們留下令人迷惑的哲學(xué)的印象。任何不能簡單、清楚地講話的人都應(yīng)住口,繼續(xù)下些功夫,直至能這樣做為止

          我在上面(第1點)所說的主要罪過——受過不充分教育的人的傲慢——簡而言之,就是夸夸其談,佯裝具有我們所不具有的智慧。它的訣竅是:同義反復(fù)和瑣屑之事再加上自相矛盾的胡言。另一個訣竊是:寫下一些幾乎無法理解的夸大的言詞,不時添加一些瑣屑之事。這會受到高興地在如此“深奧”的書中發(fā)現(xiàn)自己原也具有這樣的思想的讀者的喜愛。(現(xiàn)在任何人都能看到皇帝的新裝正在流行!)

          我認為,每個知識分子的責(zé)任就是意識到他所處的優(yōu)越地位。他有責(zé)任盡可能把文章寫得簡單明白,而且盡可能用規(guī)范的形式寫;永遠不要忘記那些困擾著人類而且要求用新的大膽而耐心思考去處理的重大問題,不要忘記那種承認自己所知甚少的蘇格拉底式的謙虛。與處理瑣碎問題的瑣碎哲學(xué)家不同,我認為哲學(xué)的主要任務(wù)就是批判性地沉思宇宙和我們在宇宙中的地位,這也包括我們的認識能力以及我們行善和作惡的能力

          叔本華最明智的意見之一(雖然這可能并不是他最有獨創(chuàng)性的意見)是:“在一切藝術(shù)中……簡單性是必不可少的……;至少忽視它始終是危險的。”我想,他指的是對一種簡單性的追求,而我們尤其可在偉大作曲家的主題中看到這種簡單性。例如,我們從《后宮誘逃》可以看出,最后的結(jié)果可能是復(fù)雜的,但莫扎特仍然可以驕傲地回答約瑟夫皇帝:其中沒有一個多余的音符

          """

          基本上可以認為波普爾反對華麗的過度設(shè)計

          有一種觀點, 認為簡單就是用最直白的方式實現(xiàn)功能, 然而如果是這樣, Kent Beck又怎會把簡單看作XP價值觀中最具智力色彩的一個? 這里波普爾給出了相似的觀點: 最后的結(jié)果可能是復(fù)雜的,但莫扎特仍然可以驕傲地回答約瑟夫皇帝:其中沒有一個多余的音符

          5. 波普爾對啟蒙運動的贊賞, 對理性批評的支持, 對寬容的要求, 也與XP對勇氣, 尊重等價值觀的推崇一致

          """

          敢于顯示智慧!要敢于運用自己的理智. 這就是啟蒙運動的口號

          你可能是正確的,我可能是錯誤的;即使我們的批評性討論不能使我們明確決定誰是正確的,我們?nèi)詴M谟懻摵髮κ虑榭吹酶宄N覀兌伎梢曰ハ鄬W(xué)習(xí),只要我們不忘記,真正重要的不是誰正確,而是我們更接近真理

          寬容是認識到我們?nèi)说目慑e性的必然結(jié)果:人孰無過,我們一直在犯錯誤。因此讓我們互相諒解對方的愚行。這是天賦人權(quán)的第一個原則

          """

          6. 波普爾對文化沖突的喜好, 對多元論的執(zhí)著, 最大程度的支持著代碼集體所有與結(jié)對編程

          """

          他們將歡迎與來自另一個世界、另一個框架的伙伴進行的討論,因為它給予他們一個機會,去發(fā)現(xiàn)他們迄今尚未感覺到的枷鎖,打碎它們,從而超越自己。當(dāng)然,沖破牢房不是常規(guī)的事情:它只能是批評的努力——創(chuàng)造性努力——的結(jié)果. 非常明顯,這種自我解放的、沖破此刻的牢房的理想,又會成為一個框架或一個牢房的一部分——換言之,我們永遠不會絕對自由。但是我們可以拓寬我們的牢房,至少能拋開甘受束縛的人的狹隘性

          當(dāng)兩種或更多的不同文化相接觸時,人們認識到他們長久以來認為理所當(dāng)然的風(fēng)俗習(xí)慣不是“當(dāng)然的”,不是唯一可能的風(fēng)俗習(xí)慣,既不是上帝所頒布的,也不是人性的一部分。他們發(fā)現(xiàn)他們的文化是人及其歷史的杰作。從而它開辟了充滿種種新的可能性的世界:它打開了窗子,放進了新鮮空氣。這是一種社會學(xué)的規(guī)律,解釋了許多東西,它在希臘歷史中無疑起了重要的作用

          這個猜想是,這種沖突未必總是導(dǎo)致流血的戰(zhàn)斗和破壞性戰(zhàn)爭,而可能也是富有成效的和促進生命的發(fā)展的原因。它甚至?xí)?dǎo)致像希臘文化那樣的無可匹敵的文化的發(fā)展

          """

          7. 波普爾理性批評的態(tài)度, 又指導(dǎo)著如何處理結(jié)對編程中常見的問題

          """

          如果相碰撞的文化之一認為自己優(yōu)越于所有文化,那么文化碰撞就會失去其一些價值,如果另一種文化也這樣認為,則尤其如此:這破壞了文化碰撞的主要價值,因為文化碰撞的最大價值在于它能引起批評態(tài)度的事實 。尤其是,如果其中一方相信了自己不如對方,那么,如信仰主義者和存在主義者所常常描述的那樣,向另一方學(xué)習(xí)的批評態(tài)度就會被一種盲目接受、盲目地跳入新的魔圈或者皈依所取代。

          你可能是正確的,我可能是錯誤的;即使我們的批評性討論不能使我們明確決定誰是正確的,我們?nèi)詴M谟懻摵髮κ虑榭吹酶宄N覀兌伎梢曰ハ鄬W(xué)習(xí),只要我們不忘記,真正重要的不是誰正確,而是我們更接近真理

          嚴肅的批評性討論總是困難的。總會夾雜進一些人類的非理性的成分。理性的即批評性的討論的許多參加者都感到,要擺脫人們在辯論會中染上的習(xí)氣特別困難,他們必須了解,在一場辯論中獲勝是微不足道的,只有澄清人們的問題,只有促進人們對自己的觀點或其對手的觀點的進一步理解,哪怕是最輕微的澄清和最微小的促進,才是巨大的成功。如果你在一場討論中獲勝,但它未能幫助你至少稍微改變或澄清你的思想,那么你應(yīng)把它視為純粹的損失

          """

          8. 波普爾關(guān)于客觀知識的理論, 也可以從另一個角度指導(dǎo)我們正確的對待結(jié)對過程中的意見不一致

          """

          用語言表達我們的思想,或者更好一些,把它們寫下來,是大不相同的。因為這樣它們就成為可批評的了. 在這之前,它們是我們自身的一部分。我們也許有懷疑。但是我們不能以批評一個用語言系統(tǒng)闡述的命題,或者更好一些,寫下的報告那樣的方式批評它們。因此,“知識”至少有一種重要的意義——“提交批評的用語言系統(tǒng)闡述的理論”的意義。這就是我所稱的“客觀意義上的知識”

          知識本質(zhì)上在于體外人工制品,或產(chǎn)物,或制度

          """

          當(dāng)我們說出我們的觀點, 或者更進一步, 寫出代碼來表達我們的觀點, 讓它們成為客觀知識, 有助于我們把批評聚焦在問題上, 而不是針對人

          結(jié)對是最直接的批評, 這也暗含著任何一方不是在教導(dǎo), 而是在接受批評

          9. 這里有一個有趣的推論. 批評是波普爾理論的核心手段, 實際上意味著溝通是XP的核心價值觀, 結(jié)對是XP的核心實踐

          比如, 波普爾認為: "客觀性, 不能依靠科學(xué)家本人的客觀性來保證, 必須依靠批評:可被描述為科學(xué)的客觀性的事物完全建立在批評傳統(tǒng)之上,這種批評傳統(tǒng)總是不顧任何反對,使人們能批評占統(tǒng)治地位的教條。換言之,科學(xué)的客觀性不是個別科學(xué)家的事情,而是相互批評的社會結(jié)果,科學(xué)家中友好與敵對的分工的社會結(jié)果,他們的合作的社會結(jié)果,也是他們的競爭的社會結(jié)果"

          那么XP中對類似"簡單性"之類的要求, 也必須建立在批評的基礎(chǔ)上, 不能依靠單個開發(fā)者的決定, 必須至少是結(jié)對, 輪換結(jié)對來完成, 代碼必須集體所有

          10. 波普爾對框架神話的反對, 指導(dǎo)者如何處理采用敏捷開發(fā)過程中價值觀不一致的問題, 敏捷與其它軟件開發(fā)過程理論的碰撞問題

          組織內(nèi)部價值觀一致, 事情自然順利的多. 對于大部分情況下的組織價值觀不一致, 波普爾有另一個角度的觀點: 順利的不意味著是富有成效的, 最終取得一致意見也不意味著是富有成效的; 參與者學(xué)到的越多, 越富有成效. 這意味著: 向他們提出的有趣的問題和困難的問題越多, 吸引他們思考的新的答案越多, 他們的觀點越是發(fā)生動搖, 以及討論之后他們越是能對事物有不同看法. 簡言之, 他們的知識視野越是開闊

          結(jié)論就是波普爾認為在不同的框架間進行討論, 是困難的, 但不是不可能的

          波普爾主張批評的多元論, 即為了尋求真理,應(yīng)允許所有理論--多多益善——與所有其他理論競爭。這種競爭在于對理論的理性討論,在于對它們的批評性淘汰。討論應(yīng)當(dāng)是理性的--這意味著它應(yīng)當(dāng)關(guān)注相競爭的理論的真理:在批評性討論過程中似乎更接近真理的理論是更好的理論,更好的理論取代了較差的理論。因此正是真理的問題利害攸關(guān)

          因此, 哪怕你最終全面接受了敏捷, 在此之前, 應(yīng)有一個理性討論和實踐的階段, 而不是迷信. 這也意味著, 在推行敏捷的時候, 哪怕你全面否定了之前的軟件開發(fā)理論, 在此之前, 也應(yīng)該有一個理性討論的階段, 而不是盲從. 順利和一致是好事, 但可能錯過發(fā)現(xiàn)更好理論的機會

          手里有波普爾這個錘子, 到處都是釘子. 另請參閱其它牽強附會之作:

          <<敏捷外傳>>

          <<姑蘇慕容與軟件開發(fā)>>

          <<獨孤九劍與軟件開發(fā)>>


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 綦江县| 东乡族自治县| 元阳县| 剑河县| 荔浦县| 兴安县| 萝北县| 射洪县| 正蓝旗| 肥东县| 英山县| 西宁市| 河东区| 赤峰市| 芜湖市| 无为县| 新沂市| 景德镇市| 加查县| 遵义市| 霍州市| 酉阳| 汝城县| 尤溪县| SHOW| 文水县| 遂溪县| 介休市| 阿瓦提县| 花垣县| 宜兰县| 辽中县| 湘潭县| 伽师县| 饶河县| 乌拉特后旗| 越西县| 旬阳县| 彭州市| 元阳县| 永寿县|