承接大型專案的兩難

隨著公司業務年年增長,公司的人也越來越多,相對的管銷與薪資成本自然也逐年攀升,如果還座小型專案,恐怕無法應付公司的現金流量需求,所以公司也開始出現越來越多百萬等級的專案。不過,越大的專案越難結案,製作過程中遇到的困難與挑戰不小,需求變動的幅度也更大,所以公司內部自然也會不斷累積負面情緒,打擊公司士氣。但公司不接大案子將會無法應付公司管銷,這真的是一件非常糾結的事。

圖片來源 http://sucai.zcool.com.cn/index.do

我們從 2008 年開始,因為公司轉向微軟開發技術一些時間,累積了一些經驗,再搭配自己經營部落格多年,有越來越多客戶主動找上我們,而大部分的客戶正好就是以微軟平台為主,所以不謀而合。在台灣,微軟的作業系統市佔率超過 9 成,這是一塊很大的餅,但以前玩 PHP 的時候,完全不覺得這有什麼,只覺得 Windows 能做到的,Linux 也能做到,光只想著要省錢與玩技術,都沒想到做生意要看整體,不能單只看一個地方。

在台灣雖然以中小企業為大宗,但也有不少中型與大型的企業,慢慢的也跟我們公司建立起連結,讓我們有機會為他們服務。我們公司多年以來大多以服務與技術為訴求,靠著口碑一個介紹一個客戶,並建立起品質信譽,所以才能逐年穩定成長。以前常有人問我「當公司有越來越多工程師的時候,你怎樣維持公司的程式碼品質」,靠的是什麼獨特的開發流程?還是什麼好用工具?爾或是其他因素?

我必須很老實的告訴各位,品質是用時間換出來的。記得有次有個客戶在晚上 12 點的時候找我聊天,問我怎麼管理公司的程式碼品質。我跟他說「我現在正在做 Code Review 檢查底下工程師寫的程式碼品質」,遇到不好的寫法,就發信叫工程師改。剛轉 ASP.NET 的前幾年,幾乎都是這樣渡過的,沒有什麼神奇的銀子彈,就是花心思下去看、下去改,如此而已。難道就沒有好用的工具或開發流程可以改善品質嗎?有,當然有,但沒有品質的意識,在好的工具在你手裡,你還是不會用。大多數工程師都只想趕快做完工作後下班,要讓大家願意為品質做出 110 分的努力是不切實際的,但這件事總要有人做,才能撐起一間公司的品牌,很自然的,這就淪為我閒暇之餘的工作了。

做什麼生意都一樣,品質永遠要擺在第一位。只要品質能維持在一定水平之上,公司就能穩定成長,沒什麼好擔心的,尤其是軟體這個行業更是如此。很多人經常抱怨「好廠商難找」,確實是如此,因為選擇軟體廠商的成本很高,轉換廠商的成本也很高,所以遇到「不會太差」的廠商,通常不會隨意更換,勉強點用,但這件事並不是所有老闆或公司高層都知道,所以隱含付出了許多無形成本。

也因為多年累積了口碑,客戶越來越大,需求也越來越複雜,相對網站與軟體的變動性也就變多。這一點,並不是所有工程師都能接受,脾氣好的人或許忍一忍就過去了,但情緒多少會有點累積。脾氣不好的人就會開始抱怨,抱怨客戶為什麼要提這種奇怪的需求,明明不合理,又要我們硬做,做了一段時間,又叫我們改回來,實在氣人啊;抱怨PM,抱怨客戶說什麼你都答應,你是豬嗎;抱怨公司,抱怨這間公司真是個血汗工廠,經常為了客戶的需求趕到晚上九點十點。

身為一個經營者,這是個很兩難的決定。若只願意接小案子,公司賺不到錢,薪水與獎金也發不多;若開始承接大專案,就要擔心每做完一個案子就有一批人要離職的事實,嚴重者可能是案子還沒做完人就跑光了。無論怎麼做,都不會有漂亮的答案出現,所以勢必要在這兩難中間找出一些平衡點才行,我也是跌跌撞撞了很久才慢慢找出這個複雜的平衡點。

我後來想想,專案開發的過程,遇到最多的問題並不在技術,而是在「溝通」。無論大案子、小案子,會遇到的溝通問題其實差不多,不就是需求變更、時程太短、遇到暴走族的客戶還有最常見的情緒問題,主要的問題大概就這些。與其這樣,你會傾向選擇承接大型專案還是小型專案呢?這個答案應該是明確的,當然是「大型專案」。但專案開發過程中的「副作用」就必須靠一些機制來「改善」。

沒錯,是「改善」,不是「解決」。因為有些事情是解決不了的,尤其是人的問題,你要等別人改變,倒不如自己先改,才能適應這個艱困的環境,適應不了,那也就只好黯然下台。當公司的定位確定後,我便開始研究各種改善「副作用」的方法,例如需求變更的問題,透過前期企劃人員來限縮專案的範疇,大幅降低需求異動的幅度。時程太短的問題,其實每個客戶都是這樣,你只要問客戶「你什麼時候要上線?」這幾乎只有一個標準答案「越快越好」,不是嗎!遇到暴走族的客戶,你還能怎麼辦?只能放下尊嚴讓他罵囉,我有次去客戶端開會,被臭罵 30 分鐘,回來還是開心的有說有笑,雖然我失去了 30 分鐘的尊嚴,但更不想失去未來 3 個小時可以開心的情緒,這是你可以控制的!但叔叔有練過,小朋友要再加油!XD

最後,也最難搞的,就是情緒管理問題。在一間公司裡,由於每個人因為生活背景不同,價值觀也不同,對每一件事情的見解也不盡相同,所以當專案遇到不合理或不合邏輯的情況時,身為IT人往往會強烈抗拒,有些人強力抗拒在心中、有些人強力在表現的事情上。這確實是個難解的難題,我最後則是盡量讓他們不要把工作的焦點放在「專案」上,而是「學習」上。因為專案開發是幫助一個人學習成長最快的方式,雖然副作用很多,但我唯一能做的,是幫助他們專注在自己想得到事情上面,而不是他們不想面對的那些副作用。當你能夠專注於正面的事情,心情上自然會舒緩很多,進一步壓下那些專案製作過程中的負面情緒,而這,就是「正面思考」的力量。

Last updated