03 : 08 程式員生涯的開端。。。
以前的我是想做一個程式員的
這不是我的夢想
這隻是我的一個比較強烈的想法而已
我不知道想法強烈到什麼程度可以叫做理想
但我知道我這個想法曾經一度讓我為他付出過很多。。。
國中時候買的計算機
從一無所知到幫人家解決各種小問題
我慢慢的喜歡上了計算機
我一直稱其為計算機而不是電腦是因為我個人認為叫電腦是一種很庸俗的叫法
他把計算機完全家用化了
雖然現在大多數的确如此
但哦還是不願承認這一點
也許這就是固執吧
我是有這很大好奇心的人
這是我開始接觸計算機時的動力
好奇與求知是我做大多數事情的動力
但是西方有一句諺語
好奇心會害死貓
我有點同意這個觀點
是以在高2開始我就開始停止與計算機的熱戀。。
一直到現在我學的計算機專業
到現在為止我已經幾年沒有用我的大腦想過程式方面的問題了
以下的内容是我載的
也就是說不是我的
貼在這裡
大家看看吧
寫給想當程式員的朋友
――一個還不太老的程式員的體會
(初稿)
謹以此文獻給所有想當程式員的朋友
(一) 文章由來及個人經曆
我是一名計算機專業的大學畢業生,畢業已經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,Linux,等等都是OS,還有一些實時OS,嵌入OS,編這些的絕對是高手)
10、Windows程式設計說白了就是Windows API的調用。(中國的程式員很多隻是會編windows程式,用的是VB,我的建議是這些程式員頂多隻是低級編碼員,我稱其是coder)
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》 (lippman)
4、《Effective C++》
5、《More Effective C++》 (lippman)
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([email protected]);我這個人有兩大業餘愛好,其一就是讀武俠小說,其二就是結交英雄俠士。
後記:此文我用analyster的名字登入,發表在"csdn-程式人生"上了,有很多網友看了,回了,還收到幾個網友發來郵件,和我探讨,我很感謝大家對我的信任和鼓勵。
我要說明的就是我的這篇小文,主要是想給"一些想成為程式員"的朋友一些建議,幫他們尋找一條自我教育訓練的捷徑,(其實世界上沒有什麼捷徑的,我覺得一切都在于悟性,師傅領進門,修行在個人,譬如我就修行不夠)少象我一樣作大量的無用功。還有,主要就是一個程式員應該具備的基本功(個人看法),有人稱其為"内功",我覺得很對。沒有紮實的基本功,我們如何能夠做到遊刃有餘的編寫高品質高性能的優秀程式呢?
讓我們共同努力,振興我們的民族軟體業!
我轉的 當然前面那些是我寫的了
要是不嫌棄就算我添加的跟内容無關的序吧