發(fā)一個(gè)功能強(qiáng)大的客戶數(shù)據(jù)清理工具,通過(guò)工具可以自動(dòng)識(shí)別出這些混亂的數(shù)據(jù),并且提供一些合并、匯總、刪除功能”。
隨著這個(gè)功能的開發(fā),項(xiàng)目的范圍也不斷擴(kuò)展,針對(duì)這個(gè)功能的需求也層出不窮。這就是軟件開發(fā)過(guò)程中的“充電站”,成本付出了,但真的對(duì)項(xiàng)目有好處嗎?
這樣做合適嗎?似乎很多人會(huì)舉手贊成,但是也付出了巨大的成本。如果我們細(xì)究一下,這個(gè)問(wèn)題是怎么產(chǎn)生的呢?為什么數(shù)據(jù)會(huì)混亂呢?實(shí)際上根源問(wèn)題是在用戶輸入數(shù)據(jù)時(shí),系統(tǒng)對(duì)數(shù)據(jù)的校驗(yàn)不足,因此更科學(xué)的方法是加強(qiáng)輸入時(shí)的數(shù)據(jù)校驗(yàn),而不是開發(fā)一個(gè)大“充電站”來(lái)事后補(bǔ)救。
隱喻:
在萬(wàn)般無(wú)奈下,有人提出了一個(gè)蹩腳的主意:在出口立一個(gè)大牌,上面寫上“如果是白天,并且車燈開著,請(qǐng)熄滅車燈;如果天色已晚,并且車燈沒開,請(qǐng)打開車燈;如果是白天,并且車燈沒打,就別打開它;如果天色已晚,并且車燈開著,請(qǐng)別關(guān)掉它”。
這樣能夠解決問(wèn)題嗎?顯然不能呀,在汽車行駛過(guò)程中誰(shuí)能夠閱讀完這么長(zhǎng)的一段話呢?
有些時(shí)候,軟件開發(fā)人員也會(huì)采用類似的提示語(yǔ),例如安裝過(guò)程中的向?qū)Ь褪沁@樣的例子:明知道大家都是閉著眼睛點(diǎn)擊“下一步”按鈕的,那么為什么還要不斷地重復(fù)這樣的設(shè)計(jì)呢?這難道不就是這個(gè)蹩腳的標(biāo)牌嗎?
那么怎樣才能夠解決這個(gè)問(wèn)題呢?關(guān)鍵在于對(duì)問(wèn)題的定義,先確定這里到底存在什么樣的問(wèn)題?如果從這個(gè)角度來(lái)看,不難發(fā)現(xiàn):
圖4尋找問(wèn)題的本源
表現(xiàn)出來(lái)的問(wèn)題是車沒電了,而為什么沒電了呢?因?yàn)樗緳C(jī)忘了關(guān)大燈。為什么會(huì)忘了關(guān)大燈呢?往往是沒有人提醒他而造成了疏忽。通過(guò)這樣的分析,我們就知道需要的解決方案是“提醒機(jī)制”,這時(shí)就不難得出有效的解決方案:
隱喻:
最后終于有一個(gè)清醒的人提出了一個(gè)有效的解決方案,那就是在出口出立一個(gè)標(biāo)牌,上面寫上“你的燈亮著嗎?”。
我想這時(shí)讓你給出類似的解決方案也并非難事,為什么前面會(huì)繞了一圈呢?關(guān)鍵就是沒有正確地認(rèn)識(shí)到什么是問(wèn)題?這個(gè)案例詮釋了“對(duì)問(wèn)題進(jìn)行了正確的定義,意味著成功解決了一半”的內(nèi)涵。