據我觀察,在軟體開發者身上的所有「壞毛病」中,最嚴重的可能是:我們自以為是典型使用者。我們對電腦如痴如醉;我們對它的工作原理了解甚多;我們甚至建議親朋好友應該如何使用電腦。我們是專家!誰還能比我們這樣的超級使用者設計出更好的軟體呢?然而,大部分開發者沒有意識到的是,我們其實是異類。我們絕非等閒之輩——我們是邊緣人。我常常告誡專案經理:如果你讓我設計軟體,你的專案就麻煩了。
在《互動設計之路——讓高科技產品回歸人性》一書中,alan cooper也談到了這種現象,並提出了「邏輯人」(homo logicus)的概念:
邏輯人渴望控制那些讓他們感興趣的東西,而那些讓他們感興趣的都是些複雜的確定性系統。人是複雜的,但他們不像機器,他們的行為不具有邏輯性和可預見性。最好的機器是數字的,因為這樣它就能變得最為複雜、精細,並且能被程式設計師輕易改變。
獲取控制的代價總是更多的努力和更高的複雜度。大部分人願意適度地努力,但程式設計師有別於大部分人之處在於,他們更願意而且有能力掌控極度的複雜。對於程式設計師來說,他們的工作滿意度部分來自於了解並管理由很多相互作用的部件組成的系統。駕駛飛機是程式設計師的典型愛好。飛機駕駛艙的控制面板上堆滿了儀表、把手和控制桿,但程式設計師一點都不怕那些令人生畏的複雜玩意兒。邏輯人覺得它很有趣,激動得按捺不住,儘管他們需要嚴謹地學上幾個月(他們恰恰因此樂在其中!)。而現代智人(
homo sapiens
)更願意只是作為乘客乘坐飛機。
對於邏輯人來說,控制是他們的目標,而複雜是他們願意為之付出的代價。對於普通人來說,簡單是他們的目標,失去控制權是他們願意付出的代價。在以軟體為基礎的產品中,控制演變成了功能特性。例如,
windows 95
的「查詢檔案」功能對搜尋過程賦予了使用者很多控制。使用者可以指定搜尋磁碟的哪個區域、想搜的目標檔案型別、通過檔名來搜還是通過檔案內容來搜,以及其他的幾個引數。從程式設計師的角度來看,這個特性非常酷。經過一些預先的嘗試和理解,他們可以使搜尋過程更快、更有效。與之相反的是,普通使用者並不覺得這有多好,因為他們必須指定搜尋區域、目標檔案型別以及是否按檔名搜還是按內容搜。如果不必了解搜尋的工作原理,現代智人更願意犧牲一點讓計算機額外工作的時間。對他們來說,每個搜尋引數的輸入都可能讓他們犯錯,儘管靈活性增加了,但搜尋失敗的可能性也會更高。他們寧可犧牲所有不必要的複雜、控制和認知,以讓他們想做的事情更容易做好。
邏輯人被一種對工作原理難以抵抗的認知慾望驅使著。相比之下,現代智人強烈渴望的是成功。儘管程式設計師也想成功,但他們願意接受經常的失敗來作為認知的代價。為了更好地理解這一點,我們來看乙個關於工程師的經典笑話:
有三個人將被依次執行死刑,他們中的乙個是牧師,乙個是律師,還有乙個是工程師。牧師第乙個被推向絞刑架。儈子手拉動控制桿以抽出活板,但它失靈了。牧師宣稱這是上帝的旨意,要求得到釋放。於是他獲得了自由。接著,律師走向了絞刑架。儈子手再一次拉動了控制桿,但它仍然失靈。律師同樣要求獲得釋放,因為他不能因為同一罪狀被判兩次死刑。於是他也獲得了自由。最後,輪到工程師了。他上去對腳手架仔細檢查了一遍,在儈子手還沒動手之前,他抬起頭大聲說,「啊哈,是這裡出了故障!」
alan cooper接著列舉了邏輯人的更多特徵:
可憐一下使用者吧!他們只不過是一些現代智人;他們對計算機或複雜度不感興趣;他們只是想做好他們想做的事情。
任何人都能做出來乙個沒人會用的複雜軟體。這其實並不難!把軟體做得容易使用才是需要真本事的!我不確信你是否需要請那些要價不菲的互動設計師來達成這個目標,但你必須停止像邏輯人一樣思考——而應該學會像現代智人那樣思考!
我是程式設計師
相比於寫 我更喜歡寫能自動產生 的生成器,和許多人一樣,我討厭寫重複的 這種重複包括字面的重複和結構的重複 還有思想的重複。在日常的開發過程中,一旦我發現一種需要經常使用的元素 類 結構 方法 我就將它整理出來,所謂整理主要是做這樣的工作 重構 最大限度降低這個元素與其它元素的耦合性 最大限度地擴充...
什麼是程式設計師
乙個大專學歷想做程式設計師的朋友和我的對話,很短,我覺得,至少能說明我的心情和對程式設計師職業理解的乙個側面。2008 07 28 12 11 37 卿飄飄 大哥現在還寫程式不?2008 07 28 12 12 51 青潤寫。2008 07 28 12 16 10 卿飄飄 哦 你覺得三十歲後還寫程式...
我是程式設計師
相比於寫 我更喜歡寫能自動產生 的生成器,和許多人一樣,我討厭寫重複的 這種重複包括字面的重複和結構的重複 還有思想的重複。在日常的開發過程中,一旦我發現一種需要經常使用的元素 類 結構 方法 我就將它整理出來,所謂整理主要是做這樣的工作 重構 最大限度降低這個元素與其它元素的耦合性 最大限度地擴充...