程式和介面簡潔化設計的思考

2021-09-22 09:18:33 字數 2243 閱讀 2276

一年前,在被面試過程中,有很多面試官以各種方式問我「你會哪些計算機技能?」此時我總會幾乎不停頓地說出幾十個名詞(此處省略100字)。面試官有點吃驚,然後他會在其中挑幾個他最擅長的技能,然後把我的自信心徹底打敗。

不過好像是真的,越牛的人,簡歷越短。
我也許是眾多程式設計師的乙個縮影,每個同學都希望自己掌握更多的知識,寫更多的程式,有更多的技能樹,賺更多的錢。總之,多就是好的,少就是不好的。一旦看到別人在做什麼,那自己也做一把吧,反正「技不壓身」。
於是,你維護了好幾個工程,同時學習著n門技術,自己寫的類庫里幾乎沒有private型別(公開給別人越多,功能越強,是不是?)總是標榜著自己的某產品或軟體又多了幾項功能,介面做得越來越複雜,滾動條越來越細。投入了大量的時間,使用者不懂怎麼用,同事看不懂你的文件,過了一段時間,連自己都不知道原來寫的是什麼了。
你喜歡複雜還是簡單呢?
從類庫的角度來說。有些人標榜他設計的web服務類庫功能強大,可是當你在使用他設計的類庫時,一下子彈出來幾十個莫名其妙的函式和公共變數,有startservice, addservice, bindingservice, ***service一大堆,最可怕的是表現服務是否啟動的isstart變數還可以被外部修改!在學習微軟官方類庫時,我們幾乎不需要看文件,就能猜出個大概。乙個web服務,start()就是開啟,close()就是結束。簡單地就像削好了乙個蘋果讓你吃,你只負責張嘴就行了。如果希望最簡單地實現功能,那麼最明顯的那幾個函式應該就能用了;如果想要更多功能,那再逐級深入不行麼?
從介面設計的角度來說,十年前的軟體和現在的軟體,從ui上看最大的區別是什麼?十年前的軟體,幾乎每個角落裡都會塞幾個選單和按鈕,而當前的軟體非常簡潔,乙個頁面只關注乙個內容,更符合人的思維方式。現在扁平化大行其道,簡單就是好的。確實是這樣,每多乙個選項,使用者的學習成本就增加一倍。
在學習wpf之後,我滿腦子都是那種所謂的「絢麗ui」,一定要將控制項塞滿整個螢幕!下面看我演示的觀眾在一陣唏噓聲之後問到,這個東西到底怎麼用啊?下面就是乙個典型的例子:

holy ****!

我犯了乙個需求錯誤,這種超複雜介面的需求場景有兩個特徵:一是使用者專門針對該軟體進行過訓練,會非常熟悉這套介面的功能;二要讓觀察者盡可能減少或者乾脆取消掉對介面的一切操作,在最短的時間內獲得自己想要的所有資訊。  在這種情況複雜設計是合適的。想想戰鬥機飛行員的駕駛艙的那些儀表和操作按鈕,非常直觀且直接,乙個操作對應乙個按鈕,緊張的戰鬥時刻,哪有時間操作那些導航選單!乙個實體按鍵對人的心理帶來的踏實感,幾乎是任何介面設計都比不上的。

但我們的軟體,真的是那樣的使用場景麼?使用者是每天幾乎只使用你這套軟體且那麼注重實效性麼?甚至退一步說,以我們的水平,設計出來的這些介面,真的滿足了上面說的兩個特徵了麼?

沒有,不僅沒有,而且極大的增加了操作複雜性,讓絕大多數人都望而卻步,只為了自己方便而把所有東西堆在一起是不負責任的。因為所有人都越來越懶,越來越忙了。軟體使用者體驗差一些,就被直接拋棄。「總之,別讓我看太多的文字,我會直接跳過去。?只有好看的我才看」。這就是現狀,那些曾經每天看著報紙上密密麻麻的新聞和大部頭書籍的人越來越少了。你要充分接納使用者的懶和忙,否則使用者就不可能接受你的產品。(所以我估計這篇文章這種大段的文字也沒什麼人看)

怎麼辦呢?

首先要認準乙個事實,複雜事物是由簡單的事情組合而成的,以我們絕大多數人的智商,是搞不出足夠複雜的東西的。更多情況是我們把簡單的搞的更複雜了! 任何工具使用太複雜,一定是設計者的問題。

從認知來說,一定要符合使用者的習慣和預期:乙個橋,就應該是起運輸和轉換作用的,連線了兩頭;乙個任務管理模組,只關心管理,至於任務怎麼做,它不需要關心;乙個介面就應該有乙個重點,對於移動端更是如此; 至於配色的簡潔,排版的簡潔,那就是高階層次的問題了。清晰簡潔的設計滿足某種規範和模式,讓人觸類旁通。乙個好的設計,不論是**還是介面,不論是開發者還是使用者,都會有一種如沐清風的感覺,世界本來就是簡單的,大道至簡。

從更大的層面說,作為程式設計師,一定要有最核心的內功,我越來越意識到,一是演算法,修身;二是設計模式;齊家,三是架構,治國,平天下的事情就先不討論了。以無招勝有招,到後來那些紛繁的問題看起來其實只是同乙個問題。「能搞定字串,就能解決絕大多數演算法的問題」。滿足於自己又學會了某個類庫的使用,在簡歷上說自己會某種聚類演算法或orm框架,這就像給馬拉松選手吹噓自己跑了三公里一樣可笑。

共勉。

出處:

程式和介面簡潔化設計的思考

一年前,在被面試過程中,有很多面試官以各種方式問我 你會哪些計算機技能?此時我總會幾乎不停頓地說出幾十個名詞 此處省略100字 面試官有點吃驚,然後他會在其中挑幾個他最擅長的技能,然後把我的自信心徹底打敗。不過好像是真的,越牛的人,簡歷越短。我也許是眾多程式設計師的乙個縮影,每個同學都希望自己掌握更...

IPTV介面產品設計的幾點思考

我對比分析了現有市面上常見的幾個ott應用 再結合我們的iptv,個人認為在產品設計及體驗角度上應該在最細節在的幾個方面有個統一的考慮標準。按鈕作為互動的關鍵一環,它不僅是心靈碰擦火花的觸啟點,還是引導你期待的密鑰匙。所以按鈕的重要性不言而喻。按鈕分為幾類 1 常規按鈕 2 關鍵字式按鈕 3 浮層及...

常用 crud 的思考和設計

簡化單錶的crud基本 假設現在有 字段型別 idint name varchar 建立 controller 類 建立 service 類 建立 一些驗證方法 組合起來 restcontroller demo public class projectdemocontroller else crud...