設(shè)計師/產(chǎn)品經(jīng)理:“他會在萬眾矚目中出現(xiàn)迫摔, 身披金甲圣衣轴踱, 腳踏七彩祥云埃元,咔咔咔把我的設(shè)計全部實(shí)現(xiàn)涝涤!”
引子
偶然跟設(shè)計師同事聊天,談到他們眼中的程序員應(yīng)該是什么樣的岛杀。
大叔:“好的程序員不應(yīng)該三心二意阔拳,上來就學(xué)很多不同的語言,應(yīng)該精通一門語言类嗤!”
小九:“那設(shè)計師會在Photoshop糊肠,Pixelmater,Sketch遗锣,balsamiq等等這些工具中货裹,只精通一樣,而不去學(xué)習(xí)別的嗎黄伊?”
大叔:“這不一樣泪酱,編程語言怎么能跟這些工具相提并論,比如Sketch比較適合快速實(shí)現(xiàn)一些Hi-Fi的高保真原型,Photoshop善于處理位圖墓阀,balsamiq用于畫一些Low-Fi的線框圖毡惜,這些工具都是在不同情境和需求下使用的∷勾椋”
小九:“我倒覺得這跟編程語言一樣一樣的经伙。當(dāng)需要寫后臺服務(wù)端的時候,我們用Java勿锅;要快速寫工具腳本的時候用Ruby帕膜;要寫頁面交互的時候用Javascript;要寫底層高性能代碼的時候溢十,用C或者C++垮刹。每個語言都有自己的特點(diǎn),也有自己的使用場景张弛。設(shè)計師應(yīng)該不會說只要精通Photoshop或Sketch荒典,其它工具就不用學(xué)了吧。怎么能為了一滴水吞鸭,而放棄整片海洋寺董!每一種設(shè)計工具都有自己獨(dú)特的魅力,在學(xué)習(xí)中都會體會到不一樣的樂趣 ”
語言/工具 vs 特性
熟悉PS的都知道刻剥,Photoshop中有濾鏡遮咖、蒙版、圖層等一系列特性造虏,我們也往往是先學(xué)習(xí)工具御吞,順便就學(xué)會了這些特性。然而漓藕,其實(shí)這些特性比工具本身具有更高的復(fù)用性∑桥海現(xiàn)在幾乎任何一款繪圖軟件,都會帶有圖層功能撵术。
程序員也一樣,往往是從語言開始话瞧,來認(rèn)識語言的特性的嫩与。比如我們學(xué)習(xí)了C++,順便知道了Template交排;從Java中知道了Exception的處理方法划滋,從Javascript中知道了閉包,從Scala中知道了Monad等等埃篓。這些特性处坪、思想在程序設(shè)計中的應(yīng)用往往要比語言本身更重要。
除了語言,其實(shí)還有一些別的同窘,也是程序員和設(shè)計師可以類比的玄帕。
思維方式
在程序世界里,有3種比較經(jīng)典的編程范式:面向過程想邦,面向?qū)ο蠛秃瘮?shù)式裤纹。
- 面向過程的編程范式,簡單的講就是把一個大的任務(wù)拆分成N多個步驟丧没,只要一步步從上到下的實(shí)現(xiàn)即可鹰椒。
- 面向?qū)ο?/strong>則是把所有程序中的概念都想成是一個個具體的對象,每個對象有自己的屬性呕童、行為漆际,每個對象可以完成自己應(yīng)該完成的一些事情。通過對象間的彼此互動夺饲,來完成復(fù)雜的功能奸汇。
- 函數(shù)式則是更側(cè)重于用數(shù)學(xué)函數(shù)的方式來思考,把現(xiàn)實(shí)中的復(fù)雜問題轉(zhuǎn)換成各種不同類型的函數(shù)钞支,通過數(shù)學(xué)的思維方式來解決問題茫蛹。
這是程序員的三種不同的思維方式,而映射到設(shè)計師烁挟,可以理解成平面設(shè)計師習(xí)慣的平面思維和工業(yè)設(shè)計師習(xí)慣的立體思維婴洼。
模式
程序世界中的設(shè)計模式,是前人大量經(jīng)驗(yàn)的總結(jié)撼嗓,是在實(shí)戰(zhàn)中形成的一些在面對具有一定共性的問題時所采用的最佳實(shí)踐柬采。
在產(chǎn)品設(shè)計中,也同樣有一些模式可以遵守且警,比如現(xiàn)在的提醒功能粉捻,往往會使用內(nèi)含數(shù)字的小紅點(diǎn)模式。
再比如說消息通知功能斑芜,往往是采用消息中心的模式 肩刃。
再比如說一些常用的組件,如輸入的文本框杏头,在交互上共有諸如auto suggestion之類的模式盈包。
有了這些模式之后,不管是在做程序設(shè)計還是界面設(shè)計醇王,都可以有效的降低設(shè)計的復(fù)雜度呢燥。
Clean Code -|- Human Interface Guidelines
大部分情況下,我們不是一個人工作寓娩,而是一個團(tuán)隊工作叛氨。
作為一個程序員呼渣,我可能會閱讀、修改團(tuán)隊內(nèi)任何一個人的代碼寞埠,這時候一套統(tǒng)一的規(guī)范就很重要屁置,而《Clean Code》就是這么一套規(guī)范,讓我們寫出的代碼可讀性大大提高畸裳,便于團(tuán)隊彼此共享編輯代碼缰犁。
而作為一個設(shè)計師,也有這么一套規(guī)范怖糊,比如iOS中的《Human Interface Guidelines》帅容,或者Android的Material Design,這些規(guī)范用于指導(dǎo)我們在做界面設(shè)計的時候該如何選擇合適的控件伍伤,應(yīng)該有何種樣式并徘,如何在界面中合理的布局,并在團(tuán)隊中形成共識扰魂,好讓大家可以在同一個工程中協(xié)調(diào)工作麦乞。
最后
綜合上面說的:看起來程序員和設(shè)計師的工作好像差得很遠(yuǎn),但其實(shí)大家做的事情是有很多相通之處的劝评。細(xì)細(xì)體味其中的不同姐直,可以填補(bǔ)之前一些unknow unknow的空白,說不定還可以給你現(xiàn)在的工作帶來一些新的靈感蒋畜。