【IT168 專(zhuān)稿】無(wú)休止的ERP實(shí)施加班后,我終于迎來(lái)了難得的半天休息,在家舒服地看了電影《特洛伊》讓我感受至深——古希臘神話(huà)中所向披靡的勇士阿喀琉斯最怕腳后跟受傷,成為其致命的“命門(mén)”,其實(shí)ERP也有最怕觸及的“命門(mén)”,這就是二次開(kāi)發(fā)。
多數情況下,二次開(kāi)發(fā)都會(huì )演變成一個(gè)對ERP系統無(wú)休止的修改過(guò)程,最終會(huì )把用戶(hù)和廠(chǎng)商都拖進(jìn)泥潭難以自拔,而開(kāi)發(fā)和實(shí)施顧問(wèn)則會(huì )心力交碎,生不如死。
固執己見(jiàn)的客戶(hù)
在我做ERP實(shí)施顧問(wèn)的第一天,上司告訴我第一條準則就是要以用戶(hù)需求為驅動(dòng)。然后,上司又告訴我第二條準則:作為實(shí)施顧問(wèn)要堅決不贊同用戶(hù)進(jìn)行太多的二次開(kāi)發(fā),過(guò)多的二次開(kāi)發(fā)不僅會(huì )增加軟件的不穩定性,還會(huì )延長(cháng)實(shí)施項目的周期,從而增加項目成本,要用盡各種各樣的辦法把用戶(hù)需求向ERP軟件已有的流程上走。這兩個(gè)看起來(lái)相互矛盾的準則,令我在近期一個(gè)ERP項目實(shí)施過(guò)程中感到生不如死,左右為難。
用戶(hù)是一個(gè)老國企,在界面上和操作上提出非常多的特殊要求,固執地要求按他們的習慣進(jìn)行二次開(kāi)發(fā),以滿(mǎn)足他們原有的操作模式。一般來(lái)說(shuō),我們的ERP軟件產(chǎn)品為了具有較強通用性,軟件功能已經(jīng)比較標準,流程設置也相對規范化。雖然通過(guò)參數可調的形式可以部分滿(mǎn)足不同用戶(hù)的需求,但很多情況下這種“輕度”靈活會(huì )失效。
用戶(hù)的固執或偏見(jiàn)主要是表現在這幾面:
①不愿意改變現有的操作習慣。用戶(hù)想把現在的手工流程、手工作業(yè)一成不變地搬到ERP中去,而這恰恰是換湯不換藥的做法。當我對用戶(hù)分析ERP現有的流程與用戶(hù)原有的流程的優(yōu)劣性比較時(shí),用戶(hù)一句話(huà)就把我頂住,說(shuō)我們一直是這樣做,而且還做得不錯,我們就是用這樣的管理手段得到發(fā)展,并且獲得了上你們ERP系統的資金,以后還打算一直用我們習慣的方式去管理。
用戶(hù)除了在業(yè)務(wù)流程等方面具有個(gè)性化需求外,往往還存在著(zhù)一些不涉及業(yè)務(wù)流程的、由企業(yè)的特殊性而產(chǎn)生的個(gè)性化需求,例如單據/表格的格式。一般ERP都會(huì )提供通用的單據格式,而用戶(hù)又有自己習慣的一套單據格式。因此在實(shí)施時(shí),企業(yè)上來(lái)就問(wèn)能否按這個(gè)格式打印。其實(shí),這是本末倒置,只要該有的內容有了,沒(méi)有必要一成不變的按原由的格式。
這樣的問(wèn)題在我參與的實(shí)施中時(shí)常出現,與用戶(hù)溝通常常讓我費盡心力,舌根冒火才勉強說(shuō)服用戶(hù)同意先試用單據格式。這樣不但容易造成項目延期,而且還把大家注意力轉移到無(wú)關(guān)系統的邊緣流程上,吃力不討好現象時(shí)常發(fā)生。
只有當碰到無(wú)法通過(guò)調節參數來(lái)完成;或者報表功能真是不適應用戶(hù)需求時(shí)導致報表樣式、內容要改變,這些情況才應該通過(guò)二次開(kāi)發(fā)來(lái)實(shí)現。這種因操作習慣提出的二次開(kāi)發(fā)主要針對用戶(hù)各類(lèi)報表系統的查詢(xún),打印格式和字段標準化等方面。
②不合理的管理制度造成的特殊流程需求。用戶(hù)有些二次開(kāi)發(fā)需求,是原先不合理的管理制度和流程所造成的。因此,我們首先要做的是判斷其要求的合理性,然后深入到一線(xiàn)去找出真正的需求。而無(wú)數的事實(shí)證明,大量由于不合理的管理流程需求提出要二次開(kāi)發(fā)的案例最終都失敗了。
③ERP軟件確實(shí)無(wú)法滿(mǎn)足需求。當然,每個(gè)用戶(hù)確實(shí)都存在著(zhù)一些ERP無(wú)法滿(mǎn)足的個(gè)性業(yè)務(wù)流程需求,畢竟ERP是一個(gè)套裝軟件,而不是根據用戶(hù)量身定制的。針對這種需求,即使通過(guò)各種各樣的實(shí)施方法后,也沒(méi)有找到更好的處理方式,那只好進(jìn)行二次開(kāi)發(fā)了。
當用戶(hù)明確提出要二次開(kāi)發(fā)的時(shí)候,則很容易出現項目延期、開(kāi)發(fā)的程序不穩定容易報錯等問(wèn)題;或者用了一段時(shí)間后想再做修改,才發(fā)現原來(lái)當初這樣做是不對的,但可能涉及當初拍板決定的各方領(lǐng)導利益問(wèn)題,所以也沒(méi)人敢改了,因此導致二次開(kāi)發(fā)的程序成了雞肋,扔也不是,不扔也不是。
①修改報表格式或用戶(hù)查詢(xún)系統等不涉及程序代碼改動(dòng)的需求相對簡(jiǎn)單,因為軟件一般都具有報表生成功能,任何業(yè)務(wù)人員不需要有很多計算機知識就可以自行設置,這種情況在實(shí)施時(shí)經(jīng)過(guò)實(shí)施顧問(wèn)組與用戶(hù)充分溝通一般比較容易解決。
②當用戶(hù)需求具有個(gè)性化,并涉及改動(dòng)程序代碼時(shí),工作就很復雜了,往往需要ERP系統提供支持二次開(kāi)發(fā)的工具,還可能需要有廠(chǎng)商軟件的源程序支持,這些大都要支付額外費用。
當用戶(hù)提出需要代碼級二次開(kāi)發(fā)時(shí),實(shí)施顧問(wèn)必須清楚與用戶(hù)溝通,否則更易陷入泥潭,因為代碼級二次開(kāi)發(fā)可能會(huì )使ERP系統變得越來(lái)越復雜,變成一個(gè)“四不象”的浮腫龐雜的ERP系統。
一般來(lái)說(shuō),代碼級二次開(kāi)發(fā)主要有以下三個(gè)方面的風(fēng)險:
①易造成系統的不穩定或崩潰。ERP系統是個(gè)錯綜復雜的系統,各個(gè)模塊是個(gè)有機的整體。若要修改其中的一個(gè)功能,其影響的不單單是現在這個(gè)功能,還可能影響到其他功能。目前實(shí)施顧問(wèn)一般對ERP代碼級二次開(kāi)發(fā)的一個(gè)觀(guān)點(diǎn)是:能不做就不要做。因為ERP系統就像人的血脈那樣錯綜復雜,在二次開(kāi)發(fā)的時(shí)候,如果因為增加的用戶(hù)個(gè)性化功能觸動(dòng)了ERP原有的大動(dòng)脈,否則會(huì )大大影響其整個(gè)性能,并且開(kāi)發(fā)、調試的費用也是非常嚇人的。
②嚴重影響項目實(shí)施周期。代碼級二次開(kāi)發(fā)的時(shí)間短則幾天,長(cháng)則半月、一月,甚至也可能長(cháng)達幾個(gè)月,很容易延誤項目實(shí)施進(jìn)程,這個(gè)因素應該在簽定合同或者說(shuō)制定項目實(shí)施計劃時(shí)包括進(jìn)去。
③后續維護和升級風(fēng)險大。改動(dòng)軟件后還會(huì )影響以后的軟件版本升級。如果不升級,新版本的長(cháng)處無(wú)法應用。如果升級,則面臨著(zhù)重新進(jìn)行二次開(kāi)發(fā)的可能。因為ERP軟件供應商在進(jìn)行新版本的ERP系統開(kāi)發(fā)時(shí),可能根本不會(huì )考慮某個(gè)特定的用戶(hù)在舊版本上所作的二次開(kāi)發(fā)。因此,在進(jìn)行二次開(kāi)發(fā)前,要做認真的分析對比。究竟是修改軟件,還是改革現行管理程序,還是兩者都作一些修改,對修改的必要性、效果和代價(jià)要心中有數。
反思ERP二次開(kāi)發(fā)的得失
無(wú)論是實(shí)施顧問(wèn)還是用戶(hù)都可能產(chǎn)生過(guò)這樣的感慨:明明是經(jīng)過(guò)幾個(gè)月的初期討論和項目分析,在用戶(hù)的認可下做好了的ERP系統,結果由于“二次開(kāi)發(fā)”,系統變得越來(lái)越復雜,與最初期望的效果越來(lái)越遠,最后猛然一看系統已經(jīng)完全“變味”了。因此,把握二次開(kāi)發(fā)的原則很重要。
①在觀(guān)念認識上,實(shí)施顧問(wèn)應要讓用戶(hù)清醒認識到,不應過(guò)多強調用戶(hù)自身的特點(diǎn),ERP軟件中的管理流程是從許多企業(yè)中提煉出來(lái)的,具有先進(jìn)性和合理性。許多用戶(hù)的特殊之處都是由于流程自身的不合理產(chǎn)生的,應該通過(guò)ERP的實(shí)施,對企業(yè)進(jìn)行業(yè)務(wù)流程優(yōu)化或重組,而不是一味修改軟件以適應不合理的流程。
②當需要二次開(kāi)發(fā)時(shí),實(shí)施顧問(wèn)和開(kāi)發(fā)顧問(wèn)應該要嚴格遵守不修改核心代碼這一條基本原則。如果必須進(jìn)行二次開(kāi)發(fā),則應盡量使得二次開(kāi)發(fā)做出的功能模塊獨立于原來(lái)的ERP系統。這樣當ERP系統版本更新時(shí),二次開(kāi)發(fā)出來(lái)的模塊無(wú)需修改或者只需較少的修改就可以應用于高版本的ERP系統。
③二次開(kāi)發(fā)的需求必須控制好,盡量不要在ERP系統的功能還沒(méi)有充分了解是否配合用戶(hù)管理需求之前就進(jìn)行二次開(kāi)發(fā)。因為用戶(hù)的業(yè)務(wù)流程并不是一成不變的,ERP軟件中流程一般比較抽象,大的方面與用戶(hù)業(yè)務(wù)流程通??梢蕴咨?,細節部分不作修改也可以。同時(shí),ERP軟件不是給一個(gè)人用的,每個(gè)用戶(hù)都可能有自己想法,不可能都滿(mǎn)足的。部分要服從大局。項目按時(shí)、按預算完成實(shí)施,上線(xiàn)運行是實(shí)施階段的大局,哪些二次開(kāi)發(fā)必須要做,哪些可以不做,要看會(huì )不會(huì )影響大局??勺隹刹蛔龅?,堅決不做。