我有時(shí)會(huì)發(fā)現(xiàn)一個(gè)很奇怪的現(xiàn)象:在公司開會(huì)的時(shí)候辨赐,明明自己說的話是正確的优俘,但大家就是沒有回應(yīng)。過了一會(huì)兒掀序,另外一個(gè)人表達(dá)的觀點(diǎn)和自己的觀點(diǎn)幾乎一樣帆焕,大家就紛紛表示贊同。為什么不恭?
當(dāng)時(shí)我還百思不得其解叶雹,現(xiàn)在想來,可能有如下三個(gè)原因:第二個(gè)人是大家更信任的人换吧,在第二個(gè)人說同一觀點(diǎn)時(shí)大家已經(jīng)想明白了折晦,第二個(gè)人的表達(dá)力比我好。
前兩種原因沾瓦,如果我們分析下去满着,對(duì)于我們自己的提高可能沒有益處,因此本文只關(guān)注于第三個(gè)原因贯莺。
【工作越認(rèn)真风喇,越容易犯錯(cuò)】
我們?nèi)匀荒命S石公和張良的故事舉例:
黃石公考驗(yàn)張良,分為三步:讓張良給他穿鞋缕探、第一次五日之約魂莫、第二次五日之約。
假設(shè)這是工作中的一篇文檔爹耗,上下游兩個(gè)部門依靠這篇文檔來銜接工作耙考。下游部門的人拿到這篇文檔后,他要去執(zhí)行“讓張良給他穿鞋”潭兽、“第一次五日之約”倦始、“第二次五日之約”這三個(gè)步驟。到最后一個(gè)步驟“第二次五日之約”時(shí)讼溺,他發(fā)覺有兩次五日之約楣号,這是明顯的重復(fù),于是他就做出一個(gè)決定:不做第三步怒坯。
執(zhí)行者又發(fā)現(xiàn)炫狱,“讓張良給穿鞋”這一點(diǎn)太難做到了,因?yàn)樗乱饛埩嫉姆锤刑拊常虼怂氲搅肆硗庖粋€(gè)方法:為什么不能向張良的鄰居打聽一下呢视译?于是,執(zhí)行者就這么做了归敬。
最終執(zhí)行者犯了兩個(gè)錯(cuò)誤:少考察了一個(gè)方面酷含,使用了錯(cuò)誤的方法而得到虛假的信息鄙早。
這兩個(gè)錯(cuò)誤必須解釋一下:為什么少考察了一個(gè)方面?執(zhí)行者會(huì)這樣想:給我的那份文檔沒有告訴我要考驗(yàn)什么方面椅亚,它只是告訴我要做三件事而已限番,而我發(fā)現(xiàn)第二件事和第三件事明顯是重復(fù)的,就把第三件事去掉了呀舔,因?yàn)槲夜ぷ髡J(rèn)真負(fù)責(zé)才會(huì)做這種糾錯(cuò)弥虐。
第二個(gè)錯(cuò)誤:為什么使用了錯(cuò)誤的方法而得到虛假的信息?執(zhí)行者會(huì)這樣想:我發(fā)現(xiàn)文檔中“讓張良給穿鞋”在執(zhí)行時(shí)有困難媚赖,會(huì)引起張良的誤解霜瘪,于是換了一種方式:向鄰居打聽,這種方式能夠得到更全面的信息惧磺,同樣是因?yàn)槲夜ぷ髡J(rèn)真負(fù)責(zé)才會(huì)做這種糾錯(cuò)颖对。
這么看來,執(zhí)行者工作越認(rèn)真磨隘,就越容易犯錯(cuò)缤底,這豈不是一個(gè)悖論?問題到底出在哪里琳拭?
【錯(cuò)誤的本質(zhì)是什么】
這件事的本質(zhì)是:執(zhí)行者使用一種有一定自主權(quán)的方式在工作训堆,他期望的任務(wù)描述是目標(biāo)式的,而交給他的任務(wù)描述卻是指令式的白嘁。
表面上看坑鱼,任務(wù)描述是“黃石公考驗(yàn)張良,分為三步:讓張良給他穿鞋絮缅、第一次五日之約鲁沥、第二次五日之約”,這里邊是有目標(biāo)的:“考驗(yàn)張良”耕魄,但這個(gè)說法并沒有把目標(biāo)說清楚画恰。
每個(gè)人都有天生的糾錯(cuò)能力,例如一個(gè)字打錯(cuò)了吸奴,他能根據(jù)上下文判斷出這是個(gè)錯(cuò)字允扇。執(zhí)行者在執(zhí)行三個(gè)步驟時(shí),發(fā)現(xiàn)了一個(gè)“錯(cuò)誤”则奥,他啟動(dòng)了自己的糾錯(cuò)系統(tǒng)考润,他的知識(shí)范圍就決定了他斷定這肯定是個(gè)錯(cuò)誤,就像他斷定1+1=3是個(gè)錯(cuò)誤一樣读处,因此他沒有絲毫的懷疑糊治,當(dāng)然不會(huì)去找別人確認(rèn)這是否是一個(gè)錯(cuò)誤。
看明白了錯(cuò)誤的本質(zhì)罚舱,我們?cè)撊绾谓鉀Q井辜?
憑直覺我們想到一個(gè)方法:讓執(zhí)行者忠實(shí)地按照文檔中說的步驟去做绎谦,也就是指令式的工作方式。但問題來了粥脚,執(zhí)行者如果這樣做事窃肠,就變成了一個(gè)按照固定程序操作的機(jī)器人,當(dāng)文檔中有錯(cuò)誤的時(shí)候阿逃,就會(huì)執(zhí)行錯(cuò)誤铭拧,如果還有下游執(zhí)行者,那么就會(huì)一路錯(cuò)下去恃锉,最后那個(gè)錯(cuò)誤會(huì)滾成一個(gè)巨大的雪球,雪球破裂的時(shí)刻很可能是驚心動(dòng)魄的呕臂!
這么看來破托,糾錯(cuò)不行,不糾錯(cuò)也不行歧蒋,難道就沒有辦法了嗎土砂?
【解決辦法】
其實(shí)是有辦法的。錯(cuò)誤的根源是:文檔風(fēng)格與執(zhí)行者工作方式的不匹配谜洽。為了解決問題萝映,我們只想到了改變執(zhí)行者,結(jié)果是不可行阐虚,其實(shí)我們還可以改變文檔風(fēng)格序臂,從如下幾個(gè)方面改進(jìn):
一、讓縱向?qū)哟螕碛袩o須解釋的關(guān)聯(lián)实束,是因?yàn)橄聦咏o上層呈現(xiàn)的是結(jié)果而不是實(shí)現(xiàn)奥秆。
我之前的文章《一樣?xùn)|西能讓你的表達(dá)力熠熠發(fā)光:層次感一樣?xùn)|西能讓你的表達(dá)力熠熠發(fā)光:層次感》中,【改造的精妙之處】部分有一個(gè)核心思想——“縱向?qū)哟螕碛袩o須解釋的關(guān)聯(lián)咸灿,是因?yàn)橄聦咏o上層呈現(xiàn)的是結(jié)果而不是實(shí)現(xiàn)”构订,它能解決執(zhí)行者的第一個(gè)錯(cuò)誤,本文不再贅述避矢。
二悼瘾、要點(diǎn)明問題的“陷阱”。
如果我們已經(jīng)知道了某些方法會(huì)有問題审胸,一定要在文檔中注明亥宿,例如“考驗(yàn)張良不能看別人怎么說,而要親自看他怎么做歹嘹,這是人性”箩绍。如果你注明了這些,別人還怎么會(huì)忽略尺上?注明“陷阱”實(shí)際上是一種融會(huì)貫通的思維方式材蛛,也就是說圆到,我們把一個(gè)問題的前因后果都說清楚了,大家一下就能明白卑吭!
三芽淡、亮出底線。
其實(shí)本文開頭的任務(wù)描述中豆赏,有一個(gè)藏得很深的技巧:直接亮出底線挣菲!“讓張良給他穿鞋”這句話就表明了底線,如果張良連給一個(gè)陌生老人穿鞋都肯做掷邦,他還有什么事情不肯做白胀,這足以說明張良“對(duì)老人的恭敬之心”。這比如下這種長(zhǎng)篇累牘的描述強(qiáng)得多:
讓張良給他穿鞋抚岗。不能只讓張良給老人倒一杯水或杠,不能只讓張良捶背…。
一定有人以為:這個(gè)例子只是虛擬的宣蔚,實(shí)際工作中的事情和這個(gè)完全不一樣向抢。其實(shí)這種觀點(diǎn)就是被表象蒙蔽,而看不到事物的本質(zhì)胚委。其實(shí)表象和本質(zhì)之間挟鸠,還有很多的話題可講,請(qǐng)關(guān)注我的后續(xù)文章亩冬。
我相信:我的解決辦法艘希,不單單是針對(duì)文檔,討論問題鉴未、寫代碼都可以枢冤,凡是與人溝通的地方都有可能派上用場(chǎng)。
【軟件開發(fā)領(lǐng)域】
你寫了很多代碼铜秆,注釋很規(guī)范淹真,誤以為自己的代碼能做到“前人栽樹后人乘涼”的效果。實(shí)際上连茧,你的注釋大多是關(guān)于如何做的核蘸,而不是為什么這么做。這樣的后果就是啸驯,“后人”看不懂你的代碼客扎,而擅自把那些看不懂的代碼刪掉,他經(jīng)過測(cè)試沒有發(fā)現(xiàn)問題罚斗。但是徙鱼,問題總是被客戶發(fā)現(xiàn),發(fā)現(xiàn)之后,那些代碼還得再找回來袱吆,也許他還會(huì)在周末給你打電話來確認(rèn)你的代碼厌衙。
所以我的建議是:
一、可以省掉“函數(shù)內(nèi)如何實(shí)現(xiàn)”這類注釋绞绒。
讓函數(shù)之間的調(diào)用關(guān)系婶希,滿足“下層給上層呈現(xiàn)的是結(jié)果而不是實(shí)現(xiàn)”,通過函數(shù)名來體現(xiàn)蓬衡,同時(shí)把代碼中的每個(gè)邏輯段都抽象成函數(shù)喻杈,這樣就不再需要“函數(shù)內(nèi)如何實(shí)現(xiàn)”這類注釋了,因?yàn)椤叭绾螌?shí)現(xiàn)”可以通過命名良好的函數(shù)名來了解狰晚。
二筒饰、注釋內(nèi)容要寫外部特性、外部約定家肯。
函數(shù)是給別人用的龄砰,注釋必須要從使用者的角度來寫,而不是把自己具體做了什么寫上去讨衣,因?yàn)椤熬唧w做了什么”與“我為使用者提供了什么”一般情況下是有本質(zhì)區(qū)別的,對(duì)于使用者來說尤其如此式镐。
三反镇、注釋內(nèi)容要寫采取當(dāng)前方案的原因、限制等娘汞。
由于不少公司以“敏捷開發(fā)”的名義省略了設(shè)計(jì)文檔歹茶,或者設(shè)計(jì)文檔只是個(gè)用標(biāo)準(zhǔn)格式編寫的、和代碼沒什么關(guān)系的東西你弦,所以代碼注釋中的設(shè)計(jì)成分更加重要惊豺。
而這個(gè)設(shè)計(jì)成分如果寫成了“具體做了什么”,時(shí)間一長(zhǎng)禽作,就需要更新尸昧,而人是有惰性的,沒有什么人愿意去更新注釋旷偿。
而這個(gè)設(shè)計(jì)成分如果寫成了“采用當(dāng)前方案的原因烹俗、限制”,即便很長(zhǎng)時(shí)間過去萍程,需要更新的概率依然很低幢妄,因?yàn)檫@些注釋是高層的設(shè)計(jì)思路,輕易不會(huì)做修改茫负。
更為重要的是:這為后續(xù)修改代碼的人提供了指導(dǎo)蕉鸳,他不會(huì)刪除那些他認(rèn)為無用的代碼,因?yàn)樽⑨屩幸呀?jīng)提到了這些代碼的作用忍法。
----------結(jié)束----------
作于2017-4-22潮尝。
我的相關(guān)文章:
《當(dāng)你無法解決眼前的問題時(shí)榕吼,試試跳出當(dāng)前的思維維度》
《想要學(xué)習(xí)速度快人十倍,可以試試融會(huì)貫通》
《快人十倍的秘訣:一個(gè)初學(xué)者和一個(gè)資深者的對(duì)話:融會(huì)貫通續(xù)》
《一樣?xùn)|西能讓你的表達(dá)力熠熠發(fā)光:層次感一樣?xùn)|西能讓你的表達(dá)力熠熠發(fā)光:層次感》