By 高煥堂 一、猛虎細嗅著薔薇 我一向主張軟件人員不要太偏向用戶,不要沉迷于需求之中。否則像戀愛中的人兒,一直想去問清楚對方愛不愛他,既不浪漫又沒效果。許多人就因而批評我對需求視而不見,其實這個批評是挺貼切的,「視而不見」也有其正面的意義。舉世知名建筑學家路康(Louis Khan)喜歡用“wink at”這個字,它也是視而不見的意思,其蘊含有「我在意,但我心照不宣」的意思,也如同猛虎細嗅著薔薇一般,用心呵護它(即需求)、心疼它,細細品味其完整之美。 二、有情世界與無情世界 路康的建筑之道是: ◆ 先將有情世界抽離開來,就分成有情世界與無情世界了。 ◆ 然后求教于無情世界的物性(此時對有情世界視而不見),再融合有情世界的人為欲念,成就一項杰作。 將之對應到軟件產業上,用戶需求屬于有情世界,而系統本身是偏向無情世界。則軟件開發之道是: ◆ 先將有情世界的需求抽離開來。 ◆ 然后求教于無情世界的軟件和諧關系(此時對需求視而不見),再融合有情世界的用戶欲為,成就一項杰出的軟件。 在金剛經里也提到:若見諸相非相,即見如來。其中的“非相”也含有視而不見之意。當我們觀察一棵樹,看到茂密的樹葉,非相(對樹葉視而不見)之后,即能見到樹干。同樣地,用戶需求是相,非相(對需求視而不見)之后,即能見到系統架構,然后再以美好架構支撐有情的用戶需求,融合成為杰出軟件,這就是新潮的「以架構為中心」(architecture-centric)軟件開發方法。例如,有個情境如下: ◆ 需求:七夕情人節快到了,需要建一座橋梁(即系統)給情人約會之用。 ◆ 視而不見:對人們“約會”的需求細節視而不見。 ◆ 求教于無情世界:專注于橋的形與本質,發揮美學想象力。 ◆ 發現未知的需求:除了人所需的一般橋梁之外,更需要優先建造「喜鵲橋」給牛郎和織女相會。 ◆ 調整項目(項目)管理:改變項目管理的優先次序,如何找到喜鵲? 如何搭成一條喜鵲橋? 這些跟原先從橋墩建起的工作程序及驗收計劃完全不一樣了。 因之,對需求視而不見只是過程,它讓人們真心善待需求,始能成就杰出的軟件。 三、視而不見目標,用心掌握全局 無論是體能運動或智能運動(如下棋),大家都知道唯有保持「平常心」,才能將潛能充分發揮出來。視而不見目標(即保持平常心),專注本身的潛能發揮,并兼顧全局,如此更容易達成目標。君不見,在荒野上的小獅子,肚子餓了就到處追捕兔子,愈追兔子肚子愈餓,兔子的聲音也愈來愈遠了。后來獅子媽媽就教牠:「肚子餓要躲起來,假裝睡大覺,對兔子視而不見。就會聽到兔子的聲音愈來愈近了,全局盡在掌控中,目標就在眼前。」軟件需求是善變的目標,唯有從全局著手才能竟其功;欲掌握全局,則視而不見目標,可能是一條快捷之路。 四、暗室里抓黑貓 –從問題開始,忘了問題 –反思(假設)、聯想(關系)、醞釀(新視角) –讓解決方法浮現出來 于此,我們來聽聽一位杰出設計師 保羅.蘭德(Paul Rand)的說法。他是當今美國乃至全球,最杰出的logo設計師、思想家及設計教育家。前蘋果公司CEO喬伯斯贊譽他為「史上最偉大的平面設計師。」 設計理念源自包浩斯倡導的現代主義美學,所設計的IBM商標無人不識,蔚為經典。針對設計和創意過程,他說明如下: 「華勒斯(Graham Wallas)是個絕頂聰明的人,他在<>(Art of Thought, 1926)這本書里,發明了一套如何構思想法的見解。先調查問題的所有面向,做出粗略或精細的的概要,然后忘了那個問題,總之把它拋到腦后就對了。這是思考過程的第一階段,稱為準備期(Preparation)。」 「第二階段是醞釀期(Incubation)。把問題忘掉,讓它蘊釀。讓它在你心里慢慢熬煮。這可不是我發明的。這是某個非常聰明的家伙,他發現事情就是這樣運作的。我知道他說的是對的,因為我就是這樣想事情的。假使我要做某件事,我會先發出各種疑問,然后把他們拋到腦后,隔一個禮拜或隔個一天再回來想,然后就會有些念頭出現。所以,蘊釀期非常重要,忘個一星期,或忘個一天,或隨便多久。你給它時間,你就能做出決定。」 「第三階段是豁朗期(Illumination),問題整個浮現。你知道,你等了一個禮拜,然后突然之間,靈光一閃。你有了想法。這時,你要立刻把想法記下來,看看它是否符合你可能采取的行動。等你全部設想完畢,你要仔細觀察,進行評估。評估它可不可行? 大家會不會接受? 或你滿不滿意? 這就是設計的過程,或說,創意的過程。從問題開始,忘了問題,讓問題自己浮現或讓解決方法自己浮現,然后重新加以評估。這就是你們未來一直要做的事。」 五、結語 許多軟件人員不太用心對待需求;經常如餓虎撲羊般切和解需求,好像以為把一朵薔薇分解成一堆花瓣,然后詳細紀錄之,就能產出需求分析文檔了。就如美國福特汽車創辦人 亨利.福特(Henry Ford)曾說: 「如果我完全聽信用戶之言,我一定只會做出一匹更快的馬給他們。」 (If I’d listened to customers, I’d have given them a faster horse.) 需求是限制,當我們細心阿護它,就能蘊育出更多創意。像谷歌(Google)公司的基本思維是: 「創意與限制心心相印。」 (Creativity loves constraint.) 限制蘊育創意,創意滿足限制,創意突破限制,實現完美設計。 |