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