安靜的等待

          茹呲綄鎂
          posts - 51, comments - 9, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          我的未來不是夢

          Posted on 2007-07-20 13:18 ricki 閱讀(272) 評論(0)  編輯  收藏 所屬分類: 職場人生

           

          鞠強(qiáng)

           

           

                   這是一篇關(guān)于成長的心得。仁者見仁、智者見智,如果諸位讀者能夠從此文中看出一點(diǎn)東西來,有所感悟,我就滿足了。

                   我是數(shù)學(xué)系畢業(yè)的,大二開始搗鼓計算機(jī)(94年),最大的興趣就是寫程序。改游戲、改病毒,這些小東西讓人很有成就感。工作后的興趣經(jīng)歷了一個很大的轉(zhuǎn)變(當(dāng)然,這個時間相對于多數(shù)人而言,遲了些),2000年的時候,我突然發(fā)現(xiàn)了我寫的程序的價值。當(dāng)我看到我修改了短短的幾行代碼的時候,給客戶帶來了很大的效率提升,降低了成本,那種成就感,遠(yuǎn)非6年前的認(rèn)識可比了。

                   本文并非專門面對計算機(jī)入門者,所以內(nèi)容比較雜。

                   此段權(quán)作前言,現(xiàn)在進(jìn)入正題。

          知識點(diǎn)要連貫,知識面要廣

                   國內(nèi)的大部分軟件企業(yè),從來沒有像國外那樣,在技術(shù)上保持連續(xù)性。從微軟這條路線來看,從最早的DOS->Win16->Win32->OLE->DCOM,到COM+->.NET,我們很難找到能夠完整走完這個歷程的人。這種現(xiàn)狀,導(dǎo)致大部分的技術(shù)人員,對于開發(fā)技能,有一個很大的斷層:知其然,不知其所以然;碰到非source code的錯誤,就手足無措;或者代碼質(zhì)量低劣,或者性能有很大瓶頸。

                   上面的路線演進(jìn),可以認(rèn)為是“工程”方面的,而非我們大學(xué)教育中的“科學(xué)”。操作系統(tǒng)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)、離散數(shù)學(xué),這些內(nèi)容非常重要。但是我們要注意的是,你學(xué)習(xí)了這些,不代表就能寫好一個程序,能夠解決客戶的問題。工程方面的東西,我們多加掌握,熟練應(yīng)用,配合上述“科學(xué)”的內(nèi)容,才能真正保證程序價值的發(fā)揮。

          而如何讓兩者有機(jī)的結(jié)合起來?我想,不外乎就是興趣+經(jīng)驗(yàn)。

                   在微軟平臺上開發(fā),很重要的一個資源就是MSDN(Microsoft Software Development Network),里面有how to,有concepts,有topics,可以讓我們更好更快的上手。當(dāng)我們碰到某個代碼錯誤,想找某種解決方案的時候,MSDN是一個非常好的助手。對于初學(xué)者,我們可以看里面的how to,step by step的進(jìn)行學(xué)習(xí)。

                   還有一個笨辦法,我剛工作時候采用的,就是找一個老版本的SDK說明文檔(borland開發(fā)工具的幫助里面就有,那個短小精悍,沒有msdn的那么復(fù)雜),從字母A開始,到字母Z,我當(dāng)時花了一年半的時間,基本把所有的API都試驗(yàn)了一遍。這么做有個好處,能讓你快速的對整個開發(fā)有一個概覽。以后在學(xué)習(xí)或者工作中碰到了問題,能讓你有一個大概的印象,知道應(yīng)該怎么做,知道應(yīng)該用哪個API

                  對于現(xiàn)在的應(yīng)用而言,如果是基于.NET的企業(yè)級應(yīng)用開發(fā),我的經(jīng)驗(yàn)是,Win32 API了解即可(當(dāng)然,如果對某一方面很熟練的話,還是非常有好處的。如socket、GDI等。);COM/COM+要知道一些,至少要清楚Add/Release Reference的含義;.NET Framework要深入一些。比如可以拿那本《.NET 高級編程》來做練習(xí)。這本書1000多頁,雖然名之為“高級”,但你可以拿它當(dāng)字典來用。有興趣的,可以按照我說的那個笨辦法,從第一章開始到最后一章,讀一遍之后,自己一個字母一個字母的,把所有的代碼寫上、調(diào)試通過、運(yùn)行,并反復(fù)debug,從中了解語法、語義、一些編程技巧。

                 對于高質(zhì)量的代碼而言,仔細(xì)研讀《Essential .NET》這本書是很有必要的。

                  對于企業(yè)級應(yīng)用開發(fā),還有一點(diǎn)很重要,就是數(shù)據(jù)庫知識。數(shù)據(jù)庫本身的語法很簡單,關(guān)鍵是我們寫出來的sql要成本低,成本低一般就會帶來效率的提升(并非絕對如此)。這部分內(nèi)容,一需要經(jīng)驗(yàn),二需要思想意識的轉(zhuǎn)變。什么思想意識呢?就是要有數(shù)字化的觀點(diǎn)!

                   舉個例子,客戶讓你出一份能夠適應(yīng)未來三年需求的存儲方案,你該如何考慮?如果沒有數(shù)字的觀點(diǎn),很可能的結(jié)果就是瞎蒙出來的數(shù)字。如果有了數(shù)字觀點(diǎn),我們很容易提供此方案。

                  對于存儲空間,我們可以仔細(xì)分析客戶最近2-3年的數(shù)據(jù)庫結(jié)構(gòu)、內(nèi)容,加以咨詢客戶,未來3年的應(yīng)用變化趨勢,最終我們能得到這樣一份提綱:

           

          帳務(wù)管理

          發(fā)票管理

          訂單管理

          用戶個數(shù)

          50

          20

          100

          高峰時間段

          月底3天

          每日

          每日

          每行記錄大?。╧b)

          20

          10

          200

          業(yè)務(wù)發(fā)生筆數(shù)(每天)

          30

          50

          50

          高峰期業(yè)務(wù)發(fā)生筆數(shù)(每天)

          100

          50

          50

           

          假設(shè)每個月工作日是22天,那么計算每個月的高峰期業(yè)務(wù)量、平時業(yè)務(wù)量,得到一個總數(shù),乘以36個月,就能得到一個統(tǒng)計意義上的3年業(yè)務(wù)量。再考慮到tempdb、日志、索引,以及raid,我們就能很容易的得到存儲空間數(shù)字。再通過TPC等要求,得到服務(wù)器的其他配置要求。

           

                   當(dāng)你寫的代碼被別人應(yīng)用的時候,總會有這樣、那樣的問題。硬件,可能會和程序不兼容;軟件,新操作系統(tǒng)你可能不支持;木馬可能讓你的B/S代碼發(fā)生莫名其妙的故障;病毒會導(dǎo)致你的.NET runtime頻繁重啟;BT/emule讓你的應(yīng)用沒有帶寬用、socket無法連接,等等……

                   諸如此類的問題,絕對不是我們在電腦旁邊寫程序時,就能想到的。那怎么辦呢?我們雖然做不到全才,但是要利用好你所處的團(tuán)隊(duì),利用好網(wǎng)絡(luò)資源。這兩點(diǎn)做到了,當(dāng)你積累了相當(dāng)?shù)慕?jīng)驗(yàn),再考慮新的程序的時候,就能有所警覺,讓新程序的架構(gòu)更為合理。(對于架構(gòu),牢牢記住這些:伸縮性、擴(kuò)展性、可靠性,以及安全、性能。)

          當(dāng)你對架構(gòu)有所了解的時候,你又會發(fā)現(xiàn),細(xì)節(jié)決定了一切。細(xì)節(jié)的處理,來自于你的知識面、項(xiàng)目經(jīng)驗(yàn),以及大量的思考。無論.NET還是J2EE,無論是C#還是C++,平時多了解一些,總會對你思考整個軟件,帶來益處的。

           

          軟件開發(fā)是一項(xiàng)事業(yè)

                   軟件是一個非常累的行業(yè),如果想拿高薪、每天八小時工作、周六周日有自己的私人空間,那么在這個行業(yè)你幾乎找不到合適的切入點(diǎn)。

          對于許多新人而言,這個行業(yè)充滿了誘惑,也有很多挑戰(zhàn)。興趣,也許是選擇這個行業(yè)的第一前提。當(dāng)我發(fā)現(xiàn)我寫的程序能夠控制企業(yè)的生產(chǎn)設(shè)備時,無疑是很興奮的;當(dāng)我發(fā)現(xiàn)我的代碼總是會莫名其妙的crash,無疑又是很沮喪的。很快,我們的興趣就容易被這些抽風(fēng)似的問題,磨滅殆盡。

          也許可以這么說,興趣是領(lǐng)我們進(jìn)門的老師,你能讓它跟你越久,你就越能保持前進(jìn)的動力。如果沒有了,這也是一個好事。我在工作后的第三年,突然對所做的一切失去了興趣。后來想,這說明我已經(jīng)度過了那個純粹感性認(rèn)識的階段,“可以”朝理性階段邁進(jìn)了。

          就這個行業(yè)本身而言,我們更多的接觸客戶、更多的接觸實(shí)際需求,這些帶來的沖擊,遠(yuǎn)比一種新技術(shù)對我們的影響,要猛烈的多??蛻裟抢镉懈魇礁鳂拥挠布h(huán)境、網(wǎng)絡(luò)環(huán)境、軟件環(huán)境,有各種管理模式的應(yīng)用。接觸的久了,我們自然就會思考:

          l 我寫的代碼,該如何改進(jìn),才能適應(yīng)各種環(huán)境?

          l 應(yīng)用上采用什么架構(gòu),可以滿足可預(yù)見到的未來的需求?

          l 怎么做,能讓程序在sqlserver和oracle、db2上都跑的很好?

          l 安全上,代碼中的sql injection,真是那么容易解決的嗎?

          l 我的程序能夠無縫的在客戶那里的.NET Frame1.1/2.0上切換嗎?

          l 我的程序,如何能在windows 2000上跑的更快?

           

          當(dāng)我們有了這些思考,實(shí)際上,興趣就又回來了。這些問題毫無疑問,都不簡單,但都很有意思。我相信,這是一個良性的循環(huán)。興趣、事業(yè),交替引導(dǎo)著我們前行。

           

          不要急于為自己定位

                   工作了2、3年之后,我們都會有這個困惑:我以后做什么?繼續(xù)作程序員?作管理?想的再遠(yuǎn)一些,30歲之后,我們應(yīng)該做什么?

                   這個問題,我曾經(jīng)問過我的老板,他和我說,你把自己當(dāng)前的工作做好,好的要做的更好。今后的發(fā)展,是和你目前所做的工作、你的視野、你的經(jīng)驗(yàn),息息相關(guān)的。

                   功到自然成。

                  

          如何看待IT這個行業(yè)

                   我認(rèn)為IT行業(yè),現(xiàn)在剛剛是起步階段,這個階段也許持續(xù)20年或者更長。IT的最終目標(biāo),應(yīng)該是作為一種基礎(chǔ)服務(wù),沉淀在經(jīng)濟(jì)發(fā)展大潮下面。如同水、電、煤氣一樣,我們?nèi)粘8惺懿坏剿鼈兊拇嬖?。一旦停電、停水、停氣,我們才會感覺到不便,才會發(fā)現(xiàn),整個經(jīng)濟(jì)的運(yùn)轉(zhuǎn),都離不開這些基礎(chǔ)設(shè)施。

                   軟件方面,最終也會發(fā)展到這么一個階段。黑客帝國二里面,議會老大和NEO在談?wù)搈atrix和“真實(shí)”世界,透過繁榮,背后是巨大的能量供應(yīng)基地、星羅棋布的管道,這一切看起來丑陋的東西,被深深地印藏在背后了。

           

                   從目前來看,軟件還是在盡量的模擬世界,盡量的從數(shù)據(jù)中發(fā)現(xiàn)我們所生存的這個世界的真相。這首先需要我們把所有能發(fā)現(xiàn)的現(xiàn)象,都抽象出來,需要龐雜的數(shù)學(xué)理論支持,需要硬件的革命性地變化支撐。

          但這是一個非常困難的工作,也許幾代人的時間我們才能做到。我們目前所做的,正是這偉大變革的第一步。

          做好選擇:進(jìn)大公司?進(jìn)小公司?

                   每個臨近畢業(yè)的,致力于搞軟件的人都會有這個抉擇:進(jìn)大公司?進(jìn)小公司?

                   大公司門檻高,組織結(jié)構(gòu)復(fù)雜,層級很多,待遇也許不會太好,高手眾多。Freshman也許要適應(yīng)幾年的時間,才能展露頭角。

                   小公司門檻低,結(jié)構(gòu)單一,待遇相對會好。新手很容易抓住機(jī)會,在項(xiàng)目中成長起來。

           

                   眾多走過來的人都有這個經(jīng)驗(yàn),大公司里面你會學(xué)到很多東西,各方面會正規(guī)一些;小公司的生存壓力比較大,也許你會成為一個多面手,但成為一個高手,會很困難。道理很簡單,一個是發(fā)展階段,一個是生存期,這兩種狀態(tài)決定了公司的運(yùn)營狀態(tài),決定了軟件研發(fā)的思路,決定了市場思路。

           

                   我個人的體會是,開始進(jìn)入大公司,應(yīng)該是一個不錯的抉擇。如果進(jìn)了小公司,就要考慮如何踏實(shí)的把工作做好先,如何能夠全面、快速的成長。

           

           

           

          作者鞠強(qiáng),10年的企業(yè)管理軟件開發(fā)經(jīng)驗(yàn),目前致力于產(chǎn)品性能、安全方面的研究。我的聯(lián)系方式是:濟(jì)南市山大路224號,浪潮通軟,郵編250103。聯(lián)系電話:138 5310 1310,MSN是:juqiang1975@msn.com

          主站蜘蛛池模板: 金秀| 迁西县| 白朗县| 定陶县| 马尔康县| 横山县| 黄梅县| 肇州县| 沙坪坝区| 寿宁县| 富民县| 长阳| 华阴市| 措勤县| 延安市| 万全县| 壶关县| 财经| 兰州市| 江口县| 灵川县| 阳朔县| 上犹县| 凤台县| 石泉县| 双桥区| 遂昌县| 邯郸市| 德保县| 大石桥市| 保山市| 万荣县| 邹平县| 台北县| 开化县| 双峰县| 施甸县| 怀柔区| 长汀县| 卫辉市| 新泰市|