用友的程序員文化
——《程序員》對(duì)邵凱專訪
邵凱,股份公司董事、高級(jí)副總裁、NC事業(yè)部總經(jīng)理。獲哈爾濱工業(yè)大學(xué)計(jì)算機(jī)理學(xué)碩士學(xué)位,1991年加入用友,曾任公司副總裁、產(chǎn)品研發(fā)中心總經(jīng)理、質(zhì)量總監(jiān)、信息總監(jiān)。邵凱先生擔(dān)任的社會(huì)職務(wù)有北京軟件行業(yè)協(xié)會(huì)常務(wù)理事,國(guó)家標(biāo)準(zhǔn)化委員會(huì)TC151技術(shù)委員會(huì)委員。
用友軟件做為首家國(guó)內(nèi)主板上市的軟件公司,為中國(guó)軟件產(chǎn)業(yè)的發(fā)展注入了新的活力。這讓我們不能不將關(guān)注的目光投向這個(gè)在中國(guó)算的上“巨無(wú)霸”的軟件公司,當(dāng)然我們探求的不是其資本運(yùn)營(yíng)方面的內(nèi)幕,而是用友公司內(nèi)的程序員文化。本期我們就將帶著您走進(jìn)位于北京上地信息產(chǎn)業(yè)基地的用友大廈,直面用友的高級(jí)副總裁邵凱先生,看看他眼中的用友軟件的程序員文化和他對(duì)程序員發(fā)展的看法。
用友的成功體現(xiàn)在程序員身上,有三個(gè)方面:專注財(cái)務(wù)和管理軟件領(lǐng)域、用戶需求第
一、強(qiáng)調(diào)程序可靠性。
《程序員》:用友軟件現(xiàn)在是國(guó)內(nèi)數(shù)一數(shù)二的軟件公司,也成為國(guó)內(nèi)軟件也的一面旗幟,您是如何看待用友的成功和程序員的關(guān)系的呢?
邵凱:用友這些年的發(fā)展還是比較成功的。做為用友公司的高層管理人員,我認(rèn)為,首先,用友很專注。最初幾年我們只專注在財(cái)務(wù)軟件領(lǐng)域。從1988年開(kāi)始開(kāi)發(fā)財(cái)務(wù)軟件到現(xiàn)在已經(jīng)有十幾年的時(shí)間。很多核心程序員寫(xiě)了財(cái)務(wù)軟件的很多版本,程序代碼也非常穩(wěn)定。用友的產(chǎn)品我從1991年開(kāi)始接觸,后來(lái)經(jīng)歷了眾多的版本,到現(xiàn)在負(fù)責(zé)的NC,我感覺(jué)每一個(gè)版本里面都集成了以前版本的核心和思想,每升級(jí)一個(gè)大的版本,軟件都有一個(gè)大的提高,公司也就發(fā)展到一個(gè)新的階段。
第二就是將用戶視為上帝。很多其它公司程序員并不把這個(gè)問(wèn)題當(dāng)做一回事。但用友可以把一個(gè)財(cái)務(wù)軟件寫(xiě)了十幾年,寫(xiě)什么呢?實(shí)際上,就是傾聽(tīng)用戶的各種需求。我們認(rèn)為用戶的需求都是合理的,用友的程序員不會(huì)直接指責(zé)用戶的要求不合理,而是在尊重用戶意見(jiàn)的同時(shí),分析用戶需要,提煉和抽象,把軟件做得更好。
第三就是程序的可靠性。我聽(tīng)到過(guò)有程序員瞧不起用友的產(chǎn)品,認(rèn)為用友軟件的技術(shù)落后。但應(yīng)用軟件的技術(shù)先進(jìn)性是什么,很多人講不清楚。其實(shí)無(wú)論是用VB還是C++、JAVA開(kāi)發(fā),產(chǎn)品的穩(wěn)定性都是最重要的,用友在這方面一直做不懈的努力。我們的程序員都很清楚,用友有成千上萬(wàn)的用戶(目前已經(jīng)達(dá)30萬(wàn)用戶),如果我們產(chǎn)品在遺留一個(gè)必然錯(cuò)誤的情況下發(fā)版了,就有可能造成幾萬(wàn)個(gè)用戶出現(xiàn)錯(cuò)誤,用戶的損失將不可估量,幾萬(wàn)個(gè)錯(cuò)誤就可能有幾萬(wàn)個(gè)電話打到公司總部,整個(gè)用友的維護(hù)網(wǎng)絡(luò)就會(huì)癱瘓。因此,我們每寫(xiě)一行程序,都可能要測(cè)試很多遍。用友開(kāi)發(fā)人員中有1/3的專職測(cè)試人員,還有很多兼職測(cè)試人員,我們稱之為“BATTLE TEST”-千錘百煉。
在用友軟件公司,程序員并沒(méi)有那種眾星捧月的優(yōu)越感覺(jué),他們被很多的規(guī)范所限制,但這些限制保證其軟件職業(yè)生涯穩(wěn)步發(fā)展。用友的軟件文化不是唯程序文化。
《程序員》:在用友軟件公司,程序員是處于一個(gè)什么樣的位置呢?他們的發(fā)展空間在哪里?您認(rèn)為用友的程序員文化核心是什么?
邵凱:相對(duì)來(lái)說(shuō),用友公司是一個(gè)已經(jīng)發(fā)展很長(zhǎng)時(shí)間的軟件公司,所以形成了自己的一些程序員文化。在用友,程序員會(huì)遇到很多自己不太愿意接受的東西,比如很多的文檔,嚴(yán)格的測(cè)試。尤其是對(duì)于新手,他們開(kāi)始可能會(huì)不太適應(yīng)這里的環(huán)境。
舉個(gè)例子,用友開(kāi)發(fā)部門(mén)有一項(xiàng)非常重要而且經(jīng)常開(kāi)展的工作,就是軟件各個(gè)階段和環(huán)節(jié)都有的評(píng)審,在程序設(shè)計(jì)階段,這個(gè)評(píng)審叫代碼講評(píng)。用投影儀把程序員寫(xiě)的代碼顯示在大屏幕上,召集很多相關(guān)的程序員,大家一起來(lái)對(duì)這段代碼進(jìn)行評(píng)審。
面對(duì)一個(gè)設(shè)計(jì)要求,代碼如何寫(xiě),這并不難,評(píng)審的過(guò)程和氣氛也非常平和(PEER REVIEW),在大庭廣眾下被他人對(duì)自己的代碼品頭論足,作者的感覺(jué)還是不一樣。寫(xiě)程序和做題不同,做題一般只有一個(gè)正確答案,只要最后的結(jié)果是對(duì)的,大家就不會(huì)說(shuō)什么了。但寫(xiě)程序涉及的問(wèn)題更多,大家會(huì)看是否符合標(biāo)準(zhǔn)和函數(shù)的規(guī)范。比如一個(gè)算法、一個(gè)函數(shù)所用的代碼行數(shù)不能太長(zhǎng)(一般不得超過(guò)50行)。而且還會(huì)檢查這個(gè)算法是否和設(shè)計(jì)要求相吻合,實(shí)現(xiàn)的方法如何,算法的正確性,有時(shí)程序的作者會(huì)比較難受。尤其是很多程序員都有很強(qiáng)的自信心。 但更多的人認(rèn)為這是一種激勵(lì)、挑戰(zhàn)和證明。不管怎樣,程序代碼是需要經(jīng)過(guò)集思廣益、反復(fù)斟酌、精益求精,而不是閉門(mén)造車的寫(xiě)。
在用友,我們稱應(yīng)用專家、系統(tǒng)分析師、架構(gòu)設(shè)計(jì)師、程序員、測(cè)試人員都是技術(shù)人員。在這個(gè)群體中,程序員不是塔尖的一族,也沒(méi)有在小軟件公司那樣的優(yōu)越感。在用友的程序員中,有一個(gè)非常重要的群體,就是軟件架構(gòu)設(shè)計(jì)人員,有人稱之為ARCHITECT。他們是從程序員中成長(zhǎng)出來(lái)的,他們精通程序設(shè)計(jì),較大規(guī)模軟件開(kāi)發(fā)首先由他們進(jìn)行結(jié)構(gòu)設(shè)計(jì),再由程序員設(shè)計(jì)其中的組件,這些人在國(guó)外的收入也是很高的。另外很重要的一群體是應(yīng)用專家,因?yàn)橛糜咽亲龉芾碥浖模屩欢浖夹g(shù)的程序員設(shè)計(jì)一個(gè)ERP應(yīng)用算法是不可想象的,必須首先由懂得應(yīng)用領(lǐng)域業(yè)務(wù)的專家提出最優(yōu)化的應(yīng)用模型。
用友是個(gè)私營(yíng)企業(yè),軟件只有銷售出去,而且只有長(zhǎng)期占領(lǐng)市場(chǎng),才能算是成功。因此售前咨詢顧問(wèn)、實(shí)施專家、銷售等人員的作用非常重要。一次成功的售前支持和商務(wù)談判就可以給用戶帶來(lái)極具價(jià)值的解決方案,同時(shí)給用友帶來(lái)豐厚的收入。所以在用友,高級(jí)銷售人員、高級(jí)咨詢顧問(wèn)都得到較好的認(rèn)可,盡管一般程序員在這方面很難相比,但在一個(gè)產(chǎn)品業(yè)務(wù)線上,各種角色配合密切。
在用友,多數(shù)程序員要想取得更好的業(yè)績(jī),一般應(yīng)該向主程序員、架構(gòu)設(shè)計(jì)師或者是項(xiàng)目負(fù)責(zé)人、開(kāi)發(fā)經(jīng)理、產(chǎn)品經(jīng)理方面發(fā)展。用友提供了一個(gè)非常好的可供長(zhǎng)期職業(yè)生涯發(fā)展的環(huán)境。
用友是一個(gè)在國(guó)內(nèi)較早進(jìn)行軟件開(kāi)發(fā)規(guī)范管理的公司,我們目前正在大力推行CMM、PSP,大團(tuán)隊(duì)協(xié)作、同級(jí)評(píng)審等方法,同時(shí)營(yíng)造非常OPEN的開(kāi)發(fā)文化。所有工作是面向文檔,而不是面向人;多數(shù)工作都是靠協(xié)作,而不是只靠個(gè)人。我們?cè)陂_(kāi)發(fā)NC的過(guò)程中,在只有5個(gè)月的程序階段,200人同時(shí)寫(xiě)一個(gè)軟件產(chǎn)品的程序,這在中國(guó)可能是很少見(jiàn)的。
因此說(shuō),用友的軟件文化不是唯程序文化,而是側(cè)重開(kāi)發(fā)管理、項(xiàng)目管理、軟件工程,更重視過(guò)程改進(jìn),開(kāi)發(fā)的組織工作都有相當(dāng)專業(yè)的人在做。這種文化和程序員本身既有沖突,又相融合。它給程序員提供了一種非常現(xiàn)實(shí),但又非常鍛煉人、非常有發(fā)展?jié)摿ぷ髂J健能浖髽I(yè)長(zhǎng)期運(yùn)營(yíng)來(lái)看,這是正確的發(fā)展路線。只有在這種模式下,程序員才能真正的把軟件的價(jià)值體現(xiàn)在用戶應(yīng)用現(xiàn)場(chǎng),用戶才可能再把價(jià)值回報(bào)給程序員。
用友軟件的技術(shù)發(fā)展過(guò)程就是中國(guó)軟件企業(yè)不斷完善的過(guò)程。它不是簡(jiǎn)單的追求技術(shù),從早期的財(cái)務(wù)軟件到現(xiàn)在的NC,軟件越來(lái)越復(fù)雜,采用的新技術(shù)越來(lái)越多,但這不是為了復(fù)雜而復(fù)雜,體現(xiàn)的只有一句話,技術(shù)以應(yīng)用為本。
《程序員》:請(qǐng)您談?wù)勀鷮?duì)用友軟件技術(shù)發(fā)展過(guò)程的一些體會(huì)和看法?
邵凱:我是從第二代用友的軟件產(chǎn)品開(kāi)始參與用友開(kāi)發(fā)工作的,現(xiàn)在是NC的產(chǎn)品經(jīng)理,經(jīng)過(guò)了十幾年的發(fā)展,用友從單一的財(cái)務(wù)軟件發(fā)展到現(xiàn)在面向多個(gè)行業(yè)、多個(gè)應(yīng)用領(lǐng)域和層次,較完善的系列管理軟件產(chǎn)品和應(yīng)用解決方案,同時(shí)還提供應(yīng)用咨詢和項(xiàng)目實(shí)施的服務(wù),發(fā)展過(guò)程經(jīng)歷了很多的變遷。
88年到92年,最初用友在分析部分具體用戶的財(cái)務(wù)要求需求之后,經(jīng)過(guò)抽象和提煉,設(shè)計(jì)出通用的財(cái)務(wù)軟件,推出了早期批量銷售的產(chǎn)品,這是一次非常有價(jià)值的突破,即軟件的通用化和商品化。通用化和商品化是軟件產(chǎn)品公司必須建立的技術(shù)能力。
92年到95年,發(fā)展到基于DOS的財(cái)務(wù)軟件5.0版本的時(shí)候,銷售規(guī)模迅速擴(kuò)大,軟件應(yīng)用范圍也從財(cái)務(wù)應(yīng)用擴(kuò)大到進(jìn)銷存應(yīng)用,在繼承通用性和商品化的同時(shí),軟件重用的技術(shù)開(kāi)始采用,對(duì)于重復(fù)使用的程序代碼,如菜單、數(shù)據(jù)維護(hù)、輸入輸出數(shù)據(jù)表、打印、幫助等,我們將這些程序進(jìn)行通用性抽象,形成了基于DOS的用友應(yīng)用軟件開(kāi)發(fā)平臺(tái),大大提高了開(kāi)發(fā)效率和軟件穩(wěn)定性。用友基于DOS平臺(tái)的最后軟件版本6.0版系列軟件成為劃時(shí)代的財(cái)務(wù)軟件產(chǎn)品。目前仍然有用戶在使用。
98年后,用友產(chǎn)品發(fā)展到8.0版本,在取得應(yīng)用上重大突破的同時(shí),我們的程序員開(kāi)始重點(diǎn)考慮軟件層次結(jié)構(gòu)設(shè)計(jì)和子系統(tǒng)集中控制管理。逐步全面采用大型關(guān)系據(jù)庫(kù)進(jìn)行軟件的優(yōu)化設(shè)計(jì),逐步增加的WEB應(yīng)用功能使該產(chǎn)品支持INTERNET應(yīng)用。
8.0產(chǎn)品現(xiàn)在整合了先進(jìn)的MRP系統(tǒng),發(fā)展到U8ERP 8.21版本,適合中小型企業(yè)應(yīng)用。是用友軟件家族的主力,擁有用戶最多的用友軟件產(chǎn)品。U8 ERP的后續(xù)發(fā)展將基于微軟的.NET 技術(shù),追求優(yōu)化高效軟件設(shè)計(jì)和易用性,全面面向中小企業(yè)應(yīng)用。
在整個(gè)開(kāi)發(fā)過(guò)程中,為解決各種應(yīng)用問(wèn)題和改善使用效果,NC的程序員開(kāi)發(fā)并采用了大量的軟件新技術(shù)。J2EE技術(shù)為設(shè)計(jì)基于INTERNET的大型企業(yè)應(yīng)用軟件提供了手段。JAVA技術(shù)使所開(kāi)發(fā)的軟件能夠支持眾多平行和后續(xù)的先進(jìn)技術(shù)手段。
用友NC在J2EE基礎(chǔ)上設(shè)計(jì)了具有自主版權(quán)的中間件和豐富的公共技術(shù)組件。軟件體系中采用數(shù)據(jù)交換技術(shù)構(gòu)成系統(tǒng)信息交換平臺(tái)。所有的信息在傳遞時(shí),不是直接聯(lián)結(jié)相應(yīng)的組件,而是將信息放到信息交換平臺(tái)里,由系統(tǒng)自動(dòng)尋找相應(yīng)的應(yīng)用組件進(jìn)行處理。比如,當(dāng)有要貨申請(qǐng)的時(shí)候,把請(qǐng)求發(fā)布到這個(gè)信息交換平臺(tái),系統(tǒng)就會(huì)分析判斷從哪里進(jìn)貨最合適,并把相應(yīng)的信息返回給系統(tǒng)使用者。監(jiān)控管理也得到很好的設(shè)計(jì),比如庫(kù)存報(bào)警,當(dāng)一批貨出庫(kù)之后如果庫(kù)存量底于報(bào)警線,一個(gè)報(bào)警狀態(tài)就被放在這個(gè)信息交換平臺(tái)中,相應(yīng)的采購(gòu)申請(qǐng)將產(chǎn)生,同時(shí)停止響應(yīng)任何正常的出貨要求。
在開(kāi)發(fā)方法上,回憶用友的技術(shù)開(kāi)發(fā)過(guò)程,我們?cè)?jīng)推行過(guò)結(jié)構(gòu)化程序開(kāi)發(fā),但因?yàn)闊o(wú)法打通應(yīng)用和技術(shù)的通道,一直難以建立規(guī)范且完善的,適合應(yīng)用軟件的開(kāi)發(fā)技術(shù)規(guī)范。現(xiàn)在全部采用了面向?qū)ο蟮募夹g(shù)。基本打通了從需求分析到程序設(shè)計(jì)的全過(guò)程。伴隨的還有工具的進(jìn)步。從簡(jiǎn)單的編程軟件到借助一些開(kāi)發(fā)工具來(lái)做,比如采用了面向?qū)ο蟮姆治鲈O(shè)計(jì)工具、關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)工具等,還有先進(jìn)的測(cè)試工具以及版本管理工具。在語(yǔ)言上,從最早的類DBASE命令語(yǔ)言到現(xiàn)在的JAVA和C#。
用友公司在確定技術(shù)應(yīng)用的時(shí)候,不會(huì)簡(jiǎn)單的追求某一個(gè)流行的熱門(mén)技術(shù),而是要考慮采用這樣的技術(shù)能夠給用戶帶來(lái)的價(jià)值和對(duì)軟件開(kāi)發(fā)過(guò)程帶來(lái)的影響。從早期的財(cái)務(wù)軟件到現(xiàn)在的NC,軟件越來(lái)越復(fù)雜,采用的新技術(shù)越來(lái)越多,但這不是為了復(fù)雜而復(fù)雜,體現(xiàn)的只有一句話,技術(shù)以應(yīng)用為本。
個(gè)人對(duì)程序員發(fā)展的看法:程序員的追求不是錢(qián)和“大拿”的問(wèn)題,而是如何放大自己CODING價(jià)值。我想對(duì)程序員說(shuō)的是,要盡快選定一條適合自己發(fā)展的路子,如果不盡快選定,幾年之后,就會(huì)發(fā)現(xiàn)自己很茫然,而且失落。選定了,堅(jiān)持做下去,一定會(huì)越來(lái)越光明。
《程序員》:您個(gè)人發(fā)展的經(jīng)驗(yàn)來(lái)看,對(duì)程序員發(fā)展有哪些看法?
邵凱:我個(gè)人來(lái)看,還是專注。專注是成功的根本,做事業(yè)專注才可以成功。專注不是說(shuō)只編程序才算是專注,而是包括專注到某一個(gè)領(lǐng)域中去。無(wú)論是企業(yè)管理軟件、工具軟件還是其他類型的軟件,都可以。同時(shí)在這個(gè)專注追求過(guò)程中,要經(jīng)的起誘惑,耐的住寂寞。只有這樣,幾年之后,你會(huì)發(fā)現(xiàn)自己的成功,發(fā)現(xiàn)自己的程序員生涯不是曇花一現(xiàn)。
程序員要想有成功的發(fā)展,專注在某個(gè)領(lǐng)域,做有價(jià)值的程序,這是非常重要的。我不反對(duì)一個(gè)程序員做軟件技術(shù)的全才,但不要去獵奇。好像別人講什么東西,你都懂。實(shí)際上什么都懂不是最重要的,作出更好的結(jié)果最為重要。我認(rèn)為有些方面可以是愛(ài)好,不一定做為事業(yè)去做。
我曾經(jīng)這樣思考過(guò):如何把自己的價(jià)值放大?自己寫(xiě)程序,一天寫(xiě)一千行已經(jīng)非常了不起了,很辛苦了。但如果是帶一個(gè)十人團(tuán)隊(duì)做,每個(gè)人每天只寫(xiě)二百行,就是二千行了。這個(gè)產(chǎn)品可能不是你一個(gè)人做的,但大家的價(jià)值都集中在里面,會(huì)產(chǎn)生更大的價(jià)值。當(dāng)然也不一定都要做項(xiàng)目經(jīng)理,做產(chǎn)品架構(gòu)設(shè)計(jì)師同樣可以將自己的想法貫注到其中,引導(dǎo)程序的方向。這就是放大了自己的程序價(jià)值。
想到用友在全國(guó)有上千個(gè)程序員在寫(xiě)程序,做為用友公司軟件開(kāi)發(fā)管理人員和技術(shù)負(fù)責(zé)人,我為用友的程序中有我的有效代碼,有我的價(jià)值在其中而感到一種欣慰。
我覺(jué)得程序員發(fā)展有三個(gè)方向:系統(tǒng)分析、架構(gòu)設(shè)計(jì)和開(kāi)發(fā)管理。可以沿著產(chǎn)品開(kāi)發(fā)經(jīng)理、部門(mén)經(jīng)理,到研發(fā)部門(mén)的總經(jīng)理;也可以做小組的主設(shè)計(jì)人員、專職設(shè)計(jì)人員,到公司的總架構(gòu)設(shè)計(jì)師;或者做系統(tǒng)分析、應(yīng)用分析。我想對(duì)程序員說(shuō)的是,你要盡快選定一條適合自己發(fā)展的路子。如果不選定的話,那就會(huì)非常茫然,過(guò)幾年之后,就會(huì)發(fā)現(xiàn)自己很失落,不知道去做什么。有了一個(gè)目標(biāo),不要經(jīng)常改變,一直堅(jiān)持下去(能否堅(jiān)持十年),肯定是可以成功的。
上一篇:公司文化轉(zhuǎn)移
下一篇:返回列表