許多人心目中對管理者「用嘴巴寫程式」的看法,是相當負面的。那是因為多數人未曾被「很會用嘴巴寫程式」的主管帶領,那種美好的經驗,讓我對「用嘴巴寫程式」有另一種不同的正面看法。

「用嘴巴寫程式」是程式人圈子裡時常被提起的一句話。用來諷刺管理者只會出一張嘴,盡講一些空泛、摸不著邊際的虛話,卻無論如何也不願動手寫程式,好似光動動嘴巴,程式碼就能夠生出來。

的確「用嘴巴寫程式」似乎是許多帶領程式人進行開發的管理者的一種共通的現象。程式人認為,主管只知道出一張嘴,交待要完成的功能,或是修正問題,甚至還押上很緊的期限,完全一付不食人間煙火的樣子,以為只需要下令,程式人就能沒日沒夜地加班,在期限內完成程式。殊不知,動嘴下命令很容易,但底下的程式人,搞不好得花許多的時間。

不滿的程式人可能會認為,不合理的制度,不是打敗它就是加入它,於是心中最大的願望,莫過於早日「晉升」到「用嘴巴寫程式」的角色。這麼一來,工作就輕鬆多了,只需要動動嘴巴交辦事情,底下的苦命工程師自然得乖乖地寫好程式。

但我認為「用嘴巴寫程式」,不是想像中那樣輕鬆的工作,事實上,要做好這樣的工作,需要的條件資格更為嚴苛。

條件一:
除了審查進度,也要提供必要的協助
之前曾經提過,做為一名技術型的管理者,有一個關鍵的心理障礙,便是不知道如何將工作分派出去,以致於時常把太多的開發工作攬在自己身上。所以,想要勝任他的工作,以稱職的演出應有的角色,他必須不要涉入專案的具體開發工作過深。

但是,做為技術型的管理者,其實還有另一個關鍵的障礙,就是跟專案的具體開發工作完全脫勾了。這一類的管理者,完全只以WBS以及專案時程表為核心,只關心每一項工作交給了誰去做、何時應完成,或者已經延遲了多久時間、預計還要再延遲多久。

這樣的管理者,就是「用嘴巴寫程式」的管理者,他們只負責分配工作、設定時程,時間到了,再來審查程式人是否已經如期的完成,倘若沒有完成,看是要調派其他的人力協助、或者多施加點壓力,還是採取其他的途徑,以便讓工作盡早完成。

在這樣的工作模式下,管理者和程式人好像分屬在兩個不同的世界,除了專案的進度審查會議外,二者好像沒有太多的關連。這樣的模式,卻也沒有把握到「用嘴巴寫程式」的精神所在。根本原因在於只用嘴巴下指令,卻沒有用嘴巴提供程式人必要的協助。

條件二:
技術及經驗的累積是必要的
在許多時候,程式人之所以要花費許多時間完成他的工作,或者甚至無法完成,那是因為他對工作缺乏方向感。

程式人或許不知道他的工作應當用的技術,或者不知道要完成工作,所應該依序採取的步驟。程式人或許會遭遇到一些狀況,例如,對他來說,根本完全無法理解的問題,而且即使耗費大量的時間,仍舊無法解決,使得進度始終原地踏地。這都是因為缺乏一位知道如何「用嘴巴寫程式」的管理者,為他們指引方向。

一個懂得如何「用嘴巴寫程式」的管理者,會知道如何將整個專案內的工作,畫分成為若干個具體可執行,並且前後連貫的項目。

同時,他也會知道如何挑選正確的人選,執行相對應的工作。更重要的是,他會知道執行某一特定工作的程式人,倘若要完成該工作還缺少的部分,進而在程式人執行工作的過程中,持續提供必要的協助。

由於程式人可能缺乏某些技術背景,管理者最好自己就懂得完成該工作所需的技術,並且在程式人開始執行工作之前,已經完成必要的教育訓練。假若一個工作需要Ajax技術,你總不能讓一個完全不會Ajax的程式人,自行想辦法搞定吧?倘若管理者自己也不熟悉該技術背景,那麼最好也要能建議並提供必要的資源,例如書籍或參考資料,以免讓程式人有如身處茫茫大海中,不知所措。這是許多管理者最常發生的情況。

事實上,管理者最好還是自己也懂得該技術,否則這項工作的風險就很高,因為這意謂著當執行這項工作的程式人,遇到難解的問題時,管理者不知道如何提供解決問題的方向。

這是技術型管理者的重要價值所在──對於技術的熟悉以及長久累積的經驗,管理者早就經歷過各式各樣的問題,這使得他可以「用嘴巴寫程式」寫得很好。

條件三:
要有能力帶領程式人一起開發及除錯
當程式人遇上某個問題,或許花上許久的時間,仍不得解題之門而入。但有經驗的管理者,或許一眼便能看穿問題所在,直指核心。
他或許只需要程式人提供一個錯誤訊息、錯誤代碼,或問題的現象,便可以由過去的經驗,直接建議可能的發生原因。這省去程式人大量的時間。

是的,指引程式人工作的方向,便是「用嘴巴寫程式」最重要的價值。當你在交付一項工作時,應該要讓負責這項工作的程式人,知道完成這項工作的大略步驟。

許多程式人拿到一個工作時,往往只知道終點在何處,卻不知道中間需要經過那些地方。身為「用嘴巴寫程式」的管理者,應當為這樣的程式人提供協助、指引他們,讓他們知道這個工作需要循序漸進完成那些事情。

不論是在正式的專案進度審查會議,或是平日的相處,管理者都應該對程式人的工作保持一定的關心,而不只是注意完成與否,更要了解屬下是否知道怎麼做、要做什麼、有沒有遇上重要的問題,需不需要協助。

如果你是管理者,必要時,可能需要親自下場為程式人寫一段關鍵的程式碼,或者和他一起除錯。你對技術的掌握度以及豐富的經驗,可以為他的工作提供寶貴的助益,同時節省大量的時間。

下過苦功,才能以技術服人
身為「用嘴巴寫程式」的你,不意謂著就可以和技術脫節。

你或許不負責具體程式碼的產出,但卻要為整個程式碼的產生鋪好道路、建好基礎的框架。想要為程式人提供方向、指點迷津,你不僅不能脫離技術,而且要更熟悉技術,特別是對於新技術趨勢的掌握,因為你最好就是團隊中主要決定技術架構的人,而且最好也是主要技能的提供者。

許多人都認為一旦加入「用嘴巴寫程式」的行列時,便可以擺脫撰寫程式碼的勞力工作,但如果你本身未曾在程式設計上下過苦功,建立起深厚的基礎,即使能轉移至管理性的職務,多半也不容易將這樣的工作做好。

一來,因為你無法提供技術性的方向,所以對團隊能貢獻的價值不高。二來,你不容易成為團隊真正的精神領袖,在管理上難以建立一定的權威。程式人某種程度,像是江湖中幫派裡的幫眾,幫主最好武功高強、才德兼備,否則帶領一群臥虎藏龍的弟兄們,恐怕會相當吃力。

作者簡介:
王建興
清華大學資訊工程系的博士研究生,研究興趣包括電腦網路、點對點網路、分散式網路管理、以及行動式代理人,專長則是Internet應用系統的開發。曾參與過的開發專案性質十分廣泛而且不同,從ERP、PC Game到P2P網路電話都在他的涉獵範圍之內。

熱門新聞

Advertisement