通常,在完成了一件網頁設計後,設計師的無知都會顯露無遺而備受指責。他們把創建網頁程式碼的繁重工作都留給了程式設計師。這種現像不只出現在網路開發產業,在軟體及遊戲開發業也是如此。
殘酷的事實是:開發進度可能會因設計師而停滯不前。 為了追求最佳效率,設計師不僅需要描描畫畫,還需要能把它做出來!本文中,我想與讀者分享一些為什麼設計師需要學習編寫程式碼的理由。
有了一個最終產品將如何實現的明確印象,設計師將拿出更多實際可行的概念。作為開發過程中不可或缺的一份子,設計師肩負著確保他們的設計能夠順利轉移到網路媒體上,同時還要考慮其可用性,網頁易讀性和可實現性。對使用者友善的網站不僅有簡潔清晰的瀏覽順序邏輯,還提供使用者一切所需的資訊而不會顯得咄咄逼人或雜亂無章。想要知道一個 Web 版面是否可行的唯一方法就是親自去了解如何建立一個網頁。
在幾乎所有的設計與實現各自獨立的產品中,設計組和實現組從沒有滿足過對方的期望,尤其是那些無形的產品,比如網站,軟體和遊戲。這通常歸結於產品的期望和產品可行性的相互妥協,目前看來,這是難以完美統一的。解決之道是:設計師應該親身嘗試設計作品的實現,以避免溝通上的混淆,誤解與誤傳。
一個實踐中的設計不應是絕對的。我的意思是,設計應該是靈活友好的,能夠在修改以迎合系統技術限制的同時不扭曲其原有內涵。這些重複但必要的改變只能由原設計師來實現。一個設計師/開發者能夠比開發人員把設計重提到設計師手上進行改變更有效率。而且設計師和開發者之間——事實上經常如此——會產生摩擦。
我常常喜歡把軟體,網路或是遊戲開發想成是管弦樂,而設計師是作曲家,開發者是樂團的指揮家。想像二者是同一個人會怎麼樣?交響曲將會是令人驚嘆的,迷人的,純正的!不只是大師的神作,也是其本人親自指揮的!
設計師同時充當程式設計師的角色意味著設計和編碼的進度即使不是同時的也是連續的。結果就是開發週期的縮短──誰會不關心效率呢?
現代的設計師需要提升自身的能力以保持個人價值,有一套技能是遠遠不夠的,我們往往需要戴著不同的頭銜:設計師,前端開發者,文章作者和專案經理。
透過學習實現你自己的設計,而不是讓設計成為開發者手中的孤兒-你提升了自身價值。畢竟,在履歷中提到設計和編碼技能不會有壞處。相反,在這個金融危機時代的企業重組(參見:大規模裁員)和縮減開支的環境下,還能夠強調一個人的重要性而免於解僱。
然而,即使有這麼多的理由支持設計師學習編寫程式碼,這裡還是有反對的聲音。
引用 Lukas Mathis 的一篇有爭議性的文章「設計師不是程式設計師」(註1)
如果設計師實現自己的設計,他會受制於兩個不同的目標:程式碼的整潔和良好的使用者體驗。這兩個目標是互相矛盾的。如果你要實現你自己的設計,你必然會為了程式碼的品質而妥協,這是不利於互動設計的。
實現自己設計的設計師面臨著兩個問題:他們知道一個很棒的新思路會建立混亂的代碼,他們也知道如果改進用戶體驗,現有的代碼會被打亂。這兩者相互矛盾,因為使用者體驗都在於小的細節,而這些小細節最終毀於他們的不忍心使程式碼變得混亂。
這恰如其分的總結了「Web 開發純化者」們所採取的強硬立場。他們是守舊派,倡導在設計和開發之間劃清界線。顯然,設計師為人類創作,開發者為機器創作。 因此,使用者體驗設計師應該設計出最可行的使用者介面並讓開發者做出最可行的程式決策。雖然這有一定的道理,但當我研究一個使用者介面的時候,我從程式碼中尋找靈感的努力卻以失敗而告終。總之,在腦中有一個技術及可用性限制的正確觀念還是更有好處。
歸根結底,所開發專案的規模可能最終決定著設計師和開發者的角色。一個小型的應用可以由一個專案經理(註2)一手掌控,而一個大型的系統必然需要不同的專業人才!
註1 Mathis-Lukas——「Designers are not Programmers」——ignore the code
註2 Spolsky-Joel——描述了一個叫做「設計師兼程式設計師」的職位——「How to be a program manager」——Joel on Software
作者 John Urban 是加州大學的大二學生,主修電腦科學。
英文原文 http://sixrevisions.com/web_design/why-designers-should-learn-how-to-code/