The Introduction of The Second-System Effect



這是人月神話:軟體專案管理之道(20週年紀念版)的第五章:,這一章有個開場白:『加一點點,加一點點,最後變成一大坨。』,隔頁有個註解說這是『聚沙成塔,滴水成河』,但是我看到『坨』並沒有很好的感覺說,所以用來比做聚沙成塔之類的諺語好像也並不怎麼洽當,好了,廢話少說了!

前面幾章一直在討論架構與實作的問題,這一章還是繼續在這個方面討論,主題就是『有什麼規範可以避免架構設計師的創造熱情過了頭?』,從兩個方面來規範,第一,與實作人員互動的規範,這裡有一個比喻,就是蓋房子的建築師與成包商的關係跟架構設計師與實作人員的關係很類似,我就直接引用書中的要點,作為要讓系統成功的關鍵:

  • 記住實作人員有發揮創意完成實作的責任,所以架構設計師只能建議,不能命令。
    在建議時,永遠只提出一個能夠符合規格的實作方式,同時也接受其他能夠達到目標的方案。
    默默地,私底下提出建議。
    準備為提出的建議付出喪失信任的代價。

第二,就是自律–第二系統效應,也就是本章的主題,這裡討論到架構設計師設計的第一個系統跟第二個系統兩者之間,差異最大的就是,第一個系統總是創意非常節制的,而第二個系統則是創意最多,但也最危險的一個系統,喔,我終於瞭解了,如果照生小孩來看,老大看起來總是最能完成交代生兒育女的第一責任,如果繼續有了老二,我總感覺老二,真的很危險,像我妹就有點這樣的跡象,至於老三、老四…,我想就已經不是那麼重要了,所以過度設計的現象會發生,這時我們會看到一大坨的噁心感覺吧!

這邊用很多失敗的例子來討論,IBM 704IBM 709,還有一堆設計1410-7010磁碟作業系統、Stretch作業系統、Project Mercury即時系統、給7090用的IBSYS作業系統的人員共同開發這個第二系統-OS/360,這個系統被舉了幾個例子,讓我們可以印象深刻地覺得這是第二系統,從連結編輯器(linkage editor)、TESTRAN除錯工具、不需重新編譯的整批除錯的落伍概念以及排程器(scheduler)。

說了這麼多的歷史案例,你可以像聽魏徵建議那樣的採用作者的建議嗎?一個源自於教會很早就有的理念-(self-discipline)是很重要的,而這又得讓我們學習避免貪慾,懂得節制,看來不是這麼簡單,在這裡你『可以提醒自己避免設計出不相干的功能,或是做出違反原先假設與目的的功能』。想想永生的目的,我們就可以設計出我們簡單的生活方式,這一句真的是今天所學到的一個重要原則啊!

好了,對架構設計師給個規範,『為每一項小功能賦予價值(value):功能x要值回票價的話,所耗用的記憶體至少要小於m位元組,且耗用的時間至少要小於n微秒。』

另一個給專案經理的規範就是『堅持採用具有至少兩個以上的系統設計經驗的架構設計老手,對一些特別的誘惑保持清醒,也可以藉由詢問自己一些適當的問題,來確保正確的概念與目標以貫徹到設計的細節之中。』

終於讓我可以在一般的書籍中體會到學習永生的理念,原來系統也是要這樣做,確認目的,避免大而無當的功能,方為高招!

Print Friendly, PDF & Email

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料