算一算已經(jīng)做了七年的應(yīng)用軟件,做過的項(xiàng)目資料也擺了半個(gè)書架。想一想每一個(gè)行業(yè)都有自己的酸甜苦辣,我們程序員也一樣,不由得腦子里浮現(xiàn)出徹夜加班的辛苦、寫問題報(bào)告時(shí)的自責(zé),還有做各種各樣枯燥的測(cè)試。當(dāng)然也有設(shè)計(jì)出巧妙算法的滿足和看到有人在用自己寫的程序時(shí),從心底感到的快樂。但我們程序員與其他行業(yè)的從業(yè)者突出的不同感受是什么呢?不同的人有不同的看法,但軟件業(yè)發(fā)展很快,程序員要不斷學(xué)習(xí),這一點(diǎn)可能大家都十分了解。除此之外我感覺寫程序,甚至有一種寫樂曲的感覺,那就是幾十個(gè)人一起寫樂曲的工作吧。
開發(fā)的本質(zhì)
1999年的時(shí)候有機(jī)會(huì)接觸到Delphi做的MIS(管理信息系統(tǒng))。好像那個(gè)時(shí)候感覺做MIS很火爆,在中關(guān)村,一個(gè)做MIS系統(tǒng)的高手往往都是我們敬仰的對(duì)象。很奇怪當(dāng)時(shí)好像很多公司要做MIS都找一個(gè)軟件公司開發(fā)只適合自己公司管理流程的軟件,沒有像今天一提到工廠管理軟件,我們就會(huì)想到用友、金蝶、SAP這些ERP軟件,買幾個(gè)模塊,找個(gè)大公司來做實(shí)施。當(dāng)時(shí)業(yè)內(nèi)沒有這個(gè)概念,都要找軟件公司從頭來做,至少我接觸到的幾個(gè)都是這樣,軟件公司也乘機(jī)發(fā)一筆財(cái)。但往往軟件公司做了一個(gè)版本給客戶用,一到后期變更服務(wù)的時(shí)候,雙方就會(huì)產(chǎn)生很多矛盾,這種MIS系統(tǒng)的執(zhí)行效果很多也都達(dá)不到預(yù)期的效果。而MIS高手后來已經(jīng)不是軟件高手,都成了某個(gè)行業(yè)的業(yè)務(wù)流程專家了。也可能其中的很多人成了后來的ERP軟件實(shí)施顧問吧。這個(gè)時(shí)候Delphi、PowerBuilder等等用得很多,后臺(tái)再使用功能強(qiáng)大的數(shù)據(jù)庫,能做出很好的應(yīng)用程序。這個(gè)時(shí)候好像沒有人再用FoxPro了,不知道過去的FoxPro高手那時(shí)選擇了什么樣的出路。
2000年的時(shí)候,我有機(jī)會(huì)做一個(gè)分析軟件,主要是對(duì)工業(yè)檢測(cè)設(shè)備上采集來的大量數(shù)據(jù)畫成圖表,并進(jìn)行一些內(nèi)容的統(tǒng)計(jì)。這個(gè)程序開始做得不好,到生產(chǎn)線上一用,發(fā)現(xiàn)問題太多,沒幾天就被客戶投訴了。這時(shí)才發(fā)現(xiàn),這樣的程序與MIS是完全不同的兩種程序。這個(gè)程序要求的是程序的強(qiáng)悍性、分析的實(shí)時(shí)性、數(shù)據(jù)分析的正確性,要求的是容錯(cuò)和算法。而過去做的MIS用的是快速開發(fā)工具,基本上不用考慮效率和算法,專注于流程控制。這次的“打擊”真是太好了,雖然被老板扣了工資,但我看到了軟件開發(fā)的一些本質(zhì)的東西,過去學(xué)的數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)中的很多知識(shí)都用上了。這個(gè)時(shí)候開始了解軟件不僅是寫代碼,是有設(shè)計(jì)、有韻律的一種東西。后來上研究生課的時(shí)候,聽一個(gè)數(shù)學(xué)系的教授講課,他說過去有兩個(gè)行業(yè)容易出天才,一個(gè)是數(shù)學(xué),一個(gè)是音樂?,F(xiàn)在又多了—個(gè),是軟件。
ERP的出現(xiàn)改變了很多程序員的思維
思路決定出路
我是從1998年開始接觸軟件,那個(gè)時(shí)候FoxPro很流行,很羨慕他們用FoxPro開發(fā)出的一些界面好看的程序。當(dāng)時(shí)經(jīng)常感覺大學(xué)中學(xué)習(xí)的軟件相關(guān)課程與實(shí)際相差很遠(yuǎn),好在我還是一個(gè)非??粗貙W(xué)習(xí)過程的人,沒有放下課程學(xué)習(xí)去專門學(xué)習(xí)FoxPro?,F(xiàn)在看來,基礎(chǔ)的軟件知識(shí)對(duì)于程序員來說太重要了。
2001年和2002年看到C++和面向?qū)ο缶幊痰木薮蟀l(fā)展,也是由于做課題的需要,又開始學(xué)習(xí)C++。剛開始覺得它沒什么,但一到用的時(shí)候總覺著不順手,現(xiàn)在想來那時(shí)根本沒有理解C++的思想,其實(shí)還是用C的思路考慮程序,沒有建立起面向?qū)ο蟮乃枷?,?dāng)然也就學(xué)不好了。當(dāng)時(shí)找了好幾本VC實(shí)戰(zhàn)之類的書來學(xué),跟著書把例子都做了,但一放下書,還是不能隨心所欲地用。后來找了一本《Borland C++3.1》,編譯器跟DOS系統(tǒng)的TC編譯器差不多,重新開始學(xué)。這才發(fā)現(xiàn)事實(shí)上過去學(xué)VC的書不光用到C++,還用到了MFC(微軟的基礎(chǔ)類庫),而且還涉及到Windows編譯的原理。
持續(xù)走低的FoxPro
管理與控制
2003年我加入了軟件公司,成為了真正意義上的程序員。很慶幸我們公司是真正做軟件的公司,為什么這么說呢?這幾年做的軟件都是幾百個(gè)人參與的大規(guī)模軟件項(xiàng)目,往往都是幾十個(gè)人共同開發(fā),這可能類似于作坊與工廠的區(qū)別。我工作幾年感受最深的不是又學(xué)會(huì)了什么編程語言、學(xué)會(huì)了高級(jí)的算法,而是幾年的軟件項(xiàng)目開發(fā)使我理解了軟件過程的管理與控制,同時(shí)建立了團(tuán)隊(duì)開發(fā)的概念,這與過去自己寫程序是完全不同的兩個(gè)概念。
加入公司后做的第一個(gè)項(xiàng)目就是20個(gè)人規(guī)模團(tuán)隊(duì)的項(xiàng)目。將近兩個(gè)月,我印象中就沒寫過代碼,每天都在寫一些數(shù)據(jù)表格、設(shè)計(jì),再就是評(píng)審,忙得不可開交。過去也做軟件設(shè)計(jì),但最多幾個(gè)人,寫兩張紙的內(nèi)容,大家商量商量就開始編碼了。而現(xiàn)在設(shè)計(jì)用了兩個(gè)月,各種表格、設(shè)計(jì)書、評(píng)審記錄加起來兩大本子,而我做的才僅僅是個(gè)顯示模塊。這樣的過程真令我很驚訝。接下來的過程更讓我終生難忘:只有兩周時(shí)間的編碼。這我可以應(yīng)付,但沒想到代碼寫出來了,評(píng)審時(shí)候被指出了無數(shù)個(gè)錯(cuò)誤,而且根本和設(shè)計(jì)脫離。這時(shí)我才感覺到什么是軟件設(shè)計(jì),什么是編碼規(guī)范,“人月神話”看似簡(jiǎn)單,實(shí)則是團(tuán)隊(duì)開發(fā)的重要原則!
單體測(cè)試、結(jié)合測(cè)試、信賴性測(cè)試,又花了3個(gè)月,這時(shí)才發(fā)現(xiàn)前期設(shè)計(jì)做得好,編碼符合規(guī)范,后期出的問題就少,就是出問題,也很好查。我當(dāng)然是結(jié)結(jié)實(shí)實(shí)又忙了三個(gè)月,總算把1.0的版本交上。正打算好好歇一歇,但好像大家又開始很忙了,各種數(shù)據(jù)統(tǒng)計(jì)、總結(jié)報(bào)告,還有總結(jié)會(huì)議。當(dāng)然我還是最忙的人,因?yàn)榻y(tǒng)計(jì)和總結(jié)的內(nèi)容都是前幾個(gè)月的工作情況,我因?yàn)閱栴}最多,補(bǔ)寫了很多問題報(bào)告。而這個(gè)時(shí)候新的項(xiàng)目又進(jìn)入了準(zhǔn)備階段,有很多新的軟件設(shè)計(jì)開發(fā)工具等著去學(xué)。
當(dāng)幾個(gè)項(xiàng)目下來,這一過程已經(jīng)完全熟悉之后,一年多的時(shí)間已經(jīng)過去了。這時(shí)很不愿意做的事之一就是在過去寫過的代碼基礎(chǔ)上做修正。往往有讀天書的感覺。甚至在問自己這是我寫的嗎?怎么一點(diǎn)印象都沒有!
“一站式”的軟件開發(fā)系統(tǒng)
總結(jié)與思考
本文只是簡(jiǎn)單聊了一下筆者這幾年程序開發(fā)的感受。好像有句話叫“痛并快樂著”,這個(gè)時(shí)候說感覺挺合適??赡茈S著時(shí)間的流逝我們會(huì)漸漸失去不斷學(xué)習(xí)的勇氣和精力,但程序員不斷發(fā)掘未知領(lǐng)域的挑戰(zhàn)和設(shè)計(jì)思維的藝術(shù)性魅力可能會(huì)越來越強(qiáng),也會(huì)吸引更多的人來從事這樣的工作,體會(huì)其中的痛和快樂。
轉(zhuǎn)自:賽迪網(wǎng)
【?發(fā)表評(píng)論?0條?】