我常這樣認為:簡單是藝術、複雜是工程,兩者並不會互相排斥而應該是合作無間。極簡的iPhone顛覆了手機的使用行為,背後卻是複雜的觸控原理、輕薄的機身跟一機成形的機構,這些複雜的工程才能成就出iPhone帶給大眾的豐富使用者體驗。在我來看,藝術才能帶給人們直接的感官或使用體驗上的刺激,而工程是上述光鮮外表背後默默苦幹的功臣。

 

在電腦科學中極簡的背後,一定有著複雜的工程跟學理存在。舉幾個例子來說好了:

l          我們在java中常見的System.out.println(),此一函式不管你輸入整數、字元、字串、浮點數,都可以隨意的輸出,對外界而言只要記得一個語法,而不需依照不同的資料型態就要背不同的語法,這其實就是一種簡單化的藝術,而這個藝術的背後主要的工程學理就是利用了overloading的技術,藉以達到多個函式能藉由不同的參數型態或數量來達到共用相同的函式名稱,而大大簡化了使用者需要背誦的程式語法之困擾。

l          O.O.的世界中常聽到的多型,主要就是透過對父類別的介面撰寫邏輯控制,再藉由dynamic binding來達到:執行期間才動態抽換所需呼叫的函式為何,如此可以免除邏輯程式散落在各個實體類別的窘境,也使得程式碼日後的擴充跟維護性大為提供。就我來看多型的設計對programmer而言就是一種藝術使程式日後的擴充跟維護性大幅提昇,對設計師而言一定覺得非常迷人,當然這種設計藝術背後卻有不少的辛苦工程的執行:1.藉由介面來操控執行期間對應的實體物件的撰寫技巧、2.需要inheritanceoverridingupcasting、甚至如果在C++還需要使用virtual function等效果來輔助、3.最後還需要將原本compile time的函式繫結延後到執行期間才決定。Look!工程浩大吧哈~~

l          在演算法的設計中,常發現很多函式的架構都一樣,就只有型態的處理不同而已,舉利來說光是一個傳回最小值,如果有整數就要寫一個函式、有浮點數又要寫一個函式,明明架構都一樣卻要花功能寫這麼多次,為簡化撰寫的程式跟日後讓框架可以快速的調整而不需針對同一架構而維護多種函式,所以開始產生了generic(泛型)template(樣版)等概念出現。泛型跟樣版的出現提供了相同框架的多個函式一個極簡的解決方案,使得函式的定義只需一次,可以依據動態時間所填入的參數型態來自動更換樣版的型別,達到更高層次的抽象化定義。同樣的,泛型的概念對programmer而言又是一個簡單化的設計藝術但背後在compilerruntime environment都也需多背後的機制需要配套,這也就是複雜的工程所在。

 

藝術與工程缺一不可,在現今的IT產業中,已經不是追求自動化的年代了,更需要的是使用者體驗,其中簡單化是關鍵,而如何設計出符合需求的極簡介面則是一門藝術,我想這也是為什麼蘋果迷會那麼死忠的原因吧!但純粹只強調簡單化的藝術不夠背後一定要有複雜的工程跟技藝在背後撐著,否則一下就會被對手模仿了。從前一陣子的新聞就有一個活生生的例子,對使用者而言觸控是一個比按鍵更直觀的使用行為,我們只在乎最後的使用模式好不好用,對背後的技術一概不理,但廠商要自己將背後的技術搞定,甚至築起專利的高牆,例如蘋果拿到了多點觸控的專利,相信專利的背後一定有許多複雜的工程跟學理存在。從這個例子很清楚的點出來現在的IT產業一定是藝術與工程兼顧,而不是各走各的,當發現觸控是下一代的潮流,則複雜的工程將開始啟動,接著極簡的設計藝術將隨之而來,一搭一唱下也使的production by apple~~變成不可抗拒的魅力!

 

藝術才吸引人~工程是苦力!我們試著跳脫IT產業,從其他面向盡可能提供使用者一個比較易懂的論述。以高速公路而言,使用者真正在乎的是『可以用比較快的時間抵達目的地』,這個更簡易的到達路徑才是他想要的,而背後有多少辛酸的工程,對使用者而言將不感興趣。在這邊我不是在貶低工程的價值,而是在行銷的市場中,不該把工程面的東西拿出來面對消費者,找出他們真正在乎的點來訴說,這才是正確的方向。

 

切記:簡單是藝術、複雜是工程。對外請端出你的藝術讓人讚嘆,對內請默默實踐你的複雜工程而不必宣揚。

arrow
arrow
    全站熱搜

    劉逸 發表在 痞客邦 留言(2) 人氣()