問題一
關於專案成員的「價值」和「位階」:可能是由於我定性和定力不足,這幾年換了不少軟體公司工作。包括朋友的經驗在內, 眾多軟體公司常常把 programmer, system designer, system analyst, project manager (PM) 的歷程視為「升官」。
從其它角色轉到 PM 叫升官我還能夠認同,畢竟是從執行自己的工作轉變成協調眾人齊心協力共事。但是,為什麼 system designer 就會比 programmer 大(或者領的薪水多),而 system analyst 就一定比 system designer 大(或對公司來說更有價值)呢?
本來一句「約定俗成」就可以回應這則提問。不過,為了多騙點稿費,我還是喜歡把它拉大一點來看。對一位有執行力的主管來說,他是會為旗下員工找到適合他/她發揮所長的崗位;而對一般的人力資源經理來說,他/她是會為一個職位訂定一堆技能條款然後找人來填充。當企業的規模愈大,需要「找人來填」的戲碼便會愈演愈烈(仙按:部門壯大才可爭取多點資源,在公司的發言權也會多一點....標準的現代管理惡性循環),冗員也自然會與日俱增。
記得老仙畢業後的第一份工作有幸接觸很多外國人,有一次一家著名的外國企業的總經理和總工程師到廠巡視,看看日後是否有合作商機。期間總工程師和老仙言談甚歡,還說哪天我訪美時可以坐坐他駕的小型飛機,而一旁的總經理對他恭敬有嘉,顯然易見的是他在公司的地位遠遠在總經理之上,而歐美等地的工程師們的受到一定的尊重,他們的出路也不一定要往專業經理人的方向發展。(仙按:專業經理和工程鑽研有著顯注的不同是一套工程理論可以放諸四海皆準,而管理知識嘛,因人而異,沒有既定法則可循,說它是一門藝術是不為過。)
然而今天華人企業全面西化管治的情況下,我們的工程師的地位不升反降,而所謂經理/主管的名堂卻林林總總,無不以此引以為樂。
IT界的現象只是社會的一角縮影,沒有什麼好奇怪。當你工作年資漸增,「理論上」工資也會隨之上升,無論是公司為了讓你所得有個更「合適」的解釋;抑或是你希望有個更響亮的名堂來方便他日跳槽也罷,單純的工程師或是資深工程師已經不夠混了,彼此都樂得起個不一樣的名號出來。至於實力嘛,就不見得有一定關聯了。
不過話說回來,原先「虛擬」這些名號出來時或許真的本著「良善的意願」,軟體從業員起步當然是程式設計員(programmer),因為你沒有經驗,學校學的十之八九在職場是用不上的,叫你programmer而不是學徒已經很給面子了。到了你累積一定經驗,別人交付的事情和責任都可以一肩擔起來,資深或是設計師的名堂自是當之無愧。到你年資再長,除了自身責任之外,還負起系統研究、設計、模組化、以至責任分配等工作時,單是資深兩個字就不足以論功行賞了,故有系統分析師的產生;但是近年流行的專案經理,說得明確一點是因為企業管理文化之變遷,從前由個別部門主管的事情如今變成以不同部門的同事以專案形式合力完成,為了易於掌控進度和預算等事宜,專案經經遂應運而生,他/她不一定專精於軟體技術,所以你說升官,恐怕不一定是實情,有時候這個位置正正是背黑鍋的熱門人選。(註:按老仙定義,系統分析師應該是技術最全面的團員,而資深的工程師應該是某領域上最厲害的人物,而專案經理嘛,只是一位名堂最大的雜役而已。)
至於其他像analyst programmer,system achitecture, software specialist等等,更是不一而足,你要是把他們扯上什麼「價值」與「位階」的論述,恐怕只是自尋煩惱,軟體從業員還是努力幹多一點實事,學到的技術與經驗才真的是你擁有的東西,將來自有適當的回報。(註:老仙先前的小公司,團隊運作簡單不過,事情分配妥當後,老仙一概不理,而名稱嘛,我叫他們自己說想當什麼我就給什麼,反正方便他們日後找工作的話,我都沒有問題。哈哈,多簡單!)
問題二
我待過一些軟體公司,以及接觸過的「將資訊軟體外包」的公司,普遍上有一個觀念叫做「bug free」,意思是,bug 是 programmer 自己生的,所以,萬一有 bug 發生,由 programmer 自行找時間處理(意思是要自動自發地加班修補)。但我好奇的是,隨著在軟體業擔任的角色開始不同,我發現, 有些所謂的 bug其實發生在 system analysis 或 system design 的過程中,不過解決方法最終還是要回到 programmer 手上。 所以,我的感覺是 bug free 似乎是在「欺壓」programmer,更何況,我似乎沒有見過寫完之後沒有 bug 的程式(至少我天資平凡,沒有寫過那麼完美的作品),原因可能來自於規格不完整、或測試的範圍不夠(如果測試時間沒有被業務或專案經理給壓縮殆盡的話)。我個人是認為這樣的觀念並不合理,請問是因為我的思維太過於工程師導向,沒有注重管理面的要素,還是什麼原因呢?
這位讀者可能真的太年輕了,幹這一行的打從第一天工作開始便被欺壓了,這有什麼稀奇呢?軟體業從業員的工資不比其他行業高,為什麼入行當天就沒有「超時補水」(註:補水者加給也,如果把加給overtime pay連同工時一起算,我猜programmer的時薪恐怕是數一數二的低。)?真的要怪的話,就怪你入錯行好了。
如果你來不及學習新技能來轉換就業階梯、或是你對軟體編程仍充滿熱誠、又或是你壯志未酬,深信下一個楊致遠將會是閣下的話,老仙的淺見是「吃虧也是另類的撿便宜」。 IT產業千真萬確的出了很多年青才俊,坐擁千萬家財(仙按:心理病者也為數不少);這年頭資訊界的機會也的確比其他行業來得多,正因為這些誘因才會吸引那麼多年輕人甘於徹夜不眠地對著小螢幕「捉蟲」。
至於蟲從何處來,相信業者最清楚不過。就如你說的,當初系統設計時某些假設出了毛病、或是一廂情願地錯估了客戶的需求、或是系統測試做得太馬虎、或是程式設計師不小心犯錯、又或是付鈔的財大氣粗,硬是中途修改系統規格、當然有時候是某些「善長仁翁」無緣無故地覺得多送些附加功能給客戶會換來贊賞也會給專案帶來額外的負擔(註:在專案管理上我們稱這種行為是給專案鍍金Gold-Plating,無論結果是進度順暢且預算控制得宜,老美都定義這個專案是不成功的案例,專案成員是不可不知的。) 凡此種種,都是培養「肥蟲」的良方妙藥,然而不管成因若何,最終還得由程式設計師來修橋補漏,再不公平程式碼都得有人來幹,不管肇事者會不會勇敢地跑在人前認錯,好歹把它當成一種鍛鍊就是了。
只要你記取今天的教訓,他日當你當上主管時,不會把同樣的包袱轉嫁到你的下屬,我們的業界才有望向前邁進。至於經驗的累積,技能的提升,只能在不斷觀摩高手們的程式碼和實戰中鍛鍊出來的,一覺醒來就能頓悟,寫出0錯誤的程式碼,天底下恐怕沒有幾人。吃下眼前的小虧而為他日打下穩固的基礎,何樂而不為?
註1:如果年輕讀者真的想在編程上有所成就,老仙建議諸公不妨細閱一本叫Writing Solid Code的書。老仙20年業界生涯裡,幾近0錯誤的程式碼是有碰到過的,寫的人正是比老仙年輕卻帶領老仙入行啟蒙好友,我和他寫下2MB大小的源碼系統,91年面世時就已經備妥解決千年蟲的問題,4年來客戶都沒有過一個錯誤回報,若不是他因癌病逝,老仙今天可能還是過著拿起老花眼鏡對著螢光幕捉蟲的日子。
註2:近年歐美等地的軟體業者已經回復朝8晚4的正常上班日子(有的朝7午3、有的不必到公司上班,因為他們相信清晨有助程式員編程),要他們加班恐怕不易了;而週五的禮服日正好讓他們在矽谷多參加交際應酬活動,早日結束王老五生涯,順便和基金經理打打交道。不過這樣的光景恐怕短期內不會在華人的軟體業界出現,畢竟我們的老闆在全面西化時是有選擇性的。
作者現任國際專案管理組織大中華地區分會副會長、IT公司顧問暨專案管理課程(CPM及PMP)培訓師,擁有CPM及PMP證照,歷任不同IT領域管理職,有過IPO的實戰經驗,並曾位居香港兩間上市科技公司的管理層,文章並見於部落格。目前旅居海外,自稱已半隻腳離開科技界,成功一點都談不上,反而戰敗經驗無數,有任何意見或疑問,請以電子郵件與老仙聯絡。
25.Michael 於 2008/04/22 08:41 回應
每次看大仙談論軟體專案的管理 總如醍醐灌頂 深嚼其文字更覺滋味 當人的歷練不到位時還不知老仙的blog都是經驗談哪24.匿名 於 2007/12/06 23:59 回應
我倒是好奇,用數理來証明程式bug存不存在怎麼做? 這個東西提了那麼多次,可是沒見個影,沒人好奇嗎?請知道的人來分享些資料吧23.大仙 於 2007/12/02 22:07 回應
對於沒有意義的狡辯,老仙無意回應。至於這位匿名君的理解,謝謝指正,不過:1) 我寫的都只是事實,沒什麼好掩飾,是口頭禪也好,是贅詞也罷,老仙看不出名諱與文章的價值應具有必然之關係。
2) 如無必要,老仙不會再談私務。
3) PMP雖然與IT有相當密切關係,不過PMI已經盡量令知識範疇獨立於各行各業,是IT人與否,並不重要。
4) 能否外行管內行?在於一個"管"字,懂得管理技巧以及能誠以待人者,我深信他/她定能立足於天下。
5) 信心不必由他人給予的,最重要是你必須清楚自己的位置與能力在那裡。
22.匿名 於 2007/12/02 13:34 回應
看了一下大仙兄的文章,有幾個口頭禪有趣1. 我已離開了業界一段日子
2. 我是義務工作者
3. 已不涉業內運作多時
4. 我不是名人
5. CNET舞台不是我的
6. 跟業界無關也不專業
...
問題是談論的是業界的事務,職務與業界事務相關 頭銜與業界相關...那麼為何每每都要在後面補上一句,我跟業界無關且已離開多時...這類的贅詞? 看來,可能是不太滿意你的名諱與資訊業界有所牽連,那麼談論這個圈子的事務是否有點不務正業?有信心一點阿!對敘事應該抱持我說的都跟我有關的心態,不是嘛! 這樣;才不枉你在這裡開設名家專欄,CNET 是把你的文章放在名家專欄,那麼如果你不是名家,不是CNET 呼弄讀者,就是你呼弄讀者?沒人質疑你能不能當副會長,但是如果你是; 而且你想回答,你應該告訴別人為什麼你是,而不是退一步告訴別人,我是義務職;所以沒有責任...要對自己有信心一點阿! 對自己的產品(文章)沒信心,會很難結案阿...
21.匿名 於 2007/12/01 00:05 回應
品質的意義是? 「但凡証明不了沒有的便可以推定一定有」,那麼這話可以推斷成沒有? 一個無法推斷 有沒有的東西,該怎麼檢驗他的品質? 事實上在這討論的過程;有一個小小的問題,是不是 不是朋友便是敵人? 即時你把一個觀點與你不一致的人冷潮熱奉成敵人,也不能改變事實上妳對科學的無知,不要用言辭辯論的輸贏來踐踏科學,好嗎?既然你也承認自己沒有學術背景,那麼當你還沒請示你的朋友時;你之前充滿堅定的立論基礎是什麼?這好像非常矛盾,如果我們倒退2萬步來看這件事,至少你在問過教授後,才是發自內心的理解你自己在講的東西什麼?總不會每回一次文章就請示一下別人吧! 既然你願意相信專業,那麼為何你只選擇你願意相信的說法來相信? 這不是科學的討論,事實上用個人好惡來評斷科學,已偏離科學;為何還事事以科學來敘事?
算了;反正逞口舌之快在科學上沒有任何意義,我繼續做我的研究,你繼續唬X你的想法(這是你自己說的,因為你說你沒有理論基礎,所以當說到科學;我們只能當你是唬X)
20.匿名 於 2007/11/30 23:45 回應
請看清楚前文寫的是 "用數學導証程式一定有bug一語" ? 沒看清楚命題就去問別人,然後把別人給的答案,拿去驗證這個錯誤的前提;那麼這是誰的錯誤?19.大仙 於 2007/11/19 10:14 回應
沒有意思和別人比高下,也離開了業界一段日子,只是觀念錯了必須糾正。好像說什麼可以用數學導証程式一定有bug一語,一聽就覺得有問題,只是學術根基不好,不便回應。最近向一些學者教授求證,才發現老仙理解無誤,當真有這能耐,sonet君當可拿諾貝爾數學大獎了。這種錯判不外是基於他那套「但凡証明不了沒有的便可以推定一定有」的邏輯上,實在令人憂慮,若當今的程式設計師都用相同的邏輯行事,想有好一點的系統出來無疑是緣木求魚。至於老仙本就不打算繼續網誌上的紀事,不過既然興幸有一位讀者,那只好繼續吧,有空定會再整理回憶,補述出來。
18.Will 於 2007/11/17 06:01 回應
大仙兄小小建議,別跟一些你無法溝通的人浪費時間了,
你的文章還有很多人想看,
小弟我還在等你的際遇續集呢。