Lost in CatB :http://www.ituring.com.cn/article/9363
看了Lost in CatB.深有所感。軟件的數量在上升,軟件的質量在下降。對於軟件包的依賴性在增多但軟件的復用性在降低。
首先我們可以看看我們身邊發生的例子。我們組要做爬蟲,我們的首先任務是下載現有的爬蟲。不下不知道,一下嚇一跳。現有的爬蟲過於復雜,光引用的包就達到十幾個。而對面宿舍他們組是在一個已完成的項目上改編代碼。他們得到了那個項目的源碼。但是他們跟我們說他們的代碼要從頭開始重新做。原因是原先的代碼限制性太多,可擴展性太差,而要擴展需要在重新構建的底層的數據結構。也就是說從改編變成了重做。光我身邊的例子就大致如此了,跟不要說集市上的程序了。
那么為什么會產生上述原因呢?我將以我僅有不多的經驗來淺談一下產生的原因和引發的思索。
一、包為什么那么多?不同人有不同的需求,如果現有的某一個包無法達到需求,還要引用其他的包。而且很多包的功能過於單一,一個包遠遠不能滿足當今復雜的需求與更復雜的編碼。
再加上包的作者各不相同,實現的方式和理念也大相徑庭,所以又會發現包與包不能互通,沒准還要引入一個第三方包,把上述兩個包通過第三包統一接口,所以導致包的引用錯綜復雜。那么該怎么辦呢?這時候我覺得集市式的開發無法滿足這一點,只有教堂式的開發才能彌補。比如apache公司的包質量很高,雖然包也很多,但是井然有序,由於是一個公司開發的,也不存在接口問題,可謂典范。
二、為什么復用性這么差?對於收費的軟件來說,即使給你一定的代碼,也是經過加密的,想要復制粘貼絕沒那么容易。對於開源的軟件來說,一是開發者不夠專業,過於專注敏捷開發,而忽略文檔和架構的重要性(這也是我們的通病),往往架構邏輯上會出現一定問題,開發文檔也很難提供給其他開發人員。二是開發者投入的時間如果不夠充足,很難考慮拓展性的問題和版本維護的問題,自然復用性差。
至於關於彼得定律影響軟件開發的說法我並不能完全苟同。彼得定律:在一個等級制度中,每個職工趨向於上升到他所不能勝任的地位”。彼得指出,每一個職工由於在原有職位上工作成績表現好(勝任),就將被提升到更高一級職位;其后,如果繼續勝任則將進一步被提升,直至到達他所不能勝任的職位。由此導出的彼得推論是,“每一個職位最終都將被一個不能勝任其工作的職工所占據。
可以說每個人都有一個向往的卻不能勝任的地位。即使他最后上升到了他所不能勝任的這個地位。起碼它能夠勝任比這個地位低一個層次的地位。也就是他作為一個曾經的成功者來挑戰一個他還未能戰勝的敵人。這種挑戰早晚一天肯定會失敗(因為總有一個他不能勝任的地位),從而導致公司或相關機構利益受損。這種失敗似乎無法避免,但是對於軟件開發來說,這不能稱之為失敗。地位大於能力的失敗終會催生一個與此地位相符的人,從而使不能勝任的地位的層次被逐次推高,也就是技術的發展不斷前進。