談到系統開發,很多人都不反對它具有複雜性,至少不會認為它是很容易的一件事。然而,當聽到公共建設的系統失常的消息之後,人們似乎又會忘了系統開發存在的複雜性。我們經常會看到許多相關的評論,認為系統會發生錯誤是因為方法或是技術的問題,卻甚少探討有關系統開發的複雜性問題。
當然,系統發生錯誤的原因,也許真的很可能和方法或技術有關。但是否所謂的方法或是技術,就是一般對系統發生錯誤的評論中經常提到的方法或技術;不是開發者的技術觀念有問題,就是沒有遵照正確的流程及方法來做事?筆者覺得這樣的假設似乎把系統開發看的太容易了。
如果系統失敗的真相,真的是技術觀念、流程、或方法論的問題,那麼只要在系統開發過程中,加強這些因素就可以確保系統開發的成功。但從筆者系統開發的經驗顯示,這些因素雖然很重要,但它們並不是系統開發能得以成功的關鍵,而是要等到逐漸適應系統開發的複雜性之後,才能逐漸地改善增加系統成功的機會。
要認識系統開發的複雜性,這並不是一件很容易的事。不過,忽略它會讓我們和湊熱鬧的外行人一樣,從他人系統失敗的經驗中只能看得到表相;以為這只是犯了離譜的技術或方法論的錯誤。我們應該學習像內行人一樣,從系統失敗的教訓中看到成功的門道,了解到系統開發複雜性本質的真相;不天真地以為技術或方法論可以解決系統失敗,而是深入省思系統開發的複雜性。基於筆者過去對系統失常的觀察及體會,想以這篇文章從公共建設的系統失常看系統開發的複雜性。 閱讀全文

