Posted on 2005-12-28 23:15
canonical 閱讀(991)
評論(0) 編輯 收藏 所屬分類:
雜感
敏捷(Agile)開發(fā)的靈魂是演化(evolution),其具體的過程表現(xiàn)為迭代(iteration),迭代的每一步就是重構(gòu)
(refactor),而單元測試(unit test)與持續(xù)集成(continuous
integration)模擬了程序生存的環(huán)境(約束),是merciless
refactoring的技術(shù)保障。從數(shù)學(xué)上我們知道迭代總有個收斂問題。一些重型方法將變化(無論是正方向還是反方向的)等價于風(fēng)險,而傾向于消除開發(fā)
中的不確定性,其中的迭代是趨于迅速收斂的。敏捷的迭代是開放式的,強調(diào)擁抱變化。敏捷編程排斥過度設(shè)計,除了過度設(shè)計會增加成本之外,另一個原因就是過
度設(shè)計會阻礙重構(gòu),阻礙變化。敏捷的目標(biāo)不是僵化的穩(wěn)定性而是靈活的適應(yīng)性。當(dāng)然敏捷迭代本身并不能保證系統(tǒng)持久的適應(yīng)性,即使是自然界中的迭代和演化,
失敗的案例也是比比皆是。大量的生物物種在經(jīng)歷了歷史的輝煌之后最終仍然難免被歲月所埋葬。
在哲學(xué)上,一個悖論式說法是有存在于無中,或者說簡單才能更復(fù)雜。杯子是空的,所以能包容萬物。現(xiàn)在什么都沒做,將來才能根據(jù)需要決定如何去做。所謂魚與
熊掌不可兼得,一旦做出了選擇,可能意味著必須放棄將來進行其他選擇的機會。簡單的目的不僅僅是為了最快的完成當(dāng)前的任務(wù),而且要為將來保留變化的可能。
過分強調(diào)目的性,我想是違背了演化的本質(zhì)。高手過招,最忌把招數(shù)用老。我們所要做的是盡量推遲決定的時刻,并切實的保證自己隨時擁有選擇的權(quán)利。
多樣性是在演化中生存的關(guān)鍵。但多樣性不是后天的。生物學(xué)的實驗證實,物種的變異并不是環(huán)境變化后發(fā)生的,而是始終存在著并隱藏著,環(huán)境僅僅起了檢選和倍
增的作用。適應(yīng)性的系統(tǒng)總要允許一定的灰色地帶,有時do something for nothing.