- 代碼整潔之道:程序員的職業(yè)素養(yǎng)
- (美)羅伯特·C.馬丁
- 1976字
- 2025-01-09 17:19:11
2.1 對(duì)抗角色
本書的某位審校者很討厭這一章,他說自己差點(diǎn)因?yàn)楸菊露鴣G下這本書。在他組建過的團(tuán)隊(duì)中,從未出現(xiàn)過對(duì)抗關(guān)系。整個(gè)團(tuán)隊(duì)總是能和諧共事,沒發(fā)生過什么矛盾。
我為他感到高興,但是我懷疑他的那些團(tuán)隊(duì)是否真像他自己以為的那樣毫無矛盾。如果真是如此,我很懷疑那些組員是否真能夠有效工作。我的個(gè)人經(jīng)驗(yàn)告訴自己,面對(duì)艱難決定,直面不同角色的沖突是最好的辦法。
每位經(jīng)理都承擔(dān)著工作職責(zé),絕大部分經(jīng)理也知道該如何盡職盡責(zé)。其中一部分的工作職責(zé),便是要竭盡所能追求和捍衛(wèi)他們?cè)O(shè)定的目標(biāo)。
同樣,程序員也自有其工作職責(zé)所在,絕大多數(shù)程序員也知道該如何出色地盡職盡責(zé)。如果他們是專業(yè)程序員的話,他們也會(huì)竭盡所能地去追求和捍衛(wèi)自身的目標(biāo)。
你的經(jīng)理要求你在明天之前完成登錄頁面,這就是他在追求和捍衛(wèi)的一個(gè)目標(biāo),那是盡他的工作職責(zé)。如果你明知第二天之前不可能完成登錄頁面,嘴上卻說“好的,我會(huì)試試的”,那么便是你失職了。這時(shí)候,盡職的唯一選擇是說“不,這不可能”。
可是難道你不該照經(jīng)理說的話去做嗎?當(dāng)然不該,你的經(jīng)理指望的是,你能像他那樣竭盡所能地捍衛(wèi)自己的目標(biāo)。這樣你們倆才能得到可能的最好結(jié)果。
可能的最好結(jié)果,是你和你的經(jīng)理共同追求的目標(biāo)。最關(guān)鍵的是要找到那個(gè)共同目標(biāo),而這往往有賴于協(xié)商。
協(xié)商過程有時(shí)可以相當(dāng)愉快。
Mike:“Paula,你在明天之前要完成那個(gè)登錄頁面。”
Paula:“噢,喔!要那么快啊?那好吧,我會(huì)盡量試試。”
Mike:“好極了!謝謝!”
這是段輕松的小對(duì)話。沒有任何沖突。雙方都微笑著離開。一派和諧。
但是雙方表現(xiàn)得都不夠?qū)I(yè)。完成“登錄頁面”所需時(shí)間絕不止一天,Paula對(duì)此心知肚明,她這么回答無異于撒謊。她或許不覺得這是什么謊言。或許她覺得自己真的會(huì)去努力嘗試,而且或許她真對(duì)按時(shí)完成抱著些微薄的希望。但到最后,這仍只會(huì)是個(gè)謊言。
另一方面,Mike把“我會(huì)盡量試試”當(dāng)作了“好的,沒問題”。這無異于自欺欺人。他本該明白那只是Paula在盡量避免和他產(chǎn)生正面沖突,因此他應(yīng)該進(jìn)一步確認(rèn):“你看起來有些猶豫。你確信明天能完成嗎?”
下面是另一個(gè)輕松愉快的對(duì)話。
Mike:“Paula,你在明天之前要完成那個(gè)登錄頁面。”
Paula:“噢,抱歉Mike,這么短時(shí)間完成不了的。”
Mike:“那你覺得什么時(shí)候能完成呢?”
Paula:“再過兩周怎么樣?”
Mike:(在他的本子上記了幾筆)“好的,謝謝。”
這樣對(duì)話確實(shí)輕松,但其中的問題也很嚴(yán)重,大家表現(xiàn)得極不專業(yè)。雙方都沒嘗試尋求最佳的可能結(jié)果。Paula不該問兩周是否可以,而應(yīng)該更堅(jiān)定地說:“Mike,這個(gè)活需要兩周才能完成。”
另一方面,Mike毫無異議就接受了這個(gè)日期,仿佛他自己的目標(biāo)無關(guān)緊要似的。這也不免讓人猜想他是不是會(huì)直接向老板報(bào)告——由于Paula的原因,客戶的demo將不得不推遲。這種消極對(duì)抗的做法應(yīng)該受到譴責(zé)。
在這些例子中,雙方均未嘗試尋求可接受的共同目標(biāo)。雙方均未努力尋求最佳的可能結(jié)果。我們?cè)賮砜聪旅娴倪@個(gè)對(duì)話。
Mike:“Paula,你在明天之前要完成那個(gè)登錄頁面。”
Paula:“不,Mike,這個(gè)活要兩周才能完成。”
Mike:“兩周?架構(gòu)師估計(jì)這只要3天,而你已經(jīng)花了5天時(shí)間了!”
Paula:“架構(gòu)師們錯(cuò)了,Mike。他們是在接到產(chǎn)品銷售需求前做的預(yù)估。我至少還需要10天才能做完。你沒看到我在wiki上更新的預(yù)估嗎?”
Mike:(表情嚴(yán)肅、沮喪得發(fā)抖)“Paula,這可不行。客戶明天就要來看demo了,我必須向他們展示個(gè)能用的登錄頁面。”
Paula:“明天你需要登錄頁面的哪部分能用?”
Mike:“我要整個(gè)登錄頁面!必須要能登錄。”
Paula:“Mike,我可以給你做一個(gè)能登錄的假頁面。這個(gè)現(xiàn)在就已經(jīng)可以。但是頁面不會(huì)檢查用戶名和密碼。如果你把密碼忘記了,也還沒辦法發(fā)郵件告訴你。頁面頂部也還不能像時(shí)代廣場(chǎng)的大屏幕那樣有新聞欄在滾動(dòng),幫助按鈕和浮出說明都還不能用,它沒法為你保存cookie以便下次登錄,也不會(huì)設(shè)定任何權(quán)限限制。但你確實(shí)可以登錄。你看這樣可以嗎?”
Mike:“我可以登錄?”
Paula:“是的,可以登錄。”
Mike:“好極了,Paula,你真是個(gè)大救星。”(松了口氣,說了聲“太棒了!”,走開了。)
在這個(gè)例子里,他們達(dá)成了最佳的可能結(jié)果。他們各表異議相互說“不”,然后找到了雙方都能接受的解決方案。他們的表現(xiàn)是專業(yè)的。對(duì)話中雖稍有沖突,也有片刻不愉快發(fā)生,但如果雙方堅(jiān)持追求的目標(biāo)不能完美切合時(shí),這是比較理想的情況。
“為什么”重要嗎
或許你覺得Paula應(yīng)該解釋下為什么“登錄頁面”還要花那么長時(shí)間才能完成。我的經(jīng)驗(yàn)是,“為什么”遠(yuǎn)不如“事實(shí)”重要。事實(shí)是,“登錄頁面”還需要兩周才能完成。而為什么需要兩周,則只是個(gè)細(xì)節(jié)。
盡管這樣,知道“為什么”可能還是會(huì)有助Mike了解并接受事實(shí)。那是最好不過的了。如果Mike恰好有技術(shù)背景和好脾氣去傾聽理解,這些解釋也許會(huì)有用。另一種情況則是,Mike可能會(huì)不認(rèn)同Paula的結(jié)論,他可能會(huì)覺得Paula的做法不對(duì),他可能會(huì)告訴她不用做完整的測(cè)試和代碼審查,或者可以把第12步省略掉,諸如此類。有時(shí)候,提供太多細(xì)節(jié),只會(huì)招致更多的微觀管理。
- Objective-C Memory Management Essentials
- Building a Home Security System with Raspberry Pi
- Visual C++數(shù)字圖像模式識(shí)別技術(shù)詳解
- CentOS 7 Linux Server Cookbook(Second Edition)
- OpenStack Cloud Computing Cookbook(Fourth Edition)
- OpenNI Cookbook
- Python GUI Programming Cookbook
- Essential Angular
- Java Web基礎(chǔ)與實(shí)例教程
- Windows Presentation Foundation Development Cookbook
- 高級(jí)語言程序設(shè)計(jì)(C語言版):基于計(jì)算思維能力培養(yǎng)
- QGIS By Example
- 零基礎(chǔ)學(xué)C語言(第4版)
- 基于MATLAB的控制系統(tǒng)仿真及應(yīng)用
- PhantomJS Cookbook