幾年前,我就迷上了喬治·馬丁的《冰與火之歌》,先是看了HBO拍攝的電視劇,被其中巨集大的場面以及演員們精彩的表演所吸引。接下來又買了陸續出版的幾套書,甚至還收藏了發售的五套一共十五枚徽章,前幾天還和女兒一起,給大家在微信的朋友圈裡面秀了一下。
前幾天,忽然覺得,我們的軟體編寫出來也應該是一首冰與火之歌。
有人一定會說,是不是要給終端使用者冰火兩重天的感覺啊?在編寫之前,把將要實現的東西說的天花亂墜,十全十美,差一點兒就要把它說成是超越什麼微軟、IBM等等大公司編寫的軟體的曠世之作,讓使用者對其充滿了期待,那簡直就是他的救命稻草,有了新的系統軟體,工作效率提升不在話下,大量工作可以在一瞬間完成。但做好了交給使用者之後,卻讓人大失所望,無可奈何地說出一句話:“這東西不是我想要的啊!”這還是好的,還有一些系統,隨便點選幾下,崩潰了,報錯了,彈出一大堆使用者看不懂的天書文字,就像是一大堆冰塊兒,砸在使用者的頭上,頭暈目眩,鮮血狂噴……
Stop!我所說的冰與火可不能是上面的那個樣子,如果都那樣的話,廣大的程式設計師朋友們必定會繼續處在水深火熱之中了。
那麼賣了半天關子,我們的冰與火之軟體到底應該是什麼樣子的呢?
先來說冰,我想說的是我們編寫的軟體應該像是冰山一樣。冰山的特點就是在水面之上的部分只佔整個冰山的一小部分,而更多的內容都隱藏在水面之下。我們的軟體也應該這樣,暴露給使用者使用的只是很簡單的介面和操作,甚至說應該是傻瓜級別的,使用者甚至不需要說明書就可以直接使用,而且操作也非常少,甚至只是需要點點按鈕,所有的工作就完成了。這並不意味著我們這些程式設計師沒有做有價值的工作,而是說我們做的更多工作都在“水面之下”,比方說:當進入一個介面的時候,我們可以根據當前的時間、所處地點、環境等等因素,推測出使用者可能輸入的內容,使用者在進入之後,如果能夠說:“哇,這個系統好聰明啊!”(或者好智慧啊,好體貼啊之類的話),那麼就說明你已經成功創造了一個比較傻瓜級的系統介面了。再比方說,使用者在沒有系統之前,可能需要做很多重複、機械化的工作來處理一件工作,而處理這類工作正是軟體系統的擅長之處啊!所以我們可以把那些工作都寫到程式之中,使用者只需要倒一杯茶,然後悠閒地開啟軟體,點選按鈕,只聽到計算機的硬碟“吱吱”地轉上一陣,我們似乎看到CPU發出了一道閃光,然後結果就出來了,使用者的那杯茶剛喝了一口。古有關公溫酒斬華雄,現有我們的程式在使用者茶還沒喝完一口的時間內,就完成了本來可能需要一個小時才能夠搞定的工作,豈不是一件很讓人快樂的事情嗎?
再來說火,之前一談到計算機、程式、系統什麼的,都會給人一種冷冰冰的感覺。就連早期科幻小說裡面的機器人也是一樣啊,方方的腦袋,方方的身體,方方的胳膊腿,還有帶有奇怪音調的發音,一看、一聽,就知道是一個機器人。而在近期的科幻小說或者科幻影視中,機器人不再是那樣了,比方說最近看的《機器之心》裡面,機器人不僅僅和人長得沒有什麼區別(電視劇裡面的人能夠區分真人和機器人,可是我根本就沒看出二者之間有什麼區別),而且還具備了人的情感,這實在是太厲害了。
我們的程式也是一樣,之前,使用者一提到軟體系統,就會想到一大堆專業術語,讓人摸不著頭腦,找不到手腳,什麼選單,什麼按鈕,什麼奇奇怪怪的列表框,說出來的話(提示資訊)也只有專業的IT人員才能夠看懂,比方說:您的資料插入失敗,請與管理員聯絡。於是,使用者就明白了,在這個系統背後,有一個管理員,我們什麼問題都可以去找他。等找了之後才發現,這個管理員根本就不知道在哪裡,就算找到了,也會和你說上半個小時,然後把你搞暈之後,問題還是沒有解決。
那麼,我們應該為自己編寫的程式做些什麼呢?Apple公司的電子產品都考慮到了使用者的情感,大家看到設計的樣子,再使用iOS系統,一下子就會喜歡上它,因為它讓人可以感覺到方便。我們的系統也一樣,其實大可以不去賣弄自己學過的專業知識,而把提示資訊改成與使用者現實工作相關的話,給使用者看到的內容不僅僅是有用,而且非常像是一個人所說的話,那麼使用系統的使用者一定會有完全不同的感受。如果說我們可以讓系統瞭解到使用者操作的心情,然後在合適的時候,做出“熱情如火”的響應,那麼使用者一定會喜歡上這個系統。
其實,作為讀者的你一定也看明白了,我在這裡所說的冰與火併不是要先給使用者一盆火,再潑一盆冰水(那樣弄不好會讓使用者熱脹冷縮碎掉的),而是要在設計上既像冰山一樣把更多的工作悄悄地幫使用者做好,還要在和使用者互動的時候有火一樣的熱情,這才是冰與火之軟體。