安靜的等待

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

          我的未來不是夢

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

           

          鞠強

           

           

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

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

                   本文并非專門面對計算機入門者,所以內容比較雜。

                   此段權作前言,現在進入正題。

          知識點要連貫,知識面要廣

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

                   上面的路線演進,可以認為是“工程”方面的,而非我們大學教育中的“科學”。操作系統、數據庫、數據結構、離散數學,這些內容非常重要。但是我們要注意的是,你學習了這些,不代表就能寫好一個程序,能夠解決客戶的問題。工程方面的東西,我們多加掌握,熟練應用,配合上述“科學”的內容,才能真正保證程序價值的發揮。

          而如何讓兩者有機的結合起來?我想,不外乎就是興趣+經驗。

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

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

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

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

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

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

                  對于存儲空間,我們可以仔細分析客戶最近2-3年的數據庫結構、內容,加以咨詢客戶,未來3年的應用變化趨勢,最終我們能得到這樣一份提綱:

           

          帳務管理

          發票管理

          訂單管理

          用戶個數

          50

          20

          100

          高峰時間段

          月底3天

          每日

          每日

          每行記錄大小(kb)

          20

          10

          200

          業務發生筆數(每天)

          30

          50

          50

          高峰期業務發生筆數(每天)

          100

          50

          50

           

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

           

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

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

          當你對架構有所了解的時候,你又會發現,細節決定了一切。細節的處理,來自于你的知識面、項目經驗,以及大量的思考。無論.NET還是J2EE,無論是C#還是C++,平時多了解一些,總會對你思考整個軟件,帶來益處的。

           

          軟件開發是一項事業

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

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

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

          就這個行業本身而言,我們更多的接觸客戶、更多的接觸實際需求,這些帶來的沖擊,遠比一種新技術對我們的影響,要猛烈的多。客戶那里有各式各樣的硬件環境、網絡環境、軟件環境,有各種管理模式的應用。接觸的久了,我們自然就會思考:

          l 我寫的代碼,該如何改進,才能適應各種環境?

          l 應用上采用什么架構,可以滿足可預見到的未來的需求?

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

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

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

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

           

          當我們有了這些思考,實際上,興趣就又回來了。這些問題毫無疑問,都不簡單,但都很有意思。我相信,這是一個良性的循環。興趣、事業,交替引導著我們前行。

           

          不要急于為自己定位

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

                   這個問題,我曾經問過我的老板,他和我說,你把自己當前的工作做好,好的要做的更好。今后的發展,是和你目前所做的工作、你的視野、你的經驗,息息相關的。

                   功到自然成。

                  

          如何看待IT這個行業

                   我認為IT行業,現在剛剛是起步階段,這個階段也許持續20年或者更長。IT的最終目標,應該是作為一種基礎服務,沉淀在經濟發展大潮下面。如同水、電、煤氣一樣,我們日常感受不到它們的存在。一旦停電、停水、停氣,我們才會感覺到不便,才會發現,整個經濟的運轉,都離不開這些基礎設施。

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

           

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

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

          做好選擇:進大公司?進小公司?

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

                   大公司門檻高,組織結構復雜,層級很多,待遇也許不會太好,高手眾多。Freshman也許要適應幾年的時間,才能展露頭角。

                   小公司門檻低,結構單一,待遇相對會好。新手很容易抓住機會,在項目中成長起來。

           

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

           

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

           

           

           

          作者鞠強,10年的企業管理軟件開發經驗,目前致力于產品性能、安全方面的研究。我的聯系方式是:濟南市山大路224號,浪潮通軟,郵編250103。聯系電話:138 5310 1310,MSN是:juqiang1975@msn.com

          主站蜘蛛池模板: 临安市| 额济纳旗| 南平市| 武城县| 涞水县| 丽水市| 汝城县| 革吉县| 永川市| 新乡市| 永安市| 改则县| 新沂市| 大兴区| 合江县| 崇义县| 顺平县| 四会市| 五峰| 南丰县| 邻水| 安顺市| 舒兰市| 肥东县| 荣成市| 思南县| 攀枝花市| 马边| 同心县| 图木舒克市| 呼图壁县| 龙门县| 楚雄市| 达孜县| 腾冲县| 孝昌县| 绥棱县| 万山特区| 祁阳县| 磐石市| 富平县|