在今年過農曆年前,看到以前閱讀《溫伯格的軟體管理學(第二卷):第一級評量》所做的筆記,引發同人想要寫一篇文章探討軟體開發團隊的官僚特性。但由於工作轉換及其它寫作計劃的原因,直到現在才有時間分享我對軟體開發團隊的官僚特性之心得。
溫伯格說官僚是每件事都在掌控中,但是一切全都失控了。他提到:
當專案規模變得相當龐大,通常就會因為專案成員對整體狀況缺乏掌控,不了解本身工作與整個專案的相關性,而導致官僚作風出現。
在這種情況下,大家一定會在不知不覺中做出危害品質的事,甚至會阻礙到專案的完成。這就是官僚-人們不明究裏地在做事。
要評量軟體開發組織的「官僚特性」(bureaucratic nature),溫伯格認為可以藉由有多少事情在不明究裏的情況下完成。他指出在不明究裏的情況下完成事項,占完成事項的百分比就是評量官僚的一種方式。
想要減少團隊的官僚特性,管理者應該要讓團隊成員充分了解專案計劃。溫伯格提醒管理者有計劃還是不夠,應該要讓參與專案的團隊成員了解計劃,並且透過傳達與溝通讓每一個人都了解計劃。他強調只有高層了解的秘密計劃(而且就連高層自己也不太清楚這些計劃),勢必會在大型專案中引發官僚之災。
溫伯格的觀點解釋了在軟體開發團隊常見的官僚特性。在軟體開發過程中,人們不知不覺犯下危害軟體的品質或阻礙專案的進行的錯誤,通常並不是因為計劃不夠完整,而是因為團隊成員缺乏對專案計劃的整體了解。專案成員從專案計劃知道他的任務,但卻不知道他的任務和整體專案的關係。
換句話說,團隊成員知道他應該做什麼、和如何做,可是卻不知道為什麼要這樣做,工作只是由上面丟下來交辦,他只是奉命行事而已。比如說:
- 程式開發者按照系統設計規格開發程式,可是卻不知道為什麼系統要這樣設計。
- 系統設計者按照系統分析規格設計系統,可是卻不知道為什麼系統要這樣分析。
- 系統分析者按照客戶提出的需求來分析系統,可是卻不知道為什麼系統會有這個需求。
- 管理者覺得開發者沒有把事情做對,可是卻總是不早點告訴開發者什麼叫做把事情做對。
為什麼團隊成員在他們不知道為什麼的時候,不先溝通把事情的來龍去脈弄清楚才開始執行任務呢?可能是團隊成員的能力只能知其然,而不能知其所以然;也有可能是因為團隊成員的態度並不想多花心力去了解事情的根源。同人認為不管是成員能力或態度的因素,管理者都應該要為開發團隊的官僚特性負起最大的責任。
因為軟體開發團隊的官僚特性本質上是品質文化的問題,基本上和管理者的態度及核心價值觀有關。如果程式的開發者不能了解程式和設計、需求、乃至於其所要解決的問題,就很難確定他能夠在正確的問題方向上思考,以發展在正確問題下的有效解決方案。也許他做不到的原因是因為尚未培養面對問題獨立思考的技能和習慣,但如果管理者不能在團隊中建立共享語意庫或增進共享意義暢通的管道,要求開發者要有能力知其所以然只是緣木求魚罷了。
從另一種角度來看,團隊成員在態度上不想多花心力去了解事情的根源之真相,很可能是管理者在態度上並沒有鼔勵團隊成員多多參與討論、以及提供成員表達個人意見的管道。即使管理者在言語上聲稱他們願意接受不同的建言,但實際上面對團隊成員提出不同意見的質疑,卻是表現出不能接納建言的行為。慢慢地,團隊當中自然愈來愈沒有人願意表達他們的異議,成員傾向聽命辦事來規避把事情攬在自己身上,於是讓這樣的心態更加深團隊的官僚特性。
當然,管理者因為態度而加深開發團隊的官僚特性,最後必然會「個人造業個人擔」。最後團隊有想法、有抱負的「年輕人」會愈來愈少,只知道制度和規範而忽略思考創新的「老人」愈來愈多;這裡指的年輕人和老人不是基於年齡,而是基於成員面對問題的心態。當團隊的大部份成員都已經心態老化,思考僵化是軟體品質不良的根本原因,不論管理者加深團隊的官僚特性是有意或無意,他都必須為此承擔相對的代價。
「年輕人」比「老人」對事情的「理所當然」更不以為然,因此前者可以透過思考和創意來創造更多的可能性,這正是後者限於官僚特性所看不到的世界。
同人記得聽過某個長官曾經對下屬提的意見表示:「不要只提出問題,要有 solution!」不過接下來聽到另人激賞的反駁:「如果要有 solution 才能提問題,那誰敢提呀?」表現對官僚特性的反抗,當然反抗的結束是最後反駁者終於離開那位長官的團隊。
同人不知道那位長官心中到底有沒有意識到「如果這麼快就可以有 solution,那根本就不成問題」的真相,但我知道他的管理風格無法適應會對「理所當然」質疑的思考者,他只能「管理」聽命辦事的工作者,也許只有加深團隊的官僚特性才能減輕他對管理彈性不足所反應的焦慮吧!
自動引用通知: 誰是政策的當責者? « 同人的生活派對
自動引用通知: 開發團隊工作文化的調適 « 同人的生活派對
自動引用通知: 軟體開發團隊的心理型賦權 « 同人的生活派對
自動引用通知: 為什麼敏捷沒有效? « 同人的生活派對