l

2013年7月23日 星期二

我無能,所以我加班

July 22 22:20~ July 23 00:08

螢幕快照 2013-07-22 下午11.46.35

畫面節錄自「破壞之王」電影。

 

有一位鄉民告訴Teddy,《笑談軟體工程:敏捷開發法的逆襲》這一本書,他最喜歡的一句話,就是「從此每天準時下班享受幸福人生」。雖然Teddy反對加班,但在這邊Teddy要澄清一下,這句話不是Teddy寫的,而是出版社的編輯在製作封面的時候加上去的。所以,如果讀完書之後鄉民們還是要加班,一概與Teddy無關,請洽出版社挑眉質疑

聽到這位鄉民的回應Teddy突然想起年輕時剛出社會的第一份工作,當時公司接了一個案子,打算找兩位程式設計師,在一年內要用Java開發完成一個intranet-based進銷存系統(當時拉了總公司與門市之間的網路專線,速度只有14.4Kbps嚎啕大哭)。由於公司沒有人懂進銷存系統的domain know-how,於是公司將需求分析工作外包給一位「據說」很懂進銷存系統的有經驗分析師。經過2~3個月之後,該位分析師生出了一本需求分析文件,公司就把這份文件交給代號為A、B的這兩位程式設計師。

又過了一段時間,公司發現這個案子的進度嚴重延遲,而且A君、B君壓力很大,快做不下去了。當時Teddy原本在負責開發另外一個系統,後來不忍同伴受苦,自告奮勇決定跳下來一起開發。

雖然進銷存系統並不算是什麼「高科技」的系統,但是由於當時這個案子夾帶了一些「技術創新」的要求,所以開發起來挑戰還蠻多的。在開發的過程中,團隊成員幾乎每天都加班,Teddy經常都是搭最後一班23:00左右的公車回家。有時候錯過公車,或是加班到1、2點,就只能「自費」搭計程車回家。到後來有好幾次加班太晚,乾脆直接睡在公司裏面(睡在地板上)。

Teddy印象中,這個案子最後上線時間花了將近兩年。公司想要把責任推給客戶一直變更需求,而客戶則是把責任歸咎於開發團隊「經驗不足」,沒有事先幫他們把可能發生的問題都考慮進去(Teddy內心獨白:千金難買早知道啊)。有一段時間雙方關係很緊張,Teddy每次去開會都被對方的總經理(一位女士)質疑經驗與能力不足。當時Teddy尚未練成「嘴砲神功」,雖然不服氣但很多時候也只能把委屈往心裏吞。會議結束之後,唯一能夠做的事情,除了加班,就是…加更多的班。

現在回想起來,當時的Teddy真的是很「水母 無能」。無能者,沒有能力是也。沒有哪些能力?

  • 無能判斷需求分析文件的完整性:剛開始拿到一本厚厚的分析文件的時候,Teddy覺得這位外包的分析師好厲害,可以寫出這麼厚一本的文件。隨著日子一天、一天過去,開發團隊發現,這份文件根本漏洞百出,很多資料一致性,或是跨年度資料處理的問題,甚至連客戶的基本需求,都沒有考慮的很周詳與完整。而這些問題,絕大部分都是到後期系統慢慢成形之後,客戶實際操作試用才被發現。因此,客戶就怪罪程式設計師沒有經驗。程式設計師則是在內心大聲吶喊:難道按照規格寫程式錯了嗎?分析書上面客戶代表也簽名了啊。
  • 無能判斷專案大小:當初專案的費用與時程,完全是公司業務跟客戶談定,根本沒有詢問開發人員的意見(雖然當時問了也可能沒有答案挑眉質疑),就在簽約之後才被告知兩個人要在一年內完成。最後搞得每天加班還做不完,還被老闆、客戶質疑「能力不足」與「經驗不足」。
  • 無能儘早得到客戶的回饋:這幾年帶了幾個敏捷專案之後,兩個禮拜跟客戶見一次面,展示這兩周開發的功能給客戶驗收,已經成了習慣。但是,在當年根本還沒有這樣的作法,專案還是採用waterfall的流程。最後就是一個…慘字。
  • 無能向公司爭取更多資源:因為沒有質疑原本業務承諾的時程到底是否合理,也就只好傻傻地做下去,而沒有要求公司提供合理的資源(公司會不會提供資源是一回事,但身為team leader應該有責任向公司提出要求)。
  • 無能判斷需求優先順序:當初根本沒有所謂的value-driven開發觀念(對客戶價值較高的需求要優先開發),反正分析書上面列出來的所有功能最後一定全部都要做完,對開發人員來講每個功能都一樣重要。在選擇開發順序的時候,通常優先考量的都是有趣、好玩、有挑戰性的技術問題。在這種情況下,對客戶而言比較重要的功能有時反而是在專案中後期才著手開發,因此就算客戶想要先看,也沒有東西可以給他看。
  • 無能逃離「禁閉室」:這種工作環境,當初怎麼沒想到要「塊陶啊」挑眉質疑

***

為什麼採用敏捷方法之後Teddy開始堅信軟體開發團隊不應該加班?因為Teddy曾經過了6~7年常態待在公司加班的日子,但手邊的開發案幾乎沒有一個是準時上線的。當時年幼無知覺得自己很爛,現在回想起來,很多案子根本不應該接。因為很多案子是業務為了業績,用不合成本的報價把案子接下來,最後要擦屁股的都是開發人員。

在不加班的情況下,公司又要可以生存下來,公司高層與開發團隊就要強迫自己專注思考:

  • 公司高層:公司各個部門之間溝通是否順暢,在完成產品的整個value-chain當中,是否有遭遇什麼阻礙(公司文化不良、人為因素、資源問題等)需要排除。
  • 公司高層或產品經理:產品的規格與功能到底有沒有競爭力?還是一開始就注定做白工。
  • 開發人員:在不加班的情況下,如何有效率的運用上班的8小時,作出高品質的產品。

***

Teddy覺得「不加班」,或是說至少做到「不常態加班」,是一種領導人「破釜沉舟」的態度,強迫自己想辦法提升員工的工作效率,並消除工作上不必要的浪費。可能有鄉民會說:「很多公務員也都準時下班啊,可是他們的工作效率還是很爛,私人公司怎麼可以這樣」。私人公司的確是不能跟公家機關一樣,但不一樣的不應該是下班時間,而是「領導、文化、考核、淘汰」等制度。公家機關是鐵飯碗,但私人企業不是。如果有哪一個私人企業,僅僅是因為員工不加班就變成公務人員心態,那麼有問題的不應該是員工,而是 水母 領導者。

***

嚴格講起來,Teddy到現在為止,也算是經常在加班。因為下班時間之後,Teddy還是花很多時間在看書、找資料、規劃新課程、寫部落格。這些事情廣義的來說都和工作有關。但Teddy堅持一個原則,時間到了就要離開公司,下班的時間是我(員工)可以自行運用的時間。我今天想看書,就多看點書。累了,想休息,就多看點海綿寶寶或烏龍派出所挑眉質疑。吃完晚飯想散散步,就出門散散步。散步回家之後有靈感想寫部落格就寫部落,累了想睡覺就睡覺(疑,吃飽睡、睡飽吃,這種行為跟豬有什麼兩樣…不要告訴別人)。

Teddy很幸運,工作就是自己的興趣,因此雖然廣義的每日工時超過8小時,但並不覺得自己在「加班」,只是離開公司後的自我學習。公司中不是每個人的工作都剛好是自己的興趣,也許大部分的人只是需要一份可以溫飽的工作。只要員工在上班時間全心全力工作,而公司在制度上也有計畫地提升每位員工的能力,正常上下班實在不應該被責備。

了解自己的無能,才有機會變得有能。

***

友藏內心獨白:每個公司,都是一個小朝廷。

沒有留言:

張貼留言