2、三五個人十來條槍 如何成為開發正規軍(二)
上一次,寫了一篇文章《三五個人十來條槍 如何走出軟件作坊成為開發正規軍》,反響異常激烈。
我的一個朋友也看到了我的博文,他是做某個行業企業管理軟件的。他說:你這個方法,在我從事的行業不適用。
我對他從事的那個信息化的行業還是有一定了解的。
他們的實施模式是:
一個實施項目,大約50萬的簽單額,做完驗收后給最后的20%-30%的尾款。
他們是一家小公司,為了多做項目多賺錢(企業都希望利潤保持的很高,如果毛利低,做軟件就不合適了,受的苦和壓力和不規律性比其他行業多的多),所以一個項目只派一個人去,而這個人需要培訓、輔助導入舊系統數據、清洗合并數據、規范化數據、報表制作、需求協調、推動切換上線、現場運行監控、個性化定制修改代碼。
如果不能推動客戶上線,就無法驗收結項。不結項,就無法去追尾款。
一個項目這個人,身兼項目經理、開發員、需求調研、軟件設計、功能測試、實施培訓、定制化開發,還有時候寫培訓文檔。因為公司里都是這樣的人,根本沒有分工出專門的文檔人員,所以產品根本沒有培訓手冊和幫助手冊。除非客戶必須要,這個項目的這個人才寫一份草稿應付。而公司又沒有人來做文檔管理工作,所以各個項目各個人寫,也沒有人合并,也沒有人來統一收集。每個文檔都在項目每個人的移動硬盤里。
由于項目就老哥一個人全活兒,所以自己答應了客戶修改什么需求就自己修改,根本沒有啥需求調研方法和版本管理方法,就看這個老哥和客戶之間的博弈了。每個項目一套源代碼,而且都在各個項目的各個人手里。返回公司后,往公司的服務器上一扔做個備份。以后誰的項目出了問題或需求,就誰負責繼續修改。但是,很有可能這個人已經在做其他項目了,還需要修改前幾個項目的需求或BUG,還需要接聽前幾個項目的支持電話。如果這個老哥是在頂不住壓力和焦慮而跑路了,只能把這些所有的活交給現存活的人的手里,啥也沒有。無法交接也得交接,反正人要跳槽。
由于每個人都是這樣一人擋一攤或數攤項目,而且項目周期長,每個項目都需要2-3個月的時間。老板也想把公司做大,但是每個項目能去實施的人,要求都非常的高,新人來了一年也上不了前線干不了活。所以,對招新人也是不愿意招,干花錢沒見起作用,小公司培養不起人。而對項目游刃有余的人,都是跑單幫跑慣了,帶著個新人,還干不了活,還浪費出差費用,真是氣死人了,還不如自己親自動手三下五除二搞定爽。
于是,公司五六年了也就那么大規模,老板員工都干的很辛苦,當然老板得到的錢要多一些,賺個500多萬沒啥問題,自己后半輩子算是有靠了。所以,老板也得過且過,反正現在賺錢速度已經比較滿足了,這樣也熟練習慣了,經驗路徑依賴,就這樣順坡下驢做吧。
我的朋友是個理想和現實總是不斷沖突的人。一方面,他確實想把項目做的很是順暢,另一方面,他卻覺得一切都像是被各種因素牽扯,根本無法轉變模式,于是只能認命繼續現在。
我說,你這種情況其實在中國很普遍。中國大部分軟件公司都是從事行業信息化,因為這塊技術難度最低,而且只要有人脈關系就可以做銷售開干。而很多軟件公司的成立,就是由于老板有一個關系,接到了某個項目,于是拉住了某個客戶,小活不斷,于是成立了公司。這是很多老板成立公司的原因。既然這類公司成立就沒有目標,其目的就是認識幾個人多拉一些項目多賺一些錢,所以如何復制模式,他們其實關注性也不大。原因很明白,就是自己不認識的客戶,要想打入這個單子,很難,每個客戶廟前都有N多關系戶。對于自己有關系的客戶,也就那么多個,有多大關系就能做多大的攤子,那就盡量從現有客戶中持續做項目。維護好客戶關系是最重要的。這類模式非常常見,并不是你這個行業特殊。
老板的生活已經趨向于小康穩定,而你呢?你還在掙工資。你也在一線客戶那里天天呆著,要么你把老板的客戶搶過來你做,要么為了你自己工作能輕快些,你必須自己給自己找方法。
我的朋友說,搶過來不可能。自己雖然天天在第一線和客戶天天在一起,關系也處的不錯。但現在人先認的是錢,后認的是感情。而老板給他們這幫人都持續吃喝玩樂送東西分回扣,自己只是一個干苦力的。自己只能找方法。但你說的方法是針對一個公司的變革,不是針對我個人而言的,所以不適用。我想有一個方法能幫助我自己的方法,你幫我想想。
我想了想我過去寫過的文章,確實是,自己一直從事職業經理人操盤產品研發管理,也統管咨詢、實施、培訓、支持,但都是在公司管理的層面上看問題分析問題解決問題,而沒有從一個個體上去思考。而中國,大量像我這樣的朋友,他們需要幫助,而我寫的卻是公司層面的,無法幫助他們,所以他們老說我的文章空洞、理想。
我說,咱們倆一起分析解決。也是給大量像我朋友這樣辛苦的人帶個福音。
咱們首先先說一下你想達到什么效果。
我朋友說:我現在在這里待的很煩,出差時間太長了,我就想早點回家。
那你什么地方費時間了,需要2-3個月在客戶現場?
我朋友說: 嗯,我看完你的那篇文章,我也做了一下反思和總結。我感覺有三個方面特別費時間:客戶需求,數據準備,報表制作。
一去客戶那里,你是見不到客戶老板的,也是看不到用戶的,你主要面對的是客戶信息科的人。他們一開始要求你先做演示,看看是否符合他們本企業使用。在這個演示過程中,就不斷提出需求讓你修改。而且,你不修改完,他們沒法接受你以下的演示,說想象不出后來的樣子,對著你畫的界面圖想象以后的功能變化,有點紙上談兵的感覺。而且,往往演示的時候必須信息科科長在,否則底下的科員都做不了主,演示了也是白演示。而信息科科長卻老不在。而他們上班時間也極為規律,該下班時立馬下班,根本不加班。所以邊演示變修改再邊演示。好容易修改完了,也演示完了,時間一倆個星期就過去了。
信息科算是通過了,就需要錄入基礎數據了。問題又來了。現在大部門企業都已經上過一套軟件了,可能是Foxpro的,也可能是PB的。人家要求你把數據倒進新系統中,但是一看過去的數據,都亂七八糟的,過去上線都是沒經驗,后來也用的亂了,積腋成疾了。現在要導入,真是要把垃圾輸入,得出來的也是垃圾。你苦口婆心的說服讓他們重新錄入,但是他們一看都好幾千條,不想錄入,讓你能導多少導多少,然后在基礎上再維護。這一松口不要緊,你不僅忙活了一個多星期寫各種SQL導數據,而且往往舊系統也沒有文檔,數據結構需要你自己理解,理解有誤也是你的事。好容易導完了,再維護,發現數據是通過SQL導入的,在界面上卻不能維護,因為很多校驗都是寫死在程序里的,而不是約束在數據庫。磕磕碰碰,自己邊后臺修改數據,邊讓他們信息科維護。他們信息科首先先檢驗導進去的數據對不對,沒有填寫齊的字段填寫齊。然后把沒有導進去的數據錄入進去。然后再打印出來,統一對一遍,看看哪些數據錄入的有錯誤。這樣折騰,一個月,22天工作日就過去了,用戶還沒培訓呢。
第二個月開始用戶培訓了,但一培訓就發現了問題。用戶的需求和信息科所的需求,根本不是一碼事。原來一個企業,信息科也和業務科室是兩張皮,就和在軟件公司一樣,開發部和銷售部是兩張皮。于是,用戶和信息科開始吵架,各說各的道理,誰都在維護自己的利益。而且用戶部門有業務在身,也不可能天天大部分時間泡在IT討論上面,開會不來人,或者要來人也來了個小兵充數,根本起不了決定,還提自己的意見,過幾天開會,用戶部門的主任來開會,又把需求再推翻。業務部門主任是站在主任的層次上看IT管理, 而業務部門科員是站在自己輕松使用的角度上提需求,而信息科是為了自己以后維護著想。不斷的討論不斷的推翻不斷的扯皮。
討論扯皮推翻再討論再修改。終于消停了。開始培訓了。但問題來了,用戶上機一操作,發現基礎數據很多不是平常現實那樣的。計算機數據過去就和現實數據脫離了,現在想借新系統上線再回到計算機管理上。于是,一邊培訓一邊修改數據,有人報告數據錯誤就修改。而培訓沒有文檔,培訓也沒有課程,培訓也沒有專業訓練。培訓如何層層開展,培訓如何組織,都不知道。反正就老哥一個被訂在這里了,只能這么上手了。人沒有來齊,也得開始。等來了再重新講一次。一次不會,再講一次。有人年齡大打字不熟練,有人看不清屏幕,需要調整大字。一調整,界面發生錯位了。有人不會用鼠標雙擊和單擊,有人不會控制打印機。過去是UCDOS系統,還沒用過WINDOWS的,用不慣。從基礎培訓起吧。否則怎么辦呢?人家不上線用起來,人家不給驗收結項啊,尾款回不來啊。
用戶也培訓完了,該上線了,就需要初始化庫存了。先得現實盤點,然后再錄入計算機,還必須一邊得繼續營業。于是,真實庫存和計算機庫存肯定對不上去。由于品種太多,所以只能一批批盤點一批批錄入。
由于操作不熟練,特殊業務不知道如何處理,只能瞎處理。處理完后發現不對,想沖抵回去。沒有沖抵功能,只能修改數據庫中的數據。
由于前期修改,根本沒有測試,就是老哥自己一個人改。改完了有時候煩了連自己都不想測試。于是上線用著用著就不能運行了,需要當時就立即修改,中午晚上的連續作戰緊急解決,否則第二天一早還需要開門迎客。
好容易業務錄入了,但是報表不對。一檢查,原來是前段時間錄入的非法業務數據造成,功能沒想到沒攔住。怎么辦?偷偷自己修改數據,然后使報表平賬。過段時間,發現報表又不平了,發現還是非法數據進入造成。怎么進來的呢?想不明白。只好蹲點現場,直到客戶都運行正常了才能走人,算是上線成功。
這個累呀,兩三個月都是緊著過的。好不容易回來休息會,另一個項目就要啟動了,就這么幾頭能干活的蒜,老板笑著臉讓你去。于是,遭遇再次上演,日子就是這么過來了,一月又一月,一年又一年。頂不住的就跑路。
我聽完了我的朋友的訴苦。我說咱們一件件事情的排查。
第一件事,邊演示邊修改,還得信息科長在,還得他拍板。這段時間的浪費如入縮短。我過去也作過燈塔客戶的實施,我過去一去了客戶那里,并沒有一開始就這么做。我先是調研此次項目組的人員構成、能力、職責、上線時間、用戶計算機能力、用戶部門對上一套系統的最突出的抱怨,信息科對上一套系統的最突出的抱怨,現在還有哪些系統在持續運行,上一套系統用戶部門和信息科覺得哪里好,上一套系統的功能結構和操作流程。這樣,我就確定了我該如何開展項目實施。這就是項目調研階段。人往往很眷戀自己已經習慣的事情。而且人的想法,人的能力,各個部門的利益沖突,人和人的私人關系和恩怨,都有助于項目的推進。亞洲人做事,需要面上的和面下的都得下功夫。純粹都是正式的或者都是不正規的,都無法做好一個項目。我會在項目調研后,重新建議項目組人員構成、職責、流程、項目階段時間、各方面負責人、本項目的最突出要解決的前5個目標問題。
人常說,上下同欲者勝,廟算者勝。你一開始必須界定好項目的邊界和目標和執行標準和責任人,否則大家誰都想管或者誰都不管,大家沒有目標,或者大家各有各的目標,肯定無法項目很好的推進。
有了目標,責任人、標準、時間計劃,就要按照這個目標來分解做。基礎數據的校驗,需要用戶參與先來校驗原有系統的數據。不要認為用戶現有這套系統就沒有問題。如果沒有問題,企業也不會用你這套來代替他現有這套。所以校驗現有基礎數據很有必要。沒有的數據,先讓他們做準備,但你要書面把要準備的規范寫好交給要參與的各個用戶,而且要做好培訓工作,不能講講就認為他們理解了。有了的數據,需要校驗。地基打好,才能上面很快蓋房子。而且,信息科和用戶對老系統很熟悉,校驗數據比你快的多,而且準確的多。只有經過他們的確認,你可以導數據,也可以不負責導數據。其實,基礎數據,雖然多,但只要有5-10個人,2-3天就能錄入完畢。比你導更快更準確。
在用戶嚷嚷需求的時候,一定要以系統目標為約束。因為每個人看法不一樣,站的利益角度不一樣,每個人的計算機應用水平也不一樣,所以每個人都有看法。你讓百家爭鳴,而且什么需求都可以提,沒有目標沒有邊界,就讓你一個人修改,那么你結果不會好而且你會心身疲憊,你會很快就厭煩了項目。吃力不討好,就是方法不對。需求,一定要圍繞時間階段和目標為約束,大家要一個目標。
還有你剛才講到的沒有培訓方法、培訓文檔、培訓素質,說明必須要有專人來做培訓。這塊是項目實施非常重要而且工作量大的一塊。這才是真正的項目實施。項目實施不是讓你來修改需求來了。培訓做不好,上線會出一堆麻煩,軟件再約束不強,報表就是平不了。而培養一個培訓的人員還是容易的。如果想培養一個會協調推進來事的、會修改軟件的、懂得業務需求的、會SQL語句導數的、會培訓的,這樣的專業神人確實很難。而且這樣的神人一定不專業。所以,要帶人,先要讓他搞培訓,而且讓他編寫針對不同用戶的培訓手冊,有培訓時間課程、培訓規范、考試考核、模擬練習環境、模擬數據。這是這個培訓專員可以做到的。
軟件修改,尤其項目型軟件,不修改是不太可能的。我不贊成在客戶處修改軟件。因為不僅僅你只會以事論事的修改,容易陷入到這家客戶具體的需求中,而不會考慮其他客戶的需求兼容,所以你修改的軟件有很大局限性,最后形成只能一家維護一套代碼,最后客戶越多越累成本越高越不賺錢,被客戶多而拖累死。而且你在現場那么多事情,那么多人打擾,你根本無心踏實下來修改軟件,只想著趕快改完上線回家,你急躁,潦草,應付,軟件質量就沒法保證了。你想改變這種現狀,你必須把需求整理好,交給在家里專門編寫代碼的程序員。你在現場,你也很懂業務,你和你本公司的程序員溝通肯定比客戶溝通要順暢的多。
這樣,你在現場,你的任務就是當好一個項目經理,專門協調,控制,理順,制定流程、規范、目標、時間,保證執行到位。現場還有培訓專員分擔你的培訓工作,可以幫助你校驗數據,測試功能。公司里還有專門coding的程序員分擔你的開發測試工作,而且人家寫的代碼更加多家客戶兼容使用,而且質量穩定性比你高。
只有專業分工合作,才能轉成正規軍。否則,你只能把自己熬倒了,心力交瘁,最后心灰意冷,跳槽而走。
從民兵,到武工隊,到土八路,到正規軍。這條路有好幾個階段。不能想著一步到位。現實情況也不容許我們一步到位。我們只能是能改進什么就改進什么,天天進步一點,我們就會大變樣。
如果從心里就認為不可更改,直到心冷不想改進,那么我們永遠不會進步。
為了我們自己心身愉快,我們也要進步。
記住,你是項目經理。你是這個項目的領頭人。你決定這個項目的成敗。
如果你連這個定位都沒有,那么你什么都決定不了,你這個項目的成敗只能隨波逐流,那樣你真的很失敗了,你什么作用都沒有,要你干嗎。