軟體開發,就人力資源的角度來看,是一個很特殊的領域。因為每個人生產的量與質,可能存在著極為懸殊的差距。若是從質來看,頂尖的程式人所寫的程式碼,或許平庸之輩窮極一生也無法寫出。倘若撇開品質不談,單從量來比較,優秀的程式人在單位時間的產量,通常也都是平凡程式人的數倍甚至數十倍之多。

以一抵百,常是團隊的靈魂人物
對軟體產業來說,雇用一名超級程式人,通常比起雇用多名尋常程式人的價格效能比,好上許多,即使超級程式人要價不菲,但真要精打細算起來,還是十分划算。

這種情況,好像在武俠小說裡時常看到。武功蓋世的絕世高手,即使遭遇眾人圍攻,通常也都能平安脫困,甚至以寡擊眾。好比在金庸著名小說《天龍八部》中,丐幫幫主喬峰在聚賢莊一役,與百位武林高手大戰便是一例。

軟體產業是一個可以允許個人色彩十分濃厚的產業,也因此成了所謂「英雄文化(Hero Culture)」相當盛行的領域。在這種文化底下,擁有超凡技藝的程式人,成了所謂的「英雄程式人(Hero Programmer)」,而這種人在軟體開發領域中,是一種獨特的角色。

為什麼要稱為「英雄程式人」呢?因為這類程式人,通常在開發團隊中都扮演著英雄的角色,一個人就能抵得過許多人,甚至能做到其他人都做不到的事情。他們在團隊中,時常就成了支撐整個團隊的靈魂人物,因為具備特有的能力,使得他們能負擔起更為吃重的工作。

要成為英雄程式人,不僅是能力上具有做為英雄的資格,同時在心態上也同樣具備做為一名英雄的特質。他們有什麼心理特質呢?那就是一種「以團隊興亡為己任,置個人死生於度外」的精神。英雄程式人通常自己會有一肩挑起開發重擔的責任感,即使日以繼夜地超時工作,焚膏繼晷也在於不惜。


管理這類菁英的難度很高,小心變成一場災難
每個開發團隊的領導者,或許都希望自己的組員中有英雄程式人,因為他們不僅能力卓越,而且還富有責任感。但事實上,管理英雄程式人的難度更高,許多擁有這種人的團隊,時常會發現這其實是災難一場。

怎麼說呢?英雄程式人即使擁有超乎常人的技藝,但終究沒有通天的神力,更不像神話中的英雄那般所向無敵,即使是特洛伊戰爭中,被稱為「希臘第一勇士」的阿基里斯,同樣有著致命的弱點。而在軟體開發中的英雄也不例外,有時反而是悲劇收場。

因為英雄程式人,通常對於自己的能力有著過度的期待,總以為能扭轉開發專案中所遭遇到的劣勢。但是軟體開發專案可能遭遇到許多不利的因素所影響,舉凡人力的流動、時程的緊縮、需求掌握失誤……等。每當這些事件發生時,悲天憫人的英雄,總是會自告奮勇地將各式因事件而多出來的工作,攬在自己身上,以為再超時工作一些,一定能在期限內完成。

這便是英雄程式人對開發專案最常造成的困擾──對自己的過度期待,造成了對專案的過度承諾。

其他包括專案管理者在內的團隊成員,會因為英雄程式人的不凡實力,而相信他對工作的樂觀估計,但他們時常忽略了英雄程式人常常具有的樂觀特質,以及他的估計是建立在以超時工作做為代價的基礎之上。

超時工作是生產力最大的天敵,即使對於英雄程式人來說,通常也不能倖免,而且超時工作對他的傷害似乎更大。因此對時程和工作過度承諾的英雄程式人,就成了專案管理的黑洞,因為他時常認為自己的工作「即將」完成了,在每次的專案審查會議中,總是這麼告訴專案管理者。

但不幸的是,他也總是在工作應完成的期限時,告訴專案管理者即使他如何超時工作,但距離目標仍然為山九仞,尚缺臨門一腳。這對專案管理當然是很大的傷害。

可能弱化其他成員的發展空間
英雄程式人的存在,通常也會弱化團隊中其他成員的份量。這並不是一件好事,因為團隊下的軟體開發是一項群體的活動,我們之所以需要透過分工的方式開發軟體,不單只是為了集眾人之力,而且也為了分散專案可能會遭遇的風險。

而英雄的存在,時常讓工作的分配失去平衡。一旦他們成了專案時程的資源瓶頸(相信我,英雄程式人那種義無反顧的俠義心腸,總是會讓他們成為單一專案,甚至是多個專案下的資源瓶頸),那麼當英雄程式人出了狀況,整個專案(或是多個專案),馬上就會陷入極大的危機。

除此之外,責任過度吃重的英雄程式人,也會淡化其他成員在團隊中的存在感。倘若其他成員覺得自己對於團隊只是可有可無的角色,那麼勢必對於團隊以及專案本身的目標,會缺乏向心力以及認同感,而這對團隊管理來說,也極為不利。

長期來看,英雄程式人過度擴張自己的責任範圍,也同時阻礙了其他人成長的機會。每個人都是同時在工作中,透過歷練來吸取經驗並且從中成長。但是,英雄程式人占據大多數重要的工作,也讓其他成員只能負責一些食之無味、棄之可惜的工作,無形中喪失了許多從工作中獲得技能成長能力的機會。

或許英雄程式人能解專案一時燃眉之急,但是越倚重他們,天平就越向他們傾斜,最後團隊成員都成了跑龍套的角色。一旦演變成這樣的局面,這些成員多半就會紛紛掛冠求去了。

當英雄身兼專案管理者,切勿身陷技術工作而忽略管理
最糟的情況是,專案管理者本身就是該專案的英雄程式人。這在技術職與管理職分際不甚清楚的臺灣軟體界時常發生。

英雄程式人技術能力出眾,往往會被拔擢成為團隊的領導者或專案管理者。而身兼專案管理者的英雄程式人,最常犯的毛病便是讓自己扛起整個專案的成敗,將大多數關鍵的工作,都指派給自己。

這不僅會引發上述英雄程式人種種的負面效應,更糟的是,管理者身陷在技術開發工作中,將使自己見樹而不見林,只看到自己眼見待解的技術工作,而忽略了更需要全面關注的管理工作。

身為專案管理者,其實有著更重要的工作,便是站在巨觀的位置上,觀察整個專案進行的狀態,並且從中進行控制及管理。但埋首於開發工作的管理者,又豈有餘暇對此多加施力呢?

技藝高超的程式人,應促進其他成員一同成長
如果你是英雄程式人,請不要過度發揮自己的英雄感,更不要過度承諾,以避開超時工作的陷阱,才能讓你自己貢獻最大的戰力。與其埋頭苦幹,不如利用多餘的時間,騰出手來,傳授其他成員你獨到的技藝,促進他們和你一同成長,也能讓團隊整體的戰力更為增強。

如果你正管理著擁有英雄程式人的開發團隊,那麼請不要過度倚賴英雄程式人,更別讓他成為專案中的資源瓶頸。盡可能地將他的工作分散到其他人身上,讓他發揮真正關鍵的效用。若有可能,盡量讓英雄程式人輔助其他人工作,這麼一來,便能增加技術知識在團隊中流動的可能性。

如果,你是英雄程式人身兼團隊管理者,那麼,請不要寫程式,專注在專案的管理工作吧!

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

熱門新聞

Advertisement