任何曾經從頭開始開發過應用程序的開發者都知道:在用戶陳述需求或主題專家描述代碼應解決的問題時,我們很難完全理解他們的目的。大家都知道,需求收集是一種挑戰;但是,為何難以收集到合適的需求、該采取什么辦法,這些問題就更難以理解了。
其實,用戶的隱含需求與明確需求的概念,類似于我們日常所說的默會知識與明確知識的概念,因此弄清楚默會知識與明確知識的涵義對我們研究用戶的隱含需求與明確需求很有意義。
默會知識
默會知識指基于經驗和觀察的知識。不存在一些由以前傳承下來的法則或程序。它只是做事的方式而已。由于它的相關性,它具有非常強大的力量,能夠直接應用于將來需要解決的問題上。
舉一個例子,有一個靠做零工為生的朋友,由于你們很談得來,所以他和你喜歡一起做事情。最近,你們正在你的車庫里為教堂做鼓架,他不斷表現出各種小知識。你們先做好框架,然后再把它與平板連起來;而不是一次一塊木塊在平板上做框架。為什么這樣做呢?答案是那樣更加方便簡單。他怎么知道這樣做呢?他做過許多這類活,足以知道這些知識。他知道各種各樣的知識,例如,確信木板的頂部,所有木材正常的輕微彎曲部分全部向上。為什么呢?因為當它載重時,它會產生變形,由彎變平,回到中間位置。
另一個例子是你幾年前在大學里學到的東西,它與循環結構有關。你的導師建議我使用一個在循環開始之前就執行初始閱讀的循環結構。當時你使用的結構在循環開始后才進行閱讀,所以循環中包含一個巨大的IF塊。當時她建議你使用一個將閱讀語句放在循環前的新結構,你問為什么。她回答道:“因為這是更好的方法。”憑經驗,她知道在循環開始之前執行閱讀會更好。
在學徒期,主要學習的是默會知識。從一個比你經驗更加豐富的人那里,你學會處理事情的方式。通過這種方式,我們學會制造優良產品或加快工作速度的細小而微妙的方法,這些知識是你在正式的教科書中無法學到的。
一些人就是知道憑經驗來做事情。你可能很難讓他們向別人解釋這些知識,或將它們寫下來,但他們確實知道這些建立在經驗之上的知識。
明確知識
相對于默會知識,明確知識是指可以被量化的知識。你可以將它們書寫下來,在人們之間傳達。它是實實在在的,不是獲得的經驗。它是那種已形成規則的知識。
例如,一個人看到蘋果從樹上掉下來,并知道搖蘋果樹來得到蘋果-默會知識-并且他可能還知道重力作用使所有物體集合在一起。最初通過觀察獲得的默會知識,最終轉化成一種定律,明確知識。
明確知識是通過文章、書籍、研討會和視頻演示傳達的知識。明確知識我們總可以在書本商找到,因此沒有必要直接經歷某事來獲得與其相關的明確知識。這是剛畢業的學生受到的批評的原因之一:他們擁有許多“書本知識”(明確知識)但缺乏實際經驗(默會知識)。我們很清楚地知道,不管明確知識有多么重要,它總是無法代替默會知識。