主題:[分享]程序員真實故事系列@個人特別推薦閱讀@
標 題: 一個人的奮斗歷程
這些日子我一直在寫一個實時操作系統內核,已有小成了,等寫完我會全部公
開,希望能夠為國內IT的發展盡自己一份微薄的力量。最近看到很多學生朋友和我
當年一樣沒有方向 ,所以把我的經歷寫出來與大家共勉,希望能給剛如行的朋友們
一點點幫助。 一轉眼我在IT行業學習工作已經七年多了,這期間我做過網頁,寫過
MIS、數據庫,應用程序,做過通信軟件、硬件驅動、協議棧,到現在做操作系統內
核和IC相關開發,這中間走了很多彎路,也吃了不少苦。
我上的是一個三流的高校,就連同一個城市的人多數都不知道。因為學校不好
也就沒有指望能靠學校名氣找一個好工作。所有的希望都寄托在自己的努力上了,
大一開學前的假期我就開始了學習,記得我買的第一本書是《計算機基礎DOS3.0》
,大家別嚇著了,其實當時已經普及了DOS6.22了,只是我在書店里看到了DOS4.0,
5.0,6.0的書,以為像英語那樣是第四、五、六冊,記得當時到處找DOS1.0,現在
想想也幸好我沒有找到:)開學前我學完了PASCAL,那時既沒有計算機也沒有人可
以請教,我連程序是什么的概念都沒有, 只好死記硬背代碼,然后拿紙寫,我一直
到大三才有了一臺486,在這之前用紙寫了多少程序我也記不清楚了,只知道最長的
一個我拿A4大小的草稿紙寫了30多頁,我的C語言、C++ 、VC都是在這樣的條件下入
門的。所以說條件是可以克服的,希望我的經歷多少給條件艱苦的同學們一點信心
。第一次上機是在我姐夫的機房,我的心情激動的無與倫比,但是一上機我立刻傻
了眼,他們用的是英文版的Win3.1,我的那點DOS知識都見了鬼,上機提心吊膽的一
陣瞎摸,一不小心把Word弄成了全屏,怎么都還不了原,當時真是心急如焚,我以
為機器被我弄壞了。第一個C語言程序,就是那個經典的HelloWorld,我調了幾個星
期,上機機會非常少,也沒有書告訴我開發環境(TC2.0)需要設置,而且開始我都
不知道有編譯器,我甚至自作聰明把寫好的程序擴展名從.c改成.exe,結果可想而
知。大一學完了C、X86的匯編、數據結構、C++。由于精力都花在自學上了,大一下
四門課掛了彩,三類學校就是這點好,掛上一二十門也照樣畢業。不過扯遠點說,
我那么刻苦都及不了格,可見我們國家的計算機教育有多死板。
大二準備學VC和BC,當時難以取舍,后來選了VC,不為別的,只為書店里兩本
書,VC 那本便宜6塊錢。我的努力在班上無人能及,學的日夜不分,大三有了計算
機后更是如此, 很多次父親半夜教訓我說我不要命了,我一直覺得自己基礎差,記
憶又不行,條件也不好 ,所以覺得只有多花點時間才能趕上別人。居然后來有許多
朋友說我有學計算機的天賦, 讓我哭笑不得。我用的是486,16M內存,1G硬盤,當
時同學們的配置都是P166MMX,我安裝 一個Windows NT4.0需要一個通宵,編譯一個
BC5.0向導生成的程序需要近兩個小時,我的顯示器是個二手的,輻射非常大,開機
屏幕冒火花,看起來很酷的:),有一次程序寫的太久,覺得怎么白色的編輯器背
景變成了紫色,以為顯示器壞了,后來才發現眼睛不行了,不過說來也奇怪,到今
天我的視力還能保持1.5,真是個奇跡。但是就是那臺破機器陪伴了我兩年,讓我學
會了VC、Delphi、SQLServer等。后來那臺機器給我阿姨打字用,據她說一天她正打
的開心,一股青煙夾著火苗從顯示器鉆出來,之后它才壽終正寢。
大三假期找了個機會在一個計算機研究所實習,與其說實習不如說是做義工,
工作了兩個月一分錢沒有拿。但是這兩個月對我的發展幫助很大,讓我早一步了解
了社會,剛去的時候我當然是一竅不通,在那里我熟悉了網絡,學會了Delphi和Or
acle。由于工作很認真, 得到了比較好的評價,在一位長者的引薦下,我開始和他
們一起做項目,這使我在大三大四就有了自己的收入,大四又找了兩家MIS公司兼職
,雖然錢不多,但是在學生期間有1000多的收入我已經非常滿足了,我終于用自己
賺的錢把計算機換了。大四下開始找工作,這時我的工作經驗已經比較多(當然現
在想想非常幼稚),開始聽父母的想去那個研究所, 實習過那個部門也希望我能去
,但是不知道為什么最后不了了之,這種單位就是比較官僚 ,我一氣之下就到了我
兼職的一個公司做MIS的TeamLeader。在大三到畢業一年的時間,做過了各種MIS,
從煤氣、煙廠、公安、鐵路、飲食到高校,什么有錢做什么,工作也很辛苦 ,經常
加班和熬通宵,從跟客戶談需求到設計、編碼、測試、交付都要上。那時覺得很有
成就感,覺得自己還不錯,現在想想真是很膚淺。
剛走上工作崗位的學生很容易被誤導,各種開發工具讓人眼花繚亂,同時也覺
得很受 公司器重,但這樣工作永遠是一個低層次的開發者。不要跟我說什么系統分
析有多么多么重要,多么多么難。你以為自己跟用戶談需求做設計就是系統分析和
設計了嗎,國內又有幾個公司能夠做的很到位很規范?我是ISO9000內審員,也在R
ational公司受過多次培訓,拿了4個證書,還有一個公司讓我去做CMM。這些我聽過
很多,但是很多事情到國內就變了性質,一個公司不是通過了ISO9000或者CMM就能
規范了,我現在在一家有幾十年歷史的外企工作,里面的管理不是一般國內企業能
及的。作為一個畢業不久以前沒有步入過社會的學生,幾乎不可能在很短的時間掌
握系統分析和設計,面向對象、UML只是一個工具,關鍵是人本身的思想,不是說你
熟悉了C++、Rose就能夠做出好的設計,相反如果你具備了很高的素質,你可以用C
寫出比別人用C++更加模塊化的程序。
話說遠一些,國內軟件開發行業有一個怪圈,很多人覺得VC > Delphi > VB,
真是很搞笑。這幾個軟件我都做過開發,說白了他們都是工具,應該根據應用的需
要選擇采用哪個,而不是覺得哪個上層次。如果你因為用某個開發工具很有面子而
選擇的話,只能說明你很淺薄。如果說層次,那么這些工具都不上層次,因為它們
用來用去都是一些系統的API,微軟的朋友不會因為你記住他們多少個API或者多少
個類就會覺得你很了不起,你永遠只是他們的客戶,他們看重的是你口袋里的銀子
。我也做過系統內核,我也封裝過很多API,同樣我也不會看重那些使用這些API做
二次開發的客戶,除非他能夠作出自己獨到的設計。
至于有人認為C++ > C那更是讓人笑掉大牙,不妨你去打聽一下,現在有幾個操
作系統內核是用C++寫的,又有幾個實時系統用的是C++,當然我也不是說C++不好,
但是目前的內核和實時系統中C++還無法與C匹敵,至于說C++適合做應用系統的開發
那是另外一回事。所以我的觀點是不在于你用什么工具和語言,而在于你干什么工
作。你的設計體現了你的技術層次。
這樣干了一年我覺得非常苦悶,做的大多數都是熟練工種的活,個人技術上沒
有太多 的提高也看不到方向。所以決定離開這個城市去上海,尋求更好的發展,并
且打算放棄我以前的MIS轉到通信行業。
寫到這里不能不提到我女朋友,我們是在來上海前半年認識的,她大四在我公
司實習,公司派她給我寫文檔,我們的感情發展的很快。她告訴我很多事情,她家
原本是改革開放的第一批暴發戶,她母親愛打牌,輸掉了幾百萬,還欠了很多債,
她有男朋友,但是她對他沒有感情,只因為他給了她母親兩萬多塊錢,后來還強迫
她寫了四萬塊的借條,她男朋友背叛過她并且不止一次打她,現在逼她結婚不然就
要她還錢。這人居然還是一個高校的老師!她母親把父親給她的學費花了,因為拖
欠學費她沒有辦法拿到畢業證。她母親現在有病需要錢,我拿出了自己的一點積蓄
并且跟朋友們接了一些,替她交了學費并給她母親看 病(后來才知道看病的錢又不
知所終,就連她母親是不是有病我都不知道,但她也是沒有辦法)。這個時候我家
知道了一些事情,堅決反對我和她在一起,她原來的男朋友也極力破壞。無奈之下
我們決定早一定離開這個傷心的城市,并且瞞著我們家。由于時間倉促,我只準備
了4000塊錢,她僅有的幾百塊錢也被她母親要去了,我買了三張票,一張是中午的
,兩張是晚上的,中午我的家人把我送上船,他們一離開我就下了船,我和她乘坐
晚上的船離開了這個我和她生活了很多年的城市,帶走的只是一身債務。沒有來過
上海的我們兩個性倔強,都不愿意去麻煩同學和朋友。來到上海是傍晚6點半,我們
都不知道該去哪里,我們找了一個20塊錢的旅館,這個房間連窗戶都沒有,7月份的
天氣酷熱難耐,房間里非常悶熱。第二天我們開始租房子,因為身上的錢不多,我
們基本都是步行,花了一個星期時間,不知道在浦東轉了多少圈后找到了一個400塊
的房子,但是我們都不了解上海是付三壓一,還要付半個月的中介費,買了一些鍋
碗瓢盆后,我們身上只有800塊錢了,工作都還沒有著落,這800塊錢要支持到我們
拿到第一個月工資,為了省錢我們自己做飯,每天買菜只花兩塊錢,她非常喜歡吃
(也可能她在大學經常挨餓的愿意),看到她現在這樣省吃儉用我真的很不忍心。
她以前的男朋友也沒有放過她,經常打電話來騷擾,并且來上海看她,還說了不少
恐嚇她的話,她過于善良,說他以前畢竟幫助過她,叫我不要與他一般見識。以后
的每天在家就是苦等面試通知,原本我想迅速找一家MIS公司解決眼前的困難,但是
她堅持讓我不要放棄自己的理想,終于功夫不負有心人,我找到了一家通信公司,
4000塊的工資雖然趕不上MIS公司給我開出的價位,但也夠在上海生存。她也找到了
工作,第一天上班她哭了,這是她來上海第一次流淚,我心里很難受也很感動。
由于是全新的行業,我把自己降到了零點,我學的VC、Delphi、數據庫派不上
用場, 擺在我面前的是嵌入式、協議、信令一些我從未接觸過的知識。我知道我沒
有退路,于是拼命的學習,我把自己當做一個應屆畢業生一樣,一分努力一分收獲
,半年過去我終于熟悉了工作,并且得到了公司的表彰,薪水也加了一級。后面的
日子里我們省吃儉用,把欠朋友的1萬多塊錢還了,日子終于上了正軌。這時女朋友
告訴我她想考研究生,我也很支持,于是她辭職在家備考。
另外,在這里我要感謝我的ProjectManager,他原來是一個大通信公司的產品
經理, 對人非常和善,我從他那里學到了很多知識,而且他也給了我許許多多無私
的幫助。在工作上他給我充分的空間和信任。記得公司安排我維護一個接入服務器
軟件,由于代碼量不算太小(5萬行),資料和文檔都不齊全,我維護起來非常吃力
,所以想重新把它做一遍, 公司領導不太支持,可能覺得工作量太大,但是他極力
支持我,私下里他讓我放手去做, 我的維護工作他擠時間做。在他的支持下,我花
了半年時間完成了接入服務器的軟件,并且實現了一個相對完整的TCP/IP協議棧。
在這里我學會了嵌入式系統設計、驅動開發、TCP/IP和很多通信的知識,我花了一
年時間終于使自己從MIS開發轉到了通信行業,并且站穩了腳跟。我的開發大量是對
硬件的直接操作,不再受微軟的操作系統,VC、Delhpi這些開發工具的約束,我終
于看到了另外一片天空。
我做事情喜歡追根問底,隨著開發的深入,軟件開發與硬件聯系越來越緊密,
硬件知 識的匱乏又對我的發展產生了障礙,而且芯片技術基本上掌握在國外公司的
手里,這對做系統級設計是一個非常大的制約,一個新產品出來,第一道利潤(也
往往是最豐厚的利潤)常常都被IC公司如Intel、Motorola賺去了,國內的廠商只能
喝點湯。所以我決心解決自己的硬件技術障礙,并打算離開通信行業,進入IC設計
相關領域。
當然我明白如果我對硬件了解的非常少,沒有哪家IC公司會仁慈到招我這樣一
個一竅不通的人來培訓。所以我必須努力打好基礎,學一些相關知識為以后做準備
。就像我開始從MIS轉到通信一樣,我看過大量通信方面的書,并且給一個ISP做過
RADIUS計費分揀臺,在這樣的背景下這家通信公司才給了我這個機會。我在的通信
公司是做系統設計的,有不少PCB Layout硬件人員,平常我就注意向他們學習,由
于我做的是軟件,在公司看硬件資料不好意思,所以開始只好在家看,剛來上海工
作我連續一年都在加班,后來不加了,因為我要擠出時間學習,通常我12點左右睡
,第二天5點半起,我上班比較早,地鐵上如果人不多我也用來看書。學習當然不會
是一帆風順的,有些實在不懂的問題就積累起來問硬件人員,他們的幫助使我學習
進度快了很多,因為在沒有人點撥的情況下自學,我的一半時間是花在解決疑難問
題上,但這種問題經常是別人的一句話就可以讓我豁然開朗,我非常慶幸我有這樣
的學習環境。在后面的一年里,我學會了看硬件原理圖,學會了簡單的硬件設計(
模擬電路方面還有不小的差距),事情就是這樣的,當你安安份份做軟件,別人永
遠認為你是軟件開發人員,在你開始學習硬件時別人未必會認同,有位中興通訊的
朋友還對我說過,一個人不可能把所有東西都學完。我也明白這一點,但我希望自
己做的更好。但當你熟悉硬件后大家又會覺得你好像原本就是軟硬件都懂的,同事
們也都習以為常了。這個時候我可以把硬件資料堂堂正正的拿到公司看,沒有人再
大驚小怪了。 讓我比較自豪的是我通過自己的努力做了一個IAD(軟交換的終端設
備)系統方案,包含軟硬件的選型、設計等內容,這個方案得到了公司和同事們的
認同,讓我感到非常欣慰。
技術是相輔相成的,當我的硬件有了一定的進步后,我的軟件設計也有了很大
的提高 ,我可以從更深層次理解問題,我做的接入服務器CPU是Motorola PowerPC
860,熟悉的朋友都知道860 QMC與軟件的批量數據傳輸通常采用BD表的方式,硬件
人員做驅動的時候習慣采用固定BD表,每接收或發送數據都將數據從BD表拷貝到用
戶Buffer,或從用戶Buffer拷貝到BD表,由于理解的比較深入,我自己重新實現了
這個過程,采用動態BD表的方式,驅動從一個網口接收數據,提交給我的軟件進行
三層交換,直至從另外的接口發送出去,沒有進行一次拷貝。這樣的設計大大提高
了性能,使系統的指標接近理論值。軟硬件的結合使我的設計水平上了一個臺階。
我現在寫的這個操作系統,編譯后我把程序反編譯成匯編,找出其中不優化的代碼
,然后在C程序中進行調整。舉個例子,很多CPU沒有專門的乘法指令,這個大家應
該都知道,在這種CPU上進行一個乘法操作常常會花費大量的指令周期, 有的朋友
會說這個我知道,我會盡量避免采用×號,但是事情往往不是那么簡單,你知道
C語言中數組的下標操作是怎么實現的嗎?仔細看看反匯編的代碼你就會明白,同樣
是通過下標的定位操作,C編譯器會有時候會產生位移指令,但有時候會用乘法實現
,兩者效率往往是天壤之別,所以明白這些問題你才能將系統性能提升到極致。?
些問題就不多說了,有興趣的話以后可以共同探討。
話說遠一點,我由衷的希望在軟件上做的比較深入的朋友們有機會學學硬件以
及其它 相關知識,尤其是做底層開發和嵌入式設計的。這對軟件技術的提高有非常
大的幫助,否則很多事情你只知道該這樣但不會明白為什么該這樣。我這個觀點在
我現在的IC公司Project Manager那里也得到了驗證。他告訴我們公司現在的802.1
1芯片產品的軟件經理原本是做該芯片硬件設計的,某某某原本是做軟件的,現在在
做IC,類似的例子還有很多,只是在國內這樣的風氣不是非常流行。
我有一些心得體會與大家分享,只有當我干好本職工作后,我才會學習與工作
關系不 大的技術,這樣公司的上司才不至于反感,在入門階段的問題我通常不去問
那些資深人士 ,而是問一些資歷比較淺的朋友,比如剛畢業不久的學生,因為他們
往往會跟你詳細的講解,而資深人士通常覺得你的問題太簡單,所以回答的也很簡
單,我又不好意思多問。等技術上了一定的層次后我才會問他們,他們也能給你比
較深入的回答。另外,有些朋友說我機會比較好,他們也希望能從事新的工作可惜
沒有機會,我聽了只有苦笑,我的機會了解的人都應該知道,我沒有出生在什么IT
世家:)也沒有誰一路提拔我,所有的路都是自己走出來的,我母親去世比較早,
我的后母(我叫她阿姨)看著我努力過來的,一次她看我大年30還在寫程序,她說
像我這樣努力木頭都能學出來。
我的最終目的是IC而不是PCB,所以我下一步的準備開始學習IC設計的知識。公
司的同事沒有懂IC設計的,后面的路又要靠自己了,我買了不少相關的書,在網上
也查了很多的資料,我花了大量的時間去學習VHDL,并且用軟件進行了一些簡單的
設計和仿真(沒有設計ASIC,只是針對FPGA),隨著學習的深入,我漸漸明白了IC
設計的基本流程,同時也明白了這條路的艱辛。這個時候我已經做好了跳槽的準備
,我向一家業界又一定知名度的IC設計公司投了簡歷,并通過了漫長的面試(4個多
小時)。其他的一切我都比較滿意,唯獨薪資差強人意,我也明白原因,因為我是
這個行業的新人,我沒有經驗,我再一次將自己清零了。公司老板問我6000多一個
月能不能接受,我知道他也是照章辦事。想想我通信行業的朋友們,基本上都是年
薪10萬以上,月薪過萬的也比比皆是,朋友們也幫我介紹了不少待遇不錯的公司,
我該怎么選擇,當時我很猶豫,我熱愛我的事業,我向往我的追求, 但我也是一個
普通的人,我也需要養家糊口,我也想早一點買房買車。生活給我出了一道難題。
愛因斯坦在63歲時說過“一個人沒有在30歲以前達成科學上的最大成就,那他
永遠都不會有。”這句話給了我很大的壓力和震動,我馬上就26歲了,離30只有四
年時間,我必須抓緊這幾年寶貴的時間,努力達到我技術上的最高峰。為了這個理
想,為了能離自己的夢更近一些,我選擇了這家IC公司,我明白自己的薪資和公司
剛進來的碩士研究生相差無幾, 但為了今后的發展只能忍受,一切又得重新開始。
換行業是一個非常痛苦的過程,尤其從一個春風得意的位置換到一個陌生的崗位,
感覺象從溫暖的被子里鉆出來跳進冰水中,讓人難以接受。在原來那家通信公司,
我是唯一兩年時間漲了五次工資的員工,公司和同事都給了我極大的認可,工作上
也常常被委以重任。但現在這一切都成了過去,在新的公司我只是一個新人,沒有人
知道也沒有人在意我過去的成績。我決定重新開始,我把自己看作新畢業的學生,
我要用自己的努力得到公司的認可。進入新的行業是非常痛苦的,我告訴自己必須
忍受這一切,雖然外面有很多誘惑,但是既然作出了選擇我就不允許自己輕易放棄
。
我現在已經在這家新公司上了一個多月的班,開始非常艱難,現在慢慢適應了
。第一 個月結束時,Team Leader找我談話,說我是新進員工中最優秀的一個,我
心里很欣慰,這也算對我努力的一個肯定吧。在這里還要感謝我的女朋友,她給了
我很大的支持和鼓舞, 每次在我動搖的時候她都在鼓勵我,讓我堅持自己的理想,
剛來上海是她讓我不要勉強去做MIS,這次也是她讓我頂住了月薪過萬的誘惑,沒有
她我可能不會有今天的成績。 現在的公司有自己的操作系統,自己的CPU、DSP和其
它芯片,在這里我能學到世界上最先進的技術,我們的設計開發不再完全依賴別人
的硬件和系統,這讓我很開心。我打算等工作步入正軌后,全力學習新的知識,實
現我的理想。
在后面的兩年里我給自己定下了幾個目標:
一.努力做好本職工作,在工作上得到公司和同事們的認同;
二.努力學習IC硬件設計知識,多向同事請教,并利用一切機會多實踐;
三.實現我的實時操作系統的主要部分,完成TCP/IP協議棧模塊,并免費發布源代碼
;
四.和我女朋友結婚并買一套小房子,這是最重要的,因為我明白事業是可以重來的
,但是珍貴的感情很難失而復得。
在這里提一下我現在開發的操作系統,它是一個實時嵌入式系統,目前支持以下特
性:
a.支持時間片輪轉調度和基于優先級調度,最多64個優先級;
b.搶占式實時內核;
c.為了便于移植,主體用標準C實現;
d.匯編代碼非常少,不到100行;
e.支持任務管理,各任務有獨立的堆棧;
f.進程同步和通信目前完成了Semaphore,Message Queue正在調試;
g.實現了定時系統調用;
h.可以在windows上仿真調試
我還打算下一步實現優先級反轉保護,Event Flag,Data Pipe,內存管理(以前實
現過)、驅動接口等。 在這之后我還會努力完善它,比如加入文件系統,協議棧、
調試接口等。希望朋友們提出自己的意見和建議,在此不勝感激!
后記:
就像有的朋友說的,我的經歷或許會給一些朋友產生誤導,在這里我必須說明
一下。 我來上海以前學習過于拼命,常常晚上只睡3個多小時,我身高1米71,那時
只有108斤(我現在130多),家人也說我這樣拼命活不過60歲,但是當時的我太固
執,我對他們說只要能實現理想活50歲我就夠了。那時的拼命使我的身體受到了影
響,有一次早上突然腰肌劇痛難忍,痛的我倒在床上站不起來。雖然我現在已經比
較注意,但有時候還會隱隱作痛。后來在女朋友說服了我,來上海以后我不再如此
。我經常引用父親的一句話“身體是革命的本錢”。
而且我也發現拼命不是辦法,我可以熬一兩個通宵,最多的一次我連續工作了
三天三夜, 但是我半個月都沒有恢復過來,這樣是不是得不償失?學習工作應該是
一個長期的過程, 像馬拉松而不是百米沖刺。我現在非常注意調整學習和工作的強
度,我要保證每天盡量有相對充沛的精力,一些年輕的朋友覺得自己也應該拼命努
力,這讓我多少有些擔心,如果我的故事能讓你在學習工作上多一點興趣,我會感
到很開心,但如果誤導了某些朋友,讓你做一些不值得的付出,我會感到很內疚。
技術沒有貴賤之分,我以前換行業是因為自己的興趣所致,而不是對哪個行業
有什么偏見。我希望我的經歷不要給朋友一個錯誤的導向,覺得我始終向更高的技
術發展。其實各行各業做到頂尖都是很困難的。話又說回來雖然技術沒有貴賤,但
是門檻是有高低的, 無論如何,做IC的門檻要比做網頁的高,這一點無可否認。國
家各種人才都是需要的,但是作為個人奮發向上的想法還是應該有的,努力在自己
喜歡的行業上做的更好,而不應該停留在比較膚淺的層次上。
我是一個自己覺得比較有自知之明的人,或許我最大的優點就是知道自己有很
多缺點 :)。我的故事中很多的曲折和錯誤都是由我的缺點造成的,希望大家用審
慎的眼光看待我的經歷,不要被我的“花言巧語”所迷惑。我學習有些隨心所欲,
這給我帶來了無盡的麻煩,也大大阻礙的我的發展。記得我小時候成績比較出色,
但是后來學習嚴重偏科,導致我中學成績一再滑坡,也沒有考上什么好的學校,小
時候的一個朋友,當時的成績和我相仿,但是沒有我這個缺點,她上了清華,后來
在去了美國深造,在一個著名導師手下研究理論科學,這未嘗不是一條更好的出路
。另外我的學習方法也是在不斷改善中的,過去 的學習過于講究數量和時間,那樣
學習既苦而已效率不高,現在我非常注意學習的效率和技巧,這樣才是學習的捷徑
(當然不是指投機取巧),比如說學一相對陌生的技術,如果有條件,不妨問一問
有經驗的人,不需要問很多,往往他不經意的幾句話會給你非常大的幫助,甚至超
過你看一個星期的書。帶著這樣的思想再去學習你會節省很多時間,這樣何樂不為
呢?這些年中我學了不少的東西,由于開始非常盲目,所以學的東西雜亂無章,現
在回想起來讓我啼笑皆非,我把大量的時間浪費在一些沒有必要深入了解的知識上
,畢竟一個人的精力是有限度的。很多朋友很我一樣都背過五筆字形,的確它是個
不錯的輸入法,但是對一個研發人員它絕對不值得你去背,你的時間應該花在有價
值的地方。我這樣的事情還做過很多,我背過CCED、WPS的命令和快捷鍵,在dBase
基本退出歷史舞臺后我還花了很多時間去學習它的使用。所以我的學習在前期缺乏
規劃,沒有明確的短期目的、中期目標,只有一個虛無飄渺的長期的理想。這就像
做設計一樣,好的設計是從需求抽象到代碼有很多過程,而不能得到了需求就立刻
開始開始編碼。
當然這么些年的學習和工作多多少少有些收獲,下面我說說我的一些學習的心
得,這 些方法未必正確,我也在不斷探索和改進中。我的學習和工作有相對明確的
目標,我不會一時心動而去學習某一技術,在下決定之前我會考慮很多,包括長期
的發展,個人路線的規劃,需要付出的代價、可能遇到的困難及解決的辦法等等,
在決定后還會制定更加明確的計劃,包括短期、中期和長期的,身邊可以利用到的
資源(包括好的書籍、資料、軟硬件環境,也包括有經驗的朋友或者師長),以及
每一個階段是怎么過渡到高一階段的計劃,往往在一個學習階段一旦上路后會走的
相對順利,但是跨階段通常比較麻煩,比如從學習基礎知識轉到實踐。另外我買書
也有自己的方法,現在世面上高質量的書遠不如低質量書多,對于一個陌生的技術
,往往在第一次買書會選擇錯誤,即使買到一本好書但是它的方向也未必適合你,
所以我通常會先在網上查找一些該技術的介紹,有了一點點概念后再去買一本比較
薄、相對便宜并且內容相對泛泛而談的書,這是國內作者最善于寫的書:) ,再把
它瀏覽一遍后我就會基本明白這門技術的要點,后面買書和制定計劃就會明確的多
。否則一開始就想找本好書往往比較困難,而且買回來后努力學習,有時候學了一
半才發現是本低質量的書或者是相對過時技術,讓人非常懊惱。另外讓有經驗的人
幫你介紹,通常也是一個不錯的選擇。
有些朋友想學通信、嵌入式開發,但總覺得自己沒有軟硬件環境,我就按我的
了解給 大家介紹一下怎么建立這樣的環境,當然我了解的只是我學習和工作的方向
。通信我做的是數據網方面的工作,包括TCP/IP、二三層交換、對接入網、H.323和
軟交換也有一點認識。這些軟硬件環境都是可以在PC上構建的。你甚至可以在一個
沒有網卡的PC上建立一個包含多個路由器、接入服務器、VoIP網關、網守、主機等
的仿真網絡環境,而且與實際的網絡相當接近,當然這需要你有清晰的網絡概念和
一定的網絡知識,我一直在努力開發一套軟件將這個過程簡化,目前試驗已經做完
,我可能會將它融入我的操作系統外圍擴展軟件中。這樣的方法我無法用簡單的語
句講的很清楚,我可以說一下大概的思想,就是在PC上實現仿真網卡,(知道Wind
ows怎么在沒有網卡的機器實現虛擬網卡技術的朋友都應該會明白),然后每一個仿
真網卡對應一個虛擬設備,如路由器或者主機。你也可以借助第三方工具完成部分
工作,如VmWare等。我現在就是利用一個仿真網卡做自己的開發的。
至于嵌入式開發環境更加容易實現,PC就是一個非常大的硬件平臺,現有的嵌
入式操 作系統通常都支持X86,你可以在上面做開發,通過軟盤Boot或者使用虛擬
機裝載,我用VxWorks做了試驗,在一臺PC上跑Windows和VxWorks兩個系統。另外W
indows上的兼容DOS的16位仿真X86環境也為很多操作系統提供了絕佳的試驗環境,
我的操作系統在Windows上就是這樣實現的。Linux在嵌入式中應用也比較廣泛,它
在網上有大量的資料,而且也相對比較容易實踐。同時很多完善的嵌入式開發環境
支持軟件仿真,如Tornado、WinCE等。
風中玫瑰于2004-11-7 21:50:25編輯過
閱讀次數:209 發表時間:2004-8-17 18:57:15 [轉移] [收藏] [回復] [編輯] [去精華] [解固] [刪除]
用戶注冊 使用說明 功能說明
收費方式 點歌竅門 歌曲列表
回復主題:程序設計師真情懺悔錄
風中玫瑰 | 發貼:11| 魅力:4 | 給他留話
標 題: 程序設計師真情懺悔錄
前言:
不久前,蔡學鏞先生發表了兩篇分別叫做"程序與香雞排","再論香雞排"的文章,受
到的回響之大,據說連作者本人都接到該文的轉寄。足以見得該文的內容道出了臺
灣程序設計師心里最深處的想法。所以,本文想針對臺灣程序設計師來做討論,看看
身為一個程序設計師,究竟犯了什么過錯,導致大家寧愿賣雞排也不愿再繼續寫程
序。璩美鳳小姐為自己驚動臺灣社會的行為寫了真情懺悔錄,我們也該真誠地檢討一
下自己。
本文:
在臺灣,大部分的人都有個認知,就是"搞硬件的比搞軟件的要好賺","做SA/SD比
coding地位要高"。那些做ID Design的家伙待的公司所發的股票,永遠比搞Softwa
re Design的人待的公司發的還多,股價也高出好幾倍。搞SA/SD的人,在公司地位
好象也比單純寫程序的人高。于是我的父親有一次問我:"是不是搞硬件的人智商比
較高?","是不是搞分析設計的人比較有地位?"事實上,在學生時期我就認識不少人
,有的人因為程序寫不過別人,所以轉換跑道專攻硬件;也有人覺得每天面對示波器
和邏輯分析儀讓他們頭痛,工程數學也學不過人家,所以轉行搞軟件。到了實際上
面對許多前來接受教育訓練的學員之后,發現有人是因為寫十幾年BIOS和driver,
覺得乏味而沒有前途,所以想試看看應用程序的開發;有人則是因為受不了客戶每天
改需求,而且寫IOS和driver的人好象比較少,價格比較高,因此想學習如何撰寫系
統軟件。詢問那些上高階課程的朋友,有的人發現自己只會胡做SA/SD唬爛老板和客
戶,所以希望重新打好基礎,從基本的coding做起;有的人則因為寫程序寫太久,覺
得應該往上走向SA/SD的路子,畢竟老了程序就寫不動了。這個世界上什么樣的人都
有,絕對不能以小羨大。就很像搞政治的老是騙我們臺灣只分成外省人和本省人;搞
幫派的人告訴我們警察是帶著槍的流氓。實際上,每個族群大家在沒有被分化之前
都相處的和樂融融,而雖然有警察擄妓勒索,上班時間跑去聚賭,但是也有開我們罰
單時酌情輕罰的警察,和保護我們身家性命的警察。即使如此,身為一個程序設計
師還是要問,那為什么寫程序的好象地位就是比較低? 筆者認為,這是進入門檻的
問題。會做相同事情的人多了,就會削弱那樣技能的價值。就很像考過MCSE/MCSD證
照的人,通常比起考過SCJP/SCJD證照的人要來的沒價值,前者因為考過的人實在太
多,而后者考過的人少,僅是如此而已。但是絕不是代表考過MCSE的人,素質就比
考過SCJP的人要差,也不代表考過SCJP的人,實力真的比較高段。相信求學的時候
您一定遇過一種人,他實力也不怎樣樣,可是考試的時候他x的就是考的比我們高,
怎么我們心里就是不服,可是大多數老師偏偏就是比較喜歡分數高的人。因此,滿
坑滿谷的人自稱會寫程序,老板不愁找不到可以做project的人,你要求的薪水和價
格很高? 沒關系,找個學校剛畢業的小子,寫的比你快,寫的比你好,用的技術比
你新,更重要的,價格比你這個老屁股便宜一
半。所以程序設計師在雇主心中的地位日益低落,自然有跡可循。"那么,為什么寫
程序的進入門檻比較低?"在各位信息從業人員的身邊,非科班出生的比率非常高(當
然沒還賣雞排的高),科班出生的學生,搞不好在老板眼中的地位,還比不上一個半
路出家的自學者。那位
自學者會ASP、JSP、PHP、C++、C+、Java、Linux、Windows、Oracle...等,十八般
武藝樣樣精通。而我們科班出生的學生,只會離散數學、數據結構和算法,Visual
Basic搞不好沒有用的沒人家熟,網站的架設搞不好也沒人家熟,更何況科班出生
的學生,他的基礎學問搞不好根基也不扎實(問看看您身旁的科班學生),難怪最常
見的就是很多非科班的"高手"看不起科班的學生,覺得他們無三小路用,連個Wind
ows操作都比他們差,甚至有的還大言不慚的說:"我這輩子寫程序從沒用過書上的數
據結構和演算法,讀那些干啥?"。長期下來,科班的學生也開始質疑自己的所學,
甚至考慮轉行,當然,也有曲高和寡,孤芳自賞之人。總之,沒辦法受到老板垂青
,薪水永遠那么少,想賣雞排的念頭就開始萌生。之所以會有這種情況,筆者個人
認為有兩種主要原因,一是技術的流通性,二是臺灣軟件市場的需求。為什么技術
的流通性可以產生大量半路出家的非科班生? 這都要感謝臺灣大量作者,寫出大量
的入門書籍,大幅減低的進入程序設計領域的門檻。即使在各位眼中,繁體中文的
爛書很多,而且非常。但是,大家眼中的爛書,常常是再版多次的入門書,對某些
人認為是垃圾的東西,常常是另外一批人進入信息業的最佳踏腳石。不信各位到書
店看看,是"24小時學C++"、"快快樂樂學Java"的書比較多,還是"輕輕松松學微分
方程式"、"21天學復變"、"電子學不求人"的書多? 兩者的差距是 N:0。是微分方程
序和復變比++,Java難學嗎?筆者兩個都學過,至少我可以發誓,就一個有基本學習
能力的人來說,難度是一樣的,學成所需要的時間和功夫也是一樣的。再看我們的
公開討論區(BBS或Forum),我們可以看到大量的軟件技術討論區,卻看不到硬件技
術討論區(喔,請別跟筆者說那些每天問哪家主機板比較好,哪臺燒錄器較穩定、或
者說CPU時脈越高速度就越快越好,或是說x86的Out-Of-Order Executon是"故障執
行" 這一類渾話的討論區和我說的硬件技術討論區是一樣的喔!)書籍和討論區促進
知識的流通,造成了大量的軟件人才,更何況,學習設計軟件只要一臺PC就能寫出好用
的軟件,而學習硬件設計,需要的設備更是天價。
更重要的一點,就是學軟件的人,充分發揮儒家分享的精神,只要不是在BBS上冒充
小妹妹想要騙取大哥哥的同情來幫你寫程序作業,只要不是很差勁的亂問一通,通
常至少會有熱心人士愿意留下一個URL,讓我們可以找到參考文件,更具熱誠的,如
新竹師院BBS站Java版的TAHO先生,還擅用很多生動的比喻讓初學者體會技術的真義
。在這種知識充分流通的環境下,當然產生出非常多的信息從業人員,每買一臺PC
,上頭各種軟件的需求是無窮無盡的,每天都有各行各業的人需要各種軟件,所以
程序設計師的需求有一定的量。難怪有人說:"寫程式的人餓不死,但是也不會發大財
。"再來就是臺灣軟件市場需求所引發的問題.一般我們把軟件分成系統軟件(Syste
mSoftware)和應用軟件(Application Software). 編譯器,組譯器,除錯器,操作系統
,驅動程序,都是屬于系統軟件的一部分.臺灣除了硬件廠商,IC Design House之外,
甚少有撰寫驅動程序的需求.前幾年Linux被炒的熱時,也有許多高手投入操作系統,
編譯器以及簡化標準函式庫的研究.而臺灣所需求的軟件,極大多數是屬于應用軟件
,這些需求的應用軟件其中很大比例是和數據庫有關系的(其實不只是臺灣,其它地方
也是約略相同的情形).所以VB,Delphi和PowerBuilder這類IDE大行其道,因為他們容
易上手,可以快速開發數據庫應用程序,相關入門書籍很多,會的人更多. 因此符合我
們前面所說的:"會的人越多,價值就越低"的理論.但是別忘了,系統軟件有部分是偏
向應用軟件的,比方說開發軟件用的JBuildr和Visual Studio;制圖用的AutoCAD;一
套IC Design用的Xilinx或Altera;做OOA/OOD的Rational Rose和TogetherJ,筆者習
慣稱這些軟件叫做"軟件的軟件"(MetaSoftware).在一般程序設計師眼中,這類軟件
"理所當然"地認為都是由國外所發展.
這類軟件有極高的進入門檻,所以國外這類軟件公司的獲利率很高,所以該公司的程
序設計師可是身價非凡. 要知道,先前在媒體上有報導過,能夠讓Microsoft買軟件來
用的公司,只有Rational Rose(當然,不可能只買Rose來用). 如果做IC Design的人
沒有你的軟件就沒辦法做事,身為一個程序設計師,你會覺得你的身價和地位比做IC
Design的人低嗎? 如果你做的軟體像SoftICE或DriverWorks那樣被做硬件的工程師
大量地倚賴,你會覺得搞硬件的人比你厲害嗎?問題是,知道該如何設計一套這類軟件
的人,恐怕才是真正的異數. 而且需要跨領域的專才.要不是許多OpenSource的proj
ect(例如:KDeveloper)正在進行,恐怕很少人知道該如何設計一套IDE. 既然會制作
這類軟件的人在國內少之又少,那么他們的身價高嗎?很抱歉,臺灣沒有公司發展出足
以和國外大廠競爭的開發工具. 舉IDE為例,國內早期有家公司開發出一套名為DBto
ols的產品勉強可以算的上是這類產品,旗標也曾為它出版過入門手冊,可是使用這套
軟件的人好象...沒看過(如果該產品有不錯的占有率,請原諒我是井底之蛙),沒有市
場,公司無法賺錢,即使你是少數能做制作某類型產品的高手,公司最后關門大吉了,
您也只能算是"少數能讓公司賠錢的程序設計師"罷了.所以我大膽假設, Games Gol
sing或Anders Hejlsberg如果學李敖一樣50年不離開這個小島,大概早餓死了.以上
的討論,真正優秀的高手看了之后,或許會產生有時不我予,不得已必須遠渡他鄉的想
法. 程序設計師的價值就如同書的價值一般,國內和國外有不同的看法.國內教科書
比較便宜,應用的書比較貴.國外教科書比較貴,應用的書比較便宜. 國外重內容,薄
薄一本How Debuger Work可以賣44.99美金.而國內,都是看頁數來計價(侯俊杰先生
的書有努力在打破這個頁數的迷思,也做的蠻成功).有很多原因導致這兩種文化之間
的差異,但是,市場因素肯定是其中重要的一項.
閱讀次數:27 發表時間:2004-8-17 19:00:29 [轉移] [收藏] [回復] [編輯] [加精華] [固頂] [刪除]
回復主題:一對夫妻程序員的故事
風中玫瑰 | 發貼:11| 魅力:4 | 給他留話
標 題: 一對夫妻程序員的故事
發信站: 兵馬俑BBS (Thu Jun 24 12:28:52 2004), 本站(bbs.xjtu.edu.cn)
我剛結的婚,老公是大學同學,都是計算機專業的,畢業之后雙雙來到深圳,熱情
洋溢的工作,期望著靠兩個人的努力建立一個溫暖的小窩,希望永遠相愛過幸福的
日子,畢業一年以后還是男朋友的老公突然被查出來患上了乙肝,很快老公被原來
公司解雇了,而且他們也沒有給我老公辦理任何醫療保險,同時,我也因為化驗單
上出現了三個加號而被公司辭退了,醫生說,我剛剛被感染,可能會產生抗體,也
可能會抵抗不了病毒而患病,和我本來同住的女孩子趁我不在的時候搬走了,當我
看到空白的床鋪時,覺得命運真是會捉弄人,深圳,第一次讓我覺得很冷漠,沒有
了工作,搬離了原來的公司集體宿舍,男友因為打擊而失落的樣子讓我覺得難過極
了,第一次,我沒有任性的哭,而是在街上溜達半天對男友說:沒有關系的,我們
好歹還有點積蓄,我們去租個房子,我去找工作,你好好養病,會好起來的。很幸
運,我在一周之內找到工作了,并在單位附近租了一套房子,那年時內存漲價的時
候,但我怕我不在家的時候他會悶,我們還是花了6400買了一臺電腦,花了1580開
通了ISDN,就這樣,我工作,男朋友開始了艱難的求醫之路,他白天在家里睡覺,上
網,到醫院打針,我每天下班回家做飯,打干擾素很貴,每次都是幾千塊錢,因為
剛到新公司工資不高,原來的積蓄我不敢隨便亂用,準備全部用來支付藥費,所以
在一年的時間里我沒有買過新衣服,沒有買電視,我可是個超級電視迷啊,我上大
學之連自己的內衣都是我媽洗的,現在想想都不知道那個時候自己是怎么堅持下來
的,我本來是個任性的女孩子,愛笑也愛哭,可自從我男朋友病了,我卻很少當著
他的面哭了,想哭我就偷偷一個人哭,記得有一次,老公拿回化驗結果,一點都沒
有好轉的跡象,他終于忍不住哭了起來,看到他的樣子我傷心極了,可我沒有哭,
拼命的逗他笑,可晚上我一個人在洗手間邊洗臉邊哭,現在想想還有點難過,我發
誓我一定要我男朋友重新開心起來,最終有一次,我們從醫院回來,看到化驗單上
的結果醫生將病毒復制的數量標注為微量的時候,我終于忍不住在公車上落淚了,
很奇怪,現在回想這些往事,好像不是發生在自己身上的。
努力的工作,終于讓我得到了高薪和高職位,而男友的身體也沒有那么差了,可
因為他長時間的與外界脫節,而我卻見多了成熟有魅力的大好青年,不免覺得他幼
稚,從此矛盾就產生了,我們吵架,任性的指責他,然后和好,終于我們大吵了幾
次,當我真的想離開他的時候,想起了我們一起度過的日子,我愛他,一如既往,
呵呵,寫到這里,不免要說還是書讀多了就是有好處,讀書讓我們明白事理,知道
討論和溝通的的重要性,我們開始談心,談我們之間性格的差異,談我們因為環境
而造成思想上的差距,最終我們接受了這些,我們承諾對方:我們一起努力。老公
不喜歡交際,除了我,他最喜歡的就是游戲,他是計算機的忠實熱愛者,而我喜歡
玩,是個活潑開朗整天唧唧喳喳的的小女人,終于想明白,思想單純也沒有什么不
好,我工作壓力大,但看到老公就覺得自己因為這些瑣事生氣幼稚極了,所以老公
讓我可以快快樂樂的工作。
不寫了,因為我追看的韓劇開始了,經過8年的風風雨雨,我們結婚了,現在準
備買房子了,好高興的,我不知道我老公是否能看到這個帖子,無論看到與否,我
都想對他說:親愛的老公,我愛你,希望因為有我你可以感到幸福,我會努力的,
努力讓我們更幸福。
很想對天下所有正幸福或者正在經歷不幸的人說:不要被不幸嚇倒,只要熱愛生
活,積極的爭取,幸福會來臨的。
因為愿望是真誠的,所以一定會實現。
今天上班很無聊,喊了老公在sina里聊天,因為他們單位禁了QQ和MSN,我說我
現在覺得很無聊,老公建議我和他一起寫個小游戲然后我們兩個玩,真讓我。。。
暈倒!
其實生活和我剛畢業時夢想的差距很大,而且我付出的努力也應該比其他的女孩子
更多,老公身體不好,被公司辭退,和別人合伙做生意,不僅被騙了三萬塊錢,還騙了
他的全部心血,曾很多時候,我很迷茫,是退縮,還是勇敢的面對一切,我比男孩子
僅有的的一點優勢就是我是女的,而且我不屬于恐龍,我可以嫁個有錢的,而不必
這么辛苦,我很少對朋友講過因為老公的身體不好而帶給我生活的的壓力,因為當
我決定擔負我們生活重擔的時候,我就知道沒有人可以替代我自己,所有的幫助都
是有限的,如果想讓自己幸福,就一定要堅強,要努力,經歷了這么多,真的覺得只
要夠堅強,沒有什么大不了的,我曾經是個程序員,我老公現在也是,所以我知道做技
術很辛苦,也知道做技術的男孩子感情生活也不太多姿多彩,可是,如果熱愛計算機就
努力的工作吧,規劃好自己的發展方向,然后努力,會有豐厚的回報的.
還有,希望社會不要歧視乙肝患者,我老公曾經是嚴重的乙肝患者,我們生活在一
起,我很健康,而我老公曾經因為身體的緣故找工作都成了問題,這些曾給我老公帶來
了很大的壓力,給我們的生活制造了很大的阻力,其實我老公聰明能干,對此我很氣憤
,很想罵人,不過不知道該罵誰好,呵呵. 希望每個人都能夠善待自己,善待別人.祝
福所有喜歡計算機的人,都生活的快樂,幸福.
^-^,第一次將自己的生活感受無所顧忌的寫出來,感覺真好.
閱讀次數:47 發表時間:2004-8-17 19:01:53 [轉移] [收藏] [回復] [編輯] [加精華] [固頂] [刪除]
回復主題:一個還不太老的程序員的體會
風中玫瑰 | 發貼:11| 魅力:4 | 給他留話
標 題: 一個還不太老的程序員的體會
軟件以程序員為本(《程序員》)
謹以此文獻給所有想當程序員的朋友
(一) 文章由來及個人經歷
我是一名計算機專業的本科畢業生,畢業已經1年多了。畢業后從事的是軟件編程工
作,經常有其他專業的朋友想從事軟件編程工作,向我請教如何,因為我自覺涉行
不深,不敢信口開河,無奈朋友信任,我不得不鄭重考慮一下這個問題了,來幫助
朋友選擇和回報朋友的信任。
這也就是此文的由來。
還是先談談我個人的經歷吧。(是不是有點俗套,但我覺得了解我的經歷,有助于
理解我話的含義;我一向認為不了解古龍的生活經歷的,不會真正讀懂古龍的作品
和古龍筆下的英雄的)我本科就讀于南方一所著名的高校(因為自己的不成氣,愧
談母校名謂),學的就是計算機專業。上本科時,幾乎沒有認真的聽完一門專業課
程,上課看報紙睡大覺,下課看錄像看小說看球賽,臨考抱佛腳,每次考試和課程
設計都是蒙混過關。(于之相對是,我選修的工商管理和經濟貿易方面的課到是聽
得不亦樂乎,考的分數頗高,也許這才是我的真正興趣所在。)
總而言之,大學是混過來了,對專業的理解和掌握程度,應該沒有達到畢業要求的
合格水平。(也很后悔,但是有什么用呢,當時不知道珍惜;如果上天再給我一次
機會的話,我一定會抓住,多看點美國大片少看點港片;現在,重回校園是我的一
大理想)但是大學的學習使我有了一個簡單的知識框架(總算學費沒白交),我對
一個朋友這樣形容過我的這個知識框架,“它不是鋼筋鑄的,是稻草扎的”,哈哈
哈,不要笑,真的,我敢說很多本科畢業的朋友的本專業的知識框架也只不過是“
稻草扎的”。直到現在,我一直覺得自己的基礎知識還是很薄弱,一直想抓點時間
,把基礎書本好好的溫習一下。(此項任務正在計劃和實施中)
畢業后,分配到某研究所工作。當領導讓我選擇自己以后的工作方向時,我毫不猶
豫的選擇了軟件(也不知道到底是對還是錯,但我決不后悔)。此研究所主要是以
硬件為核心搞通信控制設備的研發生產;軟件是輔助,所以也不受什么重視,很多
搞軟件的人都跳槽走了,留下來的大都是一些已經廢掉和行將廢掉的“偽/萎”程序
員(名副其實的“軟件人員”)。在這里感覺不到什么高緊張和高技術程度的研究
和開發;軟件開發的技術含量極低,以致于大部分人只有半年的學習和開發經驗,
以后都是這些知識和經驗的重復利用。(我問過其他到研究所工作的同學,他們說
都一樣,嗚呼,我們的國防科研開發呀)對于軟件的開發,領導的意志和老掉牙的
經驗在新課題的技術采用和開發中起了決定性作用,沒有明確的需求,沒有明確的
開發計劃和進度,大家在一天一天一周一周的浪費著寶貴的時間,最后開發出來的
東西修來改去,直至它變成垃圾。 我越來越認識到一點,要么象那些廢人一樣廢掉
,要么自己去努力尋求出路,反正別指望從工作中得到什么高明的經驗了(教訓倒
也許有)。期間發生了一些感情上的糾紛,嚴重的影響了學習計劃和效果,直到現
在浮躁的心仍然有些浮躁。
期間,我讀了一些書,看了一些文章,編過一些小例程,搞了一些沒有什么技術含
量的開發工作,也和一些前輩和高手們談過聊過。 我一直在思考幾個問題;如何學
習軟件開發?如何搞軟件開發,國外的軟件開發到底其秘訣在何處?為何我們的軟
件業一直在低水平徘徊?我們難道真的離了Microsoft就活不了?我們的程序員到底
在浪費時間干些什么?軟件開發到底是如何分類的?我們如何走自己的民族軟件之
路?
我想了很久,一些想通了,一些還在想。但我知道有一點是肯定的,那就是我們一
定要靠我們自己走出自己的軟件之路!跟在別人屁股后面永遠受制于人!
好了,關于經歷和牢騷就先寫這些吧,該進入我們的正題了。
(二) 你適合當程序員嗎,你知道編程序是怎么回事嗎?
1、 程序員意味著要編程序。(如果你僅僅想得到一份高薪水的工作,喝喝咖啡就
等老板發薪水,我奉勸你還是另找一份更合適的工作,譬如練攤,真的,兄弟,這
份工作不適合你)
2、你是學文的還是學理的,編程序也許需要浪漫,但更需要邏輯和嚴謹。(說坦白
點就是,在你沒有找到樂趣以前,它很枯燥)
3、你有對新技術追求的熱情嗎?你有刨根問底的探索精神嗎?(熱情絕對是最重要
的!你仔細思考一下自己的性格適合當程序員嗎?)
4、當程序員決不是什么好差事,時刻需要學習,需要思考。(直到你成為那個可以
引導別人去學習和思考的人,你才可以偷偷的嘿嘿笑,又一群傻蛋)
5、程序員的未來很迷茫。(但我認為關鍵看你自己!我希望你是一個有追求的人,
不僅僅是混碗飯吃。因為真正的樂趣在于創造;如果你能改變軟件業的歷史,那才
是英雄;不想成為Bill Gates,不想成為Dennis Ritchie和 Bjarne Stroustrup,
我會說你沒有追求。有個關于程序員未來的笑話,也許你還沒聽過,你該聽一聽,
摘抄如下:
一個程序員對自己的未來很迷茫,于是去問上帝。
“萬能的上帝呀,請你告訴我,我的未來會怎樣?”
上帝說“我的孩子,你去問Lippman,他現在領導的程序員的隊伍可能是地球上最大
的”
于是他去問Lippman。
Lippman說“程序員的未來就是駕馭程序員”
這個程序員對這個未來不滿意,于是他又去問上帝。
“萬能的上帝呀,請你告訴我,我的未來會怎樣?”
上帝說“我的孩子,你去問Gates,他現在所擁有的財產可能是地球上最多的”
于是他去問Gates。
Gates說“程序員的未來就是榨取程序員”
這個程序員對這個未來不滿意,于是他又去問上帝。
“萬能的上帝呀,請你告訴我,我的未來會怎樣?”
上帝說“我的孩子,你去問侯捷,他寫的計算機書的讀者可能是地球上最多的”
于是他去問侯捷。
侯捷說“程序員的未來就是誘惑程序員”
這個程序員對這個未來不滿意,于是他又去問上帝。
“萬能的上帝呀,請你告訴我,我的未來會怎樣?”
上帝搖搖頭“唉,我的孩子,你還是別當程序員了”)
6、當程序員還是很有樂趣的。(當你學到新知識時,當你有新的思想見解時,當你
有新的產品問世時,和知己探討你的成果時…我問你,覺得這些是樂趣嗎?)
7、當程序員不易也不難。(世間事有難易乎?為之…;不為…。你有決心和信心嗎
?)
8、你真的要當程序員?是你自己的想法?
9、你舍得花錢買書嗎?(讀好書絕對是學習編程的最佳捷徑。你一定會說,現在電
腦書籍真***貴,沒法子,誰讓知識和技術在人家的腦袋,在人家的書里呢;等你寫
書時可以把價格定低一點,記著還有好多沒錢但想買書的兄弟很困難呀。要舍得買
書,買好書,不好的的書不如不讀,其害大于其益,關于買什么書,你可以問高手
或看候捷的書評;準備一個小本子記錄你想買的書的名字,逛書店時看看,如果好
就買下,記住要讀,別光買不看。) 10、我告訴你,程序就是:任何有目的的、預
想好的動作序列,它是一種軟件。
11、編程序就是編寫程序。
12、你想好了嗎?(如果你想好了還是決定要當程序員,可以繼續往下讀;否則,
你可以繼續尋找別的出路了。)
(三) 一個程序員應該具備的基礎知識和概念
1、計算機是有什么組成的,CPU是什么東西,其工作原理是什么。(對于這些以及
下面將要提到的概念我不會告訴你什么答案,你可以看相應的教材,關于教材我會
在下一部分詳述,記住理解最重要!)
2、機器語言和微指令集的概念。
3、程序的概念。
4、匯編語言是低級語言但不是機器語言。
5、高級語言主要有那些?(C,C++,Basic,Pascal,Fortran,C#,Java等等;
如果你是中國軟件業的英雄,你也寫一門語言,最好不用英語) 6、編譯程序和解
釋程序的概念和其原理。(編譯器是高手和專家編寫的)
7、HTML、XML等是標識性語言。
8、Prolog是人工智能語言。
9、操作系統OS的概念和原理。(Windows98,Windows2000,Windows NT,UNIX,L
inux,等等都是OS,還有一些實時OS,嵌入OS,編這些的絕對是高手)
10、Windows編程說白了就是Windows API的調用。(中國的程序員很多只是會編wi
ndows程序,用的是VB,我的建議是這些程序員頂多只是低級編碼員,我稱其是cod
er)
11、VC++、VB、BC、BCB、Delphi、VF等都只是編程的工具和環境,不是編程語言
。
12、面向結構的設計概念。
13、面向對象的概念。(好好理解,兄弟,這個東西還是很重要的)
14、軟件工程的概念和原理。(如果你想當老總就需要好好研究了,系統分析員比
編碼員要高一個等級,薪水也高喲)
15、數據庫的概念。(要熟悉一些著名的數據庫系統和語言的名字,如Orcle,SQL
,DB2,DyBase等)
16、了解網絡概念。
17、了解多媒體概念。
18、熟悉和掌握數據結構和基本算法。
19、是不是要求太高了,別著急慢慢來,進步在不知不覺之中。(一旦開始學習,
一個月以后你就會有一個基本的概念;兩個月以后你就會感覺自己有了全面的基礎
知識;當你知道編程序是怎么回事時,說明你已經入門了。也有很多人編了很多年
程序還沒有入門呢,你不會希望自己步其后塵吧。要有信心和耐心。沉不住氣怎么
能成大事?!)
(四) 教材推薦
――-推薦的教材主要還是針對概念來的,最好選用名校的教學用書。
1、《計算機組成原理》(熟悉)
2、《數據結構》(掌握)
3、《操作系統》(了解->熟悉)
4、《The C language》(掌握)
5、《編譯原理》(了解原理)
6、《匯編語言》(了解)
7、《計算機網絡》(了解)
8、《軟件工程》(了解)
9、《關系數據庫》(熟悉)
10、《The C++Languege 》(掌握)
11、《面向對象設計》(掌握;結合C++學習)
(五)一些經驗和體會
1、真正的程序員用C++;(一位專家說的)
2、動手去編程序;
3、動腦去思考;
4、要有良好的編程風格;
5、讀書,讀好書,盡量讀原版書!(我反復強調這一點,讀書要有選擇,堅持讀好
書,名家出的經典書,不要浪費實踐在一些粗制濫造的書上面;堅持博覽群書)
6、有自己的學習計劃;
7、總結自己的經驗教訓;(準備一個筆記本,記錄錯誤和心得)
8、不要怕學新東西;
9、要有軟件工程的思想;
10、善于發現問題,然后去尋找答案;
11、向高手請教;(要虛心直到你成為高手)
12、和同行交流;(不善于交流肯定不行)
13、懂得軟件的實質,不要被千變萬化的表象所迷惑;
14、真正要學習用的是編程語言和方法,不是什么庫,什么類,什么工具;(學用
那些什么庫都比較簡單,但光會這些庫,我覺得還遠遠不夠)
15、學習wiodows編程主要是學習windows OS和win32 API;
16、有空了解一下嵌入式開發;
17、有空了解一下PDA軟件開發;
18、了解一下.NET框架和C#語言,也許它是你新的衣食父母;
19、要有耐心,不要作浮躁的人; 20、對程序加注釋,并保留你的老程序;
21、學到的東西越多,了解的越多,你就越接近專家;
22、有空去逛逛CSDN,那里有你很多知己;
23、要有信心成為一個優秀的程序;
(六)一些好書的推薦
1、《The C Programming language》 (Keinighan & Dennis Ritchie 1988)
2、《The C++ Programming Languague》(Bjarne Stroustrup 1997)
3、《Inside The C++ Object Model》 (lippmans)
4、《Effective C++》 (同上)
5、《More Effective C++》 (同上)
6、《Exceptional c++》
7、《C++面向對象高效編程》
8、《設計模式》
9、《Thinking In C++》
10、《The Standard C++ Bible》(一般推薦)
11、《The Art of Computer Programming 》
12、《Programming Windows》 (Charles Petzold)
13、《VC++5.0技術內幕》
14、《MFC 深入淺出》
15、《軟件需求》
16、《Advanced Windows》
17、《C++ primer》
18、《win32程序員參考手冊》
19、《用TCP/IP進行網際互連》
20、《COM 本質論》
(七)學習計劃
――-這個學習計劃是我個人定的,也共享給大家參考一下,共同進步吧。 1、《
計算機組成原理》
2、《操作系統》
3、《數據結構》
4、《匯編語言》
5、《 C 》
6、《 C++ 》
7、《VC 技術內幕》
8、《Programming Windows》
9、《深入淺出MFC》
10、《Advanced Windows》
11、《Inside The C++ Object Model》
12、《Thinking in C++》
13、《Effective C++》
14、數據庫
15、網絡
16、嵌入式OS和編程
17、硬件單片機
18、.NET和C#
19、軟件工程
20、UNIX和Linux
(八)后記
一年來浪費了大量的時間去摸索,去思考,走了很多的彎路,直到現在我還覺得自
己是個編程的門外漢。我把我的一些體會和想法說出來(當然,很多都不一定正確
,歡迎大家指正和討論),也許對一些想加入程序員行列的朋友有一些建議和幫助
。希望能幫助這些朋友順利走上編程之路,成為高手。
如果真能如此,我也就很高興了。歡迎有興趣的朋友給我發E_mail(sjpsky@163.n
et);我這個人有兩大業余愛好,其一就是讀武俠小說,其二就是結交英雄俠士。
后記:此文我用analyster的名字登錄,發表在“csdn-程序人生”上了,有很多網
友看了,回了,還收到幾個網友發來郵件,和我探討,我很感謝大家對我的信任和
鼓勵。
我要說明的就是我的這篇小文,主要是想給“一些想成為程序員”的朋友一些建議
,幫他們尋找一條自我培訓的捷徑,(其實世界上沒有什么捷徑的,我覺得一切都
在于悟性,師傅領進門,修行在個人,譬如我就修行不夠)少象我一樣作大量的無
用功。還有,主要就是一個程序員應該具備的基本功(個人看法),有人稱其為“內
功”,我覺得很對。沒有扎實的基本功,我們如何能夠做到游刃有余的編寫高質量
高性能的優秀程序呢?
讓我們共同努力,振興我們的民族軟件業!