監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設(shè)計管理系統(tǒng) | 甲方項目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉

程序員的“七年之癢”

申請免費試用、咨詢電話:400-8352-114

算一算已經(jīng)做了七年的應(yīng)用軟件,做過的項目資料也擺了半個書架。想一想每一個行業(yè)都有自己的酸甜苦辣,我們程序員也一樣,不由得腦子里浮現(xiàn)出徹夜加班的辛苦、寫問題報告時的自責(zé),還有做各種各樣枯燥的測試。當然也有設(shè)計出巧妙算法的滿足和看到有人在用自己寫的程序時,從心底感到的快樂。但我們程序員與其他行業(yè)的從業(yè)者突出的不同感受是什么呢?不同的人有不同的看法,但軟件業(yè)發(fā)展很快,程序員要不斷學(xué)習(xí),這一點可能大家都十分了解。除此之外我感覺寫程序,甚至有一種寫樂曲的感覺,那就是幾十個人一起寫樂曲的工作吧。

開發(fā)的本質(zhì)

1999年的時候有機會接觸到Delphi做的MIS(管理信息系統(tǒng))。好像那個時候感覺做MIS很火爆,在中關(guān)村,一個做MIS系統(tǒng)的高手往往都是我們敬仰的對象。很奇怪當時好像很多公司要做MIS都找一個軟件公司開發(fā)只適合自己公司管理流程的軟件,沒有像今天一提到工廠管理軟件,我們就會想到用友金蝶、SAP這些ERP軟件,買幾個模塊,找個大公司來做實施。當時業(yè)內(nèi)沒有這個概念,都要找軟件公司從頭來做,至少我接觸到的幾個都是這樣,軟件公司也乘機發(fā)一筆財。但往往軟件公司做了一個版本給客戶用,一到后期變更服務(wù)的時候,雙方就會產(chǎn)生很多矛盾,這種MIS系統(tǒng)的執(zhí)行效果很多也都達不到預(yù)期的效果。而MIS高手后來已經(jīng)不是軟件高手,都成了某個行業(yè)的業(yè)務(wù)流程專家了。也可能其中的很多人成了后來的ERP軟件實施顧問吧。這個時候Delphi、PowerBuilder等等用得很多,后臺再使用功能強大的數(shù)據(jù)庫,能做出很好的應(yīng)用程序。這個時候好像沒有人再用FoxPro了,不知道過去的FoxPro高手那時選擇了什么樣的出路。

2000年的時候,我有機會做一個分析軟件,主要是對工業(yè)檢測設(shè)備上采集來的大量數(shù)據(jù)畫成圖表,并進行一些內(nèi)容的統(tǒng)計。這個程序開始做得不好,到生產(chǎn)線上一用,發(fā)現(xiàn)問題太多,沒幾天就被客戶投訴了。這時才發(fā)現(xiàn),這樣的程序與MIS是完全不同的兩種程序。這個程序要求的是程序的強悍性、分析的實時性、數(shù)據(jù)分析的正確性,要求的是容錯和算法。而過去做的MIS用的是快速開發(fā)工具,基本上不用考慮效率和算法,專注于流程控制。這次的“打擊”真是太好了,雖然被老板扣了工資,但我看到了軟件開發(fā)的一些本質(zhì)的東西,過去學(xué)的數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)中的很多知識都用上了。這個時候開始了解軟件不僅是寫代碼,是有設(shè)計、有韻律的一種東西。后來上研究生課的時候,聽一個數(shù)學(xué)系的教授講課,他說過去有兩個行業(yè)容易出天才,一個是數(shù)學(xué),一個是音樂?,F(xiàn)在又多了—個,是軟件。

ERP的出現(xiàn)改變了很多程序員的思維

思路決定出路

我是從1998年開始接觸軟件,那個時候FoxPro很流行,很羨慕他們用FoxPro開發(fā)出的一些界面好看的程序。當時經(jīng)常感覺大學(xué)中學(xué)習(xí)的軟件相關(guān)課程與實際相差很遠,好在我還是一個非??粗貙W(xué)習(xí)過程的人,沒有放下課程學(xué)習(xí)去專門學(xué)習(xí)FoxPro。現(xiàn)在看來,基礎(chǔ)的軟件知識對于程序員來說太重要了。

2001年和2002年看到C++和面向?qū)ο缶幊痰木薮蟀l(fā)展,也是由于做課題的需要,又開始學(xué)習(xí)C++。剛開始覺得它沒什么,但一到用的時候總覺著不順手,現(xiàn)在想來那時根本沒有理解C++的思想,其實還是用C的思路考慮程序,沒有建立起面向?qū)ο蟮乃枷?,當然也就學(xué)不好了。當時找了好幾本VC實戰(zhàn)之類的書來學(xué),跟著書把例子都做了,但一放下書,還是不能隨心所欲地用。后來找了一本《Borland C++3.1》,編譯器跟DOS系統(tǒng)的TC編譯器差不多,重新開始學(xué)。這才發(fā)現(xiàn)事實上過去學(xué)VC的書不光用到C++,還用到了MFC(微軟的基礎(chǔ)類庫),而且還涉及到Windows編譯的原理。

持續(xù)走低的FoxPro

管理與控制

2003年我加入了軟件公司,成為了真正意義上的程序員。很慶幸我們公司是真正做軟件的公司,為什么這么說呢?這幾年做的軟件都是幾百個人參與的大規(guī)模軟件項目,往往都是幾十個人共同開發(fā),這可能類似于作坊與工廠的區(qū)別。我工作幾年感受最深的不是又學(xué)會了什么編程語言、學(xué)會了高級的算法,而是幾年的軟件項目開發(fā)使我理解了軟件過程的管理與控制,同時建立了團隊開發(fā)的概念,這與過去自己寫程序是完全不同的兩個概念。

加入公司后做的第一個項目就是20個人規(guī)模團隊的項目。將近兩個月,我印象中就沒寫過代碼,每天都在寫一些數(shù)據(jù)表格、設(shè)計,再就是評審,忙得不可開交。過去也做軟件設(shè)計,但最多幾個人,寫兩張紙的內(nèi)容,大家商量商量就開始編碼了。而現(xiàn)在設(shè)計用了兩個月,各種表格、設(shè)計書、評審記錄加起來兩大本子,而我做的才僅僅是個顯示模塊。這樣的過程真令我很驚訝。接下來的過程更讓我終生難忘:只有兩周時間的編碼。這我可以應(yīng)付,但沒想到代碼寫出來了,評審時候被指出了無數(shù)個錯誤,而且根本和設(shè)計脫離。這時我才感覺到什么是軟件設(shè)計,什么是編碼規(guī)范,“人月神話”看似簡單,實則是團隊開發(fā)的重要原則!

單體測試、結(jié)合測試、信賴性測試,又花了3個月,這時才發(fā)現(xiàn)前期設(shè)計做得好,編碼符合規(guī)范,后期出的問題就少,就是出問題,也很好查。我當然是結(jié)結(jié)實實又忙了三個月,總算把1.0的版本交上。正打算好好歇一歇,但好像大家又開始很忙了,各種數(shù)據(jù)統(tǒng)計、總結(jié)報告,還有總結(jié)會議。當然我還是最忙的人,因為統(tǒng)計和總結(jié)的內(nèi)容都是前幾個月的工作情況,我因為問題最多,補寫了很多問題報告。而這個時候新的項目又進入了準備階段,有很多新的軟件設(shè)計開發(fā)工具等著去學(xué)。

當幾個項目下來,這一過程已經(jīng)完全熟悉之后,一年多的時間已經(jīng)過去了。這時很不愿意做的事之一就是在過去寫過的代碼基礎(chǔ)上做修正。往往有讀天書的感覺。甚至在問自己這是我寫的嗎?怎么一點印象都沒有!

“一站式”的軟件開發(fā)系統(tǒng)

總結(jié)與思考

本文只是簡單聊了一下筆者這幾年程序開發(fā)的感受。好像有句話叫“痛并快樂著”,這個時候說感覺挺合適。可能隨著時間的流逝我們會漸漸失去不斷學(xué)習(xí)的勇氣和精力,但程序員不斷發(fā)掘未知領(lǐng)域的挑戰(zhàn)和設(shè)計思維的藝術(shù)性魅力可能會越來越強,也會吸引更多的人來從事這樣的工作,體會其中的痛和快樂。

轉(zhuǎn)自:賽迪網(wǎng)

QQ在線咨詢