大多數時候,軟體開發都是集眾人之力而成。既然不是單兵作戰,那麼最好就是要有一個負責溝通協調的角色。協調的主要作用是什麼?就是統整眾人的步伐、速度,還有方向,使得大家可以一致地朝著同一個目標前進,最後順利抵達目的地,也就是如期把專案完成。我們也常會把這種角色,視為是領導者的角色。

程式人面對管理者,難免有壓力
在不同的開發方法裡,這個角色的名稱都不太一樣,但是在許多的團隊中,都會把這個角色對應到組織上的管理角色,所以也就是讓所謂的「管理者」來負責這樣子的工作。雖然說在行政組織上存在Report Line的上下關係,但組織上的管理者,倒也不見得要等同於開發時的領導者,不過,實際上,絕大多數的情況都是如此。

不知道是從什麼時候開始,在談到軟體開發團隊裡的領導者角色時,我會盡量避免使用「管理者」這個名稱。這應該是因為我覺得一旦用了這個稱呼,就會在這個角色和其他的程式人之間隔出一道牆,好像二者分別處於不同的世界,而且一個在上、一個在下。

這種情況對於開發團隊不是好現象,因為領導者如果能夠讓程式人認為他們和領導者是屬於「同一掛」,可以讓整個開發的工作減少不少阻礙。可想而知,如果是相反的情況,當然會增加不少阻礙。

事實上,還滿常見到的情況,是程式人對於他們的「管理者」,或多或少都抱著敵意或不友善的態度。會有這樣的情況,有一部分源自於「管理者」總是那位指派工作、盯緊進度、要求工作準時完成的人。

而這樣子的期望,有時候會和程式人的其他期望相衝突。例如程式人可能會希望工作能夠輕鬆點,能夠準時下班,可是一旦開發專案的進度不如預期,程式人便很有可能被「管理者」要求加班或者是加重工作,那麼二者之間的關係,想要十分和睦,可能沒有這麼容易。

領導的關鍵是信任,而非技術
當然,這兩種角色之間,可能存在的衝突還不僅止於此。

就像開發團隊的「管理者」可能有兩種類型,一種技術能力弱,一種則是技術能力高強。這兩種類型的管理者,面對他們所帶領的程式人,會遭遇到不同的麻煩事。

我曾經遇到一名技術能力很不錯的管理者提了一個問題,「如果你面試了一位技術能力比你還要好的工程師,你會怎麼做?」有些人會先考慮到,是否找了一位技術能力比自己好的工程師,日後就占掉自己位子。但是,我看到這樣子的問題,首先想到的是,面對一個技術能力比自己好的程式人,你要如何才能夠讓他接受你的帶領。

這其實是一個無論技術能力好壞的管理者都會遭遇到的問題,即使身為管理者的你,技術能力十分卓越,但一山還有一山高,難保不會遇到更高竿的程式人。

這個問題為什麼會是個麻煩呢?這就好比武林盟主大多數時候總是武功最高強的那個人擔任,因為習武之人面對武藝更高者,總是比較容易信服。不可否認的,有些程式人會比較信賴開發能力更高強的人,進而接受他的領導。

身為一名軟體開發團隊的管理者,如果不能讓你的程式人真心地接受領導,只是屈服在行政組織上的結構,被迫聽命於你、對於你的指令並不是百分之百地遵行,那麼這樣子的領導,在效率上勢必會大打折扣。

但這是否意謂著技術能力不夠好,就不適合做為開發團隊的領導者呢?我認為並不見得。技術能力好的管理者有加分之處,但也有可能存在一些盲點及障礙。而技術能力不那麼好的管理者,想要帶領開發團隊,也並非就困難重重、無法服人。

其實這中間的關鍵之一,在於能否取得信任,而不是單純地只看技術能力的高下。

贏得下屬的心,才會好辦事
為什麼技術人容易服從技術能力好的領導者,是因為「信任」。當你身為一個領導者做了一個決策,進而下了一個指令之後,程式人會因為信任你的技術能力,所以相信你的決策,以及這個決策所衍生的指令及行動。

程式人面對不受信任的管理者,在接受到指令時,時常可以看到他們抱持著一種不以為然,甚至嘲諷的態度,那種想法大概就像是「又來了,難道你不知道照你的意思這麼做,結果就一定會失敗嗎?」、「我們家那個只會出一張嘴的經理,今天又說要如何如何了」之類的。一旦失去了程式人的信任,就不容易再失而復得了。

身為一個技術能力好的領導者,你會因為能比下屬更懂得技術上的細節,使得決策具有足夠的正確性,讓開發團隊在依循指令之後,獲得好的結果。這樣的情況重複發生個幾次,就能建立程式人對領導者的信任感,對於相關的指令,服從度也會大大提升。

程式人或許都有一些共通的特性,例如,他們可能不是那麼相信權威,所以,單純想要以管理者的身分施加壓力,有時反而會適得其反。我常常戲稱寫程式的人,都是刺龍刺鳳的道上弟兄,要想讓他們好好辦事,你得真的贏得他們的心才行。

信任的建立,重點在於決策能否產生好的結果
身為一個技術能力不夠好的領導者,並不是就沒有機會建立起團隊的信任感。事實上,關鍵也不是在於技術能力的高低,而是在於你所做的決策是否能夠產生好的結果。

如果你總是做一些奇怪、離譜的決策,讓開發專案往不正確的方向走,等到次數一多,想要讓下屬信任你,自然是很難。

帶領一個開發團隊,需要做的決策類型很多,可能涉及到技術層面、專案管理層面、人員管理層面,如果你是一名技術能力不夠好的領導者,你最大的困難是在技術層面的決策。

這時有個好方法,便是徵詢團隊成員的意見。你必須依據對成員的了解,知道需要找那些人來談,並且知道如何從眾多、可能不盡相同的意見中,歸納出可以採用的部分,進而做決策。

例如,當你估算某個工作需耗費多少時間完成,或許可以分別徵詢樂觀派及悲觀派成員的估算結果,再取其中道,最後實際的情況,常是雖不中亦不遠矣。

如何提升決策品質是關鍵
當你要試著讓決策轉化成為具體的行動時,必須適當地讓團隊成員明白,之所以會這麼決定的來龍去脈,讓他們認同你的決策過程及結果,而不是單純地只是下指令而已。

如果在你的帶領下,大家總是能夠不需要加班、專案總能如期的完成,相信程式人們對你的信任感,遲早會在心裡油然而生,對於你所做的決策、所下的指令,自然會很樂意地相信,照著執行便能夠得到好的結果。

身為一名開發團隊的領導者,你的主要工作便是做決策。技術能力是幫你做決策的輔助,但並非絕對必要的要素。對你來說,決策的品質才是最重要的一件事。所有被你領導的程式人,都會觀察你所做決策的品質,來為你打一個分數。為自己博一個高分,便更能強化自己的領導效率。

專欄作者

熱門新聞

Advertisement