程序員故事:沒有免費的午餐
我們總想著花最少的錢辦最多的事情,這本是一件很正確的觀念,但如果花的錢明顯少到不合理,那辦出的事情也就有可能會狠打幾個折扣。
所謂沒有免費的午餐,或許就是如此了。
那是剛參加工作的前幾個年頭,公司用戶的需求越來越多,軟件要求也越來越復雜,我們那幾個內部程序員已經明顯不夠用,花錢請外面的軟件公司來幫忙做軟件已經成為刻不容緩的一件事情。很榮幸,我成為部門成立以來***個真正意義上的項目經理。
那是公司生產部的一個軟件項目,主要用來對制造產品所需的一些材料和配件信息進行管理,生產部的李部長和我們信息部的趙部長關系很熟,再加上這個項目的規模比較適中,所以兩位領導一拍即合,決定拿它試水軟件外包。外請的軟件公司在我們業內口碑不錯,帶隊的周經理也幫其他單位做過類似軟件,所以大家也都覺得這是一個注定要成功的項目。
周經理是個技術型的程序員,戴著一副黑框眼鏡,每天上下班都會背著一個雙肩包,里面裝著筆記本電腦,非常典型的程序員形象。而我也是剛從程序員向項目經理的方向轉變。初步了解用戶的需求之后,我們兩個人從技術角度分析了一下,覺得和之前在其他單位做的軟件相比,只是一些流程細節上的不同,其他都是類似,沒有什么難點,便信心滿滿的做了一份為期6個月的計劃方案。
兩位領導對這個計劃也很滿意,尤其是李部長還把手下不同專業組的幾個業務骨干也調派了過來,要求他們每天要抽出一定的時間參與軟件需求訪談和測試驗證的一些工作。
看起來是一個不錯的開端。
在對各個專業組進行深入訪談后,感覺遇到了點小麻煩。因為與之前簡單了解的情況相比,實際的業務要比我們想象的更為復雜一點,并且和之前周經理做過的那款軟件的差異點也不是想象的那么簡單。
后來軟件項目做的多了,也就慢慢的習慣了這種現象。平時用戶的生產和工作任務都很繁忙,軟件項目沒有正式啟動時,用戶也不會投入那么多的精力和我們進行深入的交流。等到項目正式開始后,用戶會作為項目組成員加入團隊,大家每天在一起溝通和交流,問題越討論越細致,之前很多沒有想到的一些需求會在這個時候顯露出來。
不過當時我還是沒有完全適應這種情況,周經理畢竟是在外面見過世面的,告訴我其實他在制定方案的時候也預留了一些工作量,增加的這些需求都在意料之中了,所以也不用太過擔心會延期。
兩個多月后,項目組完成了設計說明書的編制,我和周經理便約李部長進行了一次階段性的工作匯報。看了我們展示的成果和設計方案,李部長表示很滿意。
會中李部長問周經理:“小周,我這邊還有一兩個簡單的流程,你看好做不。”
聽完李部長的簡單功能介紹之后,周經理很爽快地說:“這個簡單,我們可以順便幫一起做一下。”
我也覺得就幾天的工作量,問題不大。
這種單純從技術角度考慮問題的方法,其實在后來的日子里也繼續影響了我很久。因為技術出身,聽到需求后便立馬會去考慮解決方案,然后腦海中就會浮現出數據庫怎么設計,流程怎么走,怎么部署之類的想法,其實這是非常錯誤的。現實世界的具體任務,永遠比想象的要復雜的很多。
同樣是技術出身的周經理顯然也犯了類似錯誤,和我一樣只看到了表面簡單的功能,至于背后還有什么其他復雜的羅輯,則完全沒有意識到。
領導有吩咐,屬下的幾個參與項目組的關鍵用戶自然就要很盡心盡力。領會到李部長的精神之后,他們便對那幾個簡單的流程進行了分析。很多事情就是這樣,一旦深入考慮,就會能發現更多的東西。
后來幾個關鍵用戶拿出了一份詳細的需求書,不得不說這些業務骨干還是很有一些水平的,幾個看似簡單的流程經過分析之后,不但功能更加強大,還和之前的設計的那些功能關聯了起來,相當于形成了一個閉環。
新的需求擺在那里,我心里犯了難。雖然我并沒有很多項目經理的經驗,但從技術角度來看,新增的內容的確是太龐大了,甚至都可以單獨再做一個類似的項目,這么大的投入軟件公司愿不愿意免費幫我們去做,這是個很大的疑問。
李部長也沒有想到需求會變得這么復雜,但看起來的確比之前更具有吸引力,但公司預算考核的比較嚴,合同變更的路誰都不想走。該怎么辦?坐在趙部長的辦公室里,看著他們吞云吐霧的抽了一根又一根的香煙后,趙部長覺得,我們應該逼軟件公司一下,激發一下他們的潛力。
“告訴他們,公司后面還會有好多軟件項目可以做,不愁沒有錢賺的。再說了,既然我們的錢已經花出去了,當然是要讓乙方能做多少做多少。”趙部長對我說。
過程倒也不曲折,考慮到我們這這家軟件公司的母公司在其他領域有著很多合作,軟件公司的老總親自來和趙部長交流了一次之后,新的需求便加到了項目中。
因為沒有更多的經費,雖然工作量增加了一倍,但人員卻沒有增加那么多。我和周經理有點焦頭爛額了,之前只要把核心的業務做好就行,而現在每天我們都要和好幾個專業組的人交流,討論各種細節,之前做好的設計還要因為新的因素重新考慮。
本來6個月完成的軟件,做了滿滿一年才勉強上線。但由于中間的反復波折太多,整個軟件做的算是千瘡百孔,用戶使用的時候也常常是怨聲載道。甚至有幾個當時考慮地很***的功能,實際卻由于設計的過于復雜而沒有用起來。
總體來說,這是一個失敗的項目。周經理由于天天被關鍵用戶折磨,反而把用戶的業務羅輯搞得很透徹,后來去了一家更大的軟件公司做了咨詢顧問,工資翻了一番。我也痛下決心,考取了項目管理的高級認證,建立了項目管理制度。
范圍管理是影響軟件項目管理的核心要素之一。
翻看一下失敗軟件項目的案例,就會發現很多原因就是因為范圍管理失控,有的甚至是完全沒有范圍管理。
我們常常想著盡可能獲取更多,豈不知這邊賺了便宜,那邊就有可能加倍的還回來。
世上并沒有免費的午餐!