從作曲到資訊系統開發

在三年前,我曾經對作曲很有興趣。我嘗試著用我作曲時最在意的三點原則套用在我所專業的系統開發上。希望帶給大家一點啟發。今天我談的是作曲和系統開發,但我相信這三點原則可以套用在各種產品和創作上。

我所抱持的三個創作信念是 listeners needs(聽眾的需求 ); theory(理論 ),和 style(風格 )。

       先從作曲開始說

從 listeners needs說起。作曲當然要以自己的靈感為主,然而曲子是要讓人聽的。作曲的時候必須時時刻刻把 ”如何讓聽眾喜歡 ”這種態度放在心裡,才能寫出膾炙人口的曲子。再說 Theoretical,音樂隨著人類一起成長。到今天,已經有音律學;合音學等等足夠音 樂系教授花一輩子研究的學問。固然音樂不是邏輯 (其實我一直覺得音樂和數學很近 ),完全依循理論會失去創作的意義,不過這些學問象徵的是各式各樣音樂創作的經驗結晶;這些是幾百年來作曲的前輩所指引的一方向。最後是 Style,大家都不能否認這是作曲的精隨,曲子就是為了表達自己的情感而存在的。失去了風格的曲子像失去靈魂的人一樣。比較關心音樂的人,或許都有一聽到某一首新歌就猜得到是誰的作品的能力。這就是我所謂的 sytle。這三個信念雖然互相矛盾;也互相牽制。但我相信這三個信念是缺一不可。

再來談系統開發

所謂 listener’s needs 在這裡或許翻譯成 user requirement會比較恰當吧。這個信念我大概不必多說。資訊系統是為了使用者而存在的,開發系統不考慮使用者的需求是註定會失敗的。再說 theory,現在我們年輕的軟體工程師像崇尚名牌的人一樣喜歡追逐新的軟體工具 (像 oracle一出新版就急著想換 )而不去考慮軟體進步的理論基礎。例如善用模組 (module)觀念來開發的系統絕對比用 .net來開發卻完全不用物件導向 (Object oriented)觀念的系統來得好。軟體從電子學獨立出來已經三十年有餘,目前已經有數不完專門領域來引導軟體工程師開發一個成功的網頁。和音樂不同的,是軟體的領域並還沒有完全成熟。是否用 thin client?要幾個 tiers? Centralized or distributed?要哪一種 design pattern?這些都還在學術期刊上面討論著,而一篇一篇的論文也給系統開發的工程師好多的啟發。最後,來談 style。我想即使是再大規模的公司的系統開發者都只想要把系統做完就謝天了,沒有人會想要讓系統有 style。事實上我相信資訊系統也是一種創作。系統開發者在像建築工人忙著?磚塊的同時不經意的表現出屬於他們的風格。有些系統開發者特別在意 message passing時候的 loading;有的喜歡把副程式切得很細。有些系統 database的 loading特別的重;有些系統的 error handling做得特別好。這些系統的不同,一部份是因為環境需要;也有部份是開發工程師的專業,但我一直相信,在這些因素以外的差異,就是所謂的開發人員的風格。為了依循系統的風格;有時候會有不同的因應問題或是新需求的手段和對策。而這些手段和對策有時候聰明的讓人慧心一笑。這就是創作;這就是 style。

和作曲一樣,這三個信念會互相牽制和矛盾;但如何再這三者之間做最適當的調配,就是系統開發的藝術了。當然,系統開發最重要的當然還是成本。不過這套不上我今天的主題;而且和作曲作比較的話這比較難凹。所以就先跳過了。

我相信不只是作曲和資訊系統開發,我相信很多其他創作;產品;和事業都很值得從這三個信念來思考。