第一篇:一個老程序員體會如何學(xué)好軟件編程
一個老程序員體會如何學(xué)好軟件編程
轉(zhuǎn)眼間工作已經(jīng)8年,從高三開始寫程序算起來,軟件編程已經(jīng)快13年了,順便講講自己的體會。如果你要學(xué)好一門語言,那么請務(wù)必先花3個月到半年時間看懂一個比較著名的完整項目的源代碼,比如:
1.如果你想學(xué)好匯編語言,請嘗試看懂CIH病毒短短1000行的程序。
2.如果你想學(xué)好C語言,請嘗試看懂Linux內(nèi)核中IP棧的源代碼,精華部分幾萬行代碼。
3.如果你想學(xué)好C++語言,并且使用的是MFC,請嘗試看懂EMULE的源代碼,接近十萬行代碼。
4.如果你想學(xué)好C++語言,并且使用的是STL或ATL,請嘗試看懂STL庫、ACE庫和BOOST庫的部分經(jīng)典源代碼。
5.如果你想學(xué)好C#語言,并且使用的是桌面編程,請嘗試看懂SharpDevelop的源代碼,大概十幾萬行代碼,采用的是和Eclipse相同的插件結(jié)構(gòu)。
6.如果你想學(xué)好Python語言,請嘗試看懂Eric的源代碼,大概6~7萬行代碼。
以上列出的都是按照時間排列的我的學(xué)習(xí)過程,其中Delphi和VB的學(xué)習(xí)由于都是學(xué)習(xí)了C++之后,很簡單就沒有看成熟的項目學(xué)習(xí)。這些年我使用上述每種語言(匯編除外)都編寫過5萬行以上的項目。
在看代碼的過程中要結(jié)合書本學(xué)習(xí),這里推薦幾本書:
1.《設(shè)計模式》。
2.《模式系統(tǒng)》三卷。
看懂這兩套書就足夠了,其它世面上的書籍大概翻翻就可以了。此外,多鍛煉自己MPI并行編程能力,如果沒機(jī)會,多線程編程能力也可以。
0 A1 {9 v# N/ 7 R“ Y: l5 n/ i: r-~: u+ 3 L;F, |.v3 ~: }” |0 X.p3 X2 E, p+ v/ U;4 o/ U0 F;{+ h7 K4 G.u.C!`4 U7 V5 h2 X8 b(X![: }
php學(xué)習(xí)視頻分析g' s" L/ E$ f$ pF4 Y*
首先我只評價我看過的視頻,只是個人觀點(diǎn)不代表大眾!
? 中國給予公民言論權(quán)利,希望別砍我啊,下面我就來胡說下:
? 資料:lamp兄弟連 php100 it實(shí)驗(yàn)室 黑客基地php 岸水河畔 孫仲岳 ? 1 m& ~% u: q-r3 U5 t)b)T6 Q;|.r: U8 r4 _1 D4 ~4 |$ U;
?首先lamp兄弟連,這個雖然是依托培訓(xùn)的基礎(chǔ),但是實(shí)力還是沒話說的,專業(yè)搞培訓(xùn)的,講的確實(shí)好,知識點(diǎn)非常詳細(xì),確實(shí)可以把基礎(chǔ)打好,加上chinaphp網(wǎng)站的論壇配合,相信一定有一定的進(jìn)步。只是因?yàn)槟撤N利益下,他們發(fā)布的視頻暫時沒有太多實(shí)戰(zhàn)部分,只是比較少吧!看了他們論壇,介紹說有好多好多的實(shí)戰(zhàn)以及一些深入的部分介紹,比如cms等,但是從07年到現(xiàn)在也沒見到發(fā)布!還是讓你去培訓(xùn)嘛!畢竟他們目的是培訓(xùn),要不他們怎么生存呢?這個也可以理解!我只能說這些基礎(chǔ)的東西已經(jīng)非常好了,自己再看代碼去,多實(shí)踐估計上手沒問題了。
?php100 新成立的一個論壇,站長很年輕,教學(xué)準(zhǔn)備的非常充分,非贏利下的培訓(xùn),站點(diǎn)排名和人氣很高,畢竟免費(fèi)的都受歡迎嘛!一周出一集的模式,我感覺有點(diǎn)象美劇,呵呵時間長了就不期待了,但是還是有的看頭的。內(nèi)容嘛,東一塊西一塊,很實(shí)際,針對實(shí)際開發(fā)需求來做教學(xué),非專業(yè)教學(xué) 做到這樣已經(jīng)非常滿意了。期待他日后的教程,聽說下個月要有培訓(xùn)了,恩以后的路都得收費(fèi)可以理解!支持下。至少他的一些實(shí)際的例子很不錯,可以引導(dǎo)入門,尤其是給新手一個信心,這個他做到了,可以在每次都有自己的小項目做介紹,難能可貴的是持續(xù)的一周一集的視頻,非常誘人哦!賣了制作的光盤呵呵也夠他小小滿足小資金的需求,在此只能期待他的越來越多的視頻,如果新手我建議先從lamp兄弟連的視頻看,他的比較系統(tǒng),很深入,而php100的有點(diǎn)雜,不夠深入,如果你只是為了修改點(diǎn)小代碼,那么看php100的暫時的課程可以了。畢竟基礎(chǔ)很重要,想成高手我覺得都得深入細(xì)致的學(xué)!總的來說php100的潛力無限,以后要是繼續(xù)的話相信有很多值得期待的地方……比如說真正的實(shí)戰(zhàn)、框架部分。
?it實(shí)驗(yàn)室 美河搞來的,謝謝美河,這個視頻我看了也很好很基礎(chǔ),非常深入適合看過基礎(chǔ)的之后再學(xué)習(xí)這個里邊的一些項目,it實(shí)驗(yàn)室的內(nèi)容有實(shí)戰(zhàn)部分的講解,細(xì)節(jié)的分析設(shè)計過程以及代碼功能的實(shí)現(xiàn),以及中間遇到個一些問題,分析過程,和語法實(shí)戰(zhàn)應(yīng)用,幾個項目的講解就相當(dāng)與有個老師在幫著你去看一些成熟的代碼并講解給你!所以值得觀看。介紹的phplib 和smarty模版引擎不錯推薦!要是技術(shù)好當(dāng)然直接去看代碼更好。
?黑客基地php太普通了浪費(fèi)時間,不喜歡!也許我不喜歡你喜歡,那么別介意,我只是說了我的看法,畢竟他配置環(huán)境的部分還是很好的。
?岸水河畔 已經(jīng)不出教程了,雖然沒太火起來吧,畢竟錄制者并不是站長,并沒有全* }& pZ+ t5 m2 k8 u
心的投入到教學(xué),所以準(zhǔn)備方面欠缺,但是內(nèi)容還是可以學(xué)到些東西,所以看看還是有好處的,這個教程說實(shí)話也不錯的!
?孫仲岳早期的經(jīng)典,說話風(fēng)趣,挺有意思的,可惜的是我沒怎么看,都評價不錯,那么我就多說了,心里有數(shù),畢竟他的教程年代比較久了。但是經(jīng)典就是經(jīng)典,看看也許無害處!
? % T1 L4 X8 @9 s# s+ d(J7 q$ s{
總之以上內(nèi)容都為網(wǎng)上免費(fèi)的視頻,足夠滿足學(xué)習(xí)的需求了!畢竟php還不難。但是講項目的人很少,畢竟也不是一天2天能講清楚的,框架等方面的視頻太少了,webgame方面只有代碼可看,還沒有實(shí)際的講解,呵呵期待以后我也錄點(diǎn)視頻了 呵呵廢話不多說了,歡迎拍磚了,希望我死的別太慘……
第二篇:一個老程序員的心得
1個老程序員的心得
[size=4]不知不覺做軟件已經(jīng)做了十年,有成功的喜悅,也有失敗的痛苦,但總不敢稱自己是高手,因?yàn)楹臀倚哪恐姓嬲母呤謧儽绕饋?,還差的太遠(yuǎn)。世界上并沒有成為高手的捷徑,但一些基本原則是可以遵循的。
1.扎實(shí)的基礎(chǔ)。數(shù)據(jù)結(jié)構(gòu)、離散數(shù)學(xué)、編譯原理,這些是所有計算機(jī)科學(xué)的基礎(chǔ),如果不掌握他們,很難寫出高水平的程序。據(jù)我的觀察,學(xué)計算機(jī)專業(yè)的人比學(xué)其他專業(yè)的人更能寫出高質(zhì)量的軟件。程序人人都會寫,但當(dāng)你發(fā)現(xiàn)寫到一定程度很難再提高的時候,就應(yīng)該想想是不是要回過頭來學(xué)學(xué)這些最基本的理論。不要一開始就去學(xué)OOP,即使你再精通OOP,遇到一些基本算法的時候可能也會束手無策。
2.豐富的想象力。不要拘泥于固定的思維方式,遇到問題的時候要多想幾種解決問題的方案,試試別人從沒想過的方法。豐富的想象力是建立在豐富的知識的基礎(chǔ)上,除計算機(jī)以外,多涉獵其他的學(xué)科,比如天文、物理、數(shù)學(xué)等等。另外,多看科幻電影也是一個很好的途徑。
3.最簡單的是最好的。這也許是所有科學(xué)都遵循的一條準(zhǔn)則,如此復(fù)雜的質(zhì)能互換原理在愛因斯坦眼里不過是一個簡單得不能再簡單的公式:E=mc2。簡單的方法更容易被人理解,更容易實(shí)現(xiàn),也更容易維護(hù)。遇到問題時要優(yōu)先考慮最簡單的方案,只有簡單方案不能滿足要求時再考慮復(fù)雜的方案。
4.不鉆牛角尖。當(dāng)你遇到障礙的時候,不妨?xí)簳r遠(yuǎn)離電腦,看看窗外的風(fēng)景,聽聽輕音樂,和朋友聊聊天。當(dāng)我遇到難題的時候會去玩游戲,而且是那種極暴力的打斗類游戲,當(dāng)負(fù)責(zé)游戲的那部分大腦細(xì)胞極度亢奮的時候,負(fù)責(zé)編程的那部分大腦細(xì)胞就得到了充分的休息。當(dāng)重新開始工作的時候,我會發(fā)現(xiàn)那些難題現(xiàn)在竟然可以迎刃而解。
5.對答案的渴求。人類自然科學(xué)的發(fā)展史就是一個渴求得到答案的過程,即使只能知道答案的一小部分也值得我們?nèi)ジ冻?。只要你堅定信念,一定要找到問題的答案,你才會付出精力去探索,即使最后沒有得到答案,在過程中你也會學(xué)到很多東西。
6.多與別人交流。三人行必有我?guī)煟苍S在一次和別人不經(jīng)意的談話中,就可以迸出靈感的火花。多上上網(wǎng),看看別人對同一問題的看法,會給你很大的啟發(fā)。
7.良好的編程風(fēng)格。注意養(yǎng)成良好的習(xí)慣,代碼的縮進(jìn)編排,變量的命名規(guī)則要始終保持一致。大家都知道如何排除代碼中錯誤,卻往往忽視了對注釋的排錯。注釋是程序的一個重要組成部分,它可以使你的代碼更容易理解,而如果代碼已經(jīng)清楚地表達(dá)了你的思想,就不必再加注釋了,如果注釋和代碼不一致,那就更加糟糕。
8.韌性和毅力。這也許是“高手”和一般程序員最大的區(qū)別。A good programming is 99% sweat and 1% coffee。高手們并不是天才,他們是在無數(shù)個日日夜夜中磨練出來的。成功能給我們帶來無比的喜悅,但過程卻是無比的枯燥乏味。你不妨做個測試,找個10000以內(nèi)的素數(shù)表,把它們?nèi)汲聛?,然后再檢查三遍,如果能夠不間斷地完成這一工作,你就可以滿足這一條。
這些是我這幾年程序員生涯的一點(diǎn)體會,希望能夠給大家有所幫助 做了快三年的程序員了,有一點(diǎn)小體會和大家分享一下.1.好鋼是由鐵煉成的.一名好的程序員必須經(jīng)過千錘百煉才行, 挫折是程序員最大的寶,要能承受挫折,戰(zhàn)勝挫折,只有不斷經(jīng)受挫折,從挫折中吸取經(jīng)驗(yàn),教訓(xùn),這樣你才能成為真正的程序員.2.手是好漢,眼是懶漢.看會不是目的,要會寫,勤動手,熟練書寫各種常用代碼,在學(xué)習(xí)之初 可以不借助IDE來書寫代碼,反復(fù)練習(xí),熟能成巧,毋庸置疑.3.穩(wěn)中求勝,小心使得萬年船.程序員最忌諱毛躁.代碼多,項目大的時候,錯誤是在所難免的,但低級錯誤一定不能犯,盡量把錯誤壓到最低,這就要求我們程序員養(yǎng)成穩(wěn)重,多思維的方式,切忌浮躁,養(yǎng)成良好的書寫習(xí)慣和正確的思維方式.4.做就做程序員,不要做高級打字員.每個程序員都是從基礎(chǔ)學(xué)起的,在學(xué)的時候一定要把握好方向不要被眾多的語言,概念所迷惑,學(xué)的是語言,學(xué)的是編程思想不要在IDE上下功夫,研究哪個好,哪個壞,要敢于創(chuàng)新,程序是死的人是活的,在活人手里,也要讓程序活起來.多學(xué)多看數(shù)據(jù)結(jié)構(gòu)等書多看別人的成型代碼,學(xué)習(xí)別人的思想,使自己成為真正的程序員.5.敢想敢做,持之以恒,一切皆有可能!
一點(diǎn)薄思庸見送給賽迪網(wǎng)java版的初學(xué)者們,僅代表本人個人意見,如有任何各位大蝦有好的方法或意見可以跟帖提出.java開發(fā)八榮八恥
以動手實(shí)踐為榮,以只看不練為恥。以打印日志為榮,以出錯不報為恥。以局部變量為榮,以全局變量為恥。以單元測試為榮,以手工測試為恥。以代碼重用為榮,以復(fù)制粘貼為恥。以多態(tài)應(yīng)用為榮,以分支判斷為恥。以定義常量為榮,以魔法數(shù)字為恥。以總結(jié)思考為榮,以不求甚解為恥。
從大學(xué)開始到現(xiàn)在,學(xué)習(xí)編程已經(jīng)四年了,在過去的四年里學(xué)了不少的東西,總感覺自已還行吧。怎么著也能找個好的工作。加上在學(xué)校表現(xiàn)良好,大專一畢業(yè)就順利應(yīng)聘上一個政府機(jī)構(gòu)的工作。雖然工資不算多,但也穩(wěn)定。但總覺得自己有點(diǎn)屈才.一天,見到本市的一家知名軟件企業(yè)的招聘信息,就把自己從大學(xué)三年到現(xiàn)在寫過的一些東西簡單地寫了一份求職信過去(不是想跳槽,只是想測試一下我現(xiàn)在這份工作丟了,在社會上我能夠達(dá)到什么程度)。
沒想到,第二天,那家公司就叫我過去應(yīng)聘了。感覺很突然,總覺得一些軟件公司在人才網(wǎng)站上打一些招聘信息總是借此做大做廣告,并不是想招聘人,就是要招聘人,可能因?yàn)檫@種因素的機(jī)率都很小吧。(這是我一直以來對人才網(wǎng)站上某些軟件公司的招聘信息的看法),不過卻增加了幾分信心,于是我便興沖沖的去了。
到了公司,首先就讓我填寫一張表格,填寫完一張表格以后安排一個技術(shù)主管過來與我談,談的倒不是一些深入的技術(shù)問題,我基本上的都能應(yīng)上來。接著就是上機(jī)測試。測試的題目是寫一個人員信息的插入、修改、顯示。主考官說只需要寫一個功能就是,只是希望看看我的編程風(fēng)格。于是我把數(shù)據(jù)操作寫了一個類,然后在按鈕的事件里得到輸入框值,組合一個SQL,傳到數(shù)據(jù)操作類里面去執(zhí)行,然后返回插入結(jié)果就可以了。完了,很快搞定。馬上叫主考官過來看吧。呵呵,小意思。
主考官過來了,首先就在姓名的地方輸入好長的一串字符串,接著一陣亂輸,完了,出問題。名字太長了,郵件沒有限制,身份證沒有限制,生日沒有限制,完了,完了,我想,這么點(diǎn)東西,就出問題了,我心里好一陣緊張。還好就是主考官的態(tài)度還不錯,說:“雖然你做了足夠的注釋,縮近也注意了,但是卻沒有對輸入的值進(jìn)行判斷,我們這為合理的判斷也是好的編程風(fēng)格,再者,你雖然把數(shù)據(jù)操作寫成了類,但也有很多的改進(jìn),一是。。二是。?!闭f完以后還鼓勵我接著寫剛才的代碼。當(dāng)時真是很是感動,但感動歸感動,說老實(shí)話,這些判斷平時還真的沒有寫過多少,都是寫一個以后,COPY過去COPY過來的用,現(xiàn)在一時還覺得有些短路,不知道如何是好,然后,就是按鈕的事件中寫對數(shù)值的判斷。終于完成了,再看看表,時間距剛開始測試已經(jīng)快一個小時了。
主考官過來看了,覺得功能都實(shí)現(xiàn)了,就叫了公司的一個副經(jīng)理(后來才知道的)來繼續(xù)面試我。這個副總就到我到另外的一個會議室去,問了我一些技術(shù)概念的問題,結(jié)果我基本上都答不過來(我以前覺得我能夠用就夠了啥,沒有太大的必有對這寫概念的條款記得這么清楚啥),結(jié)果,那位副經(jīng)理訓(xùn)斥了我一下,說:“你對這些概念都不清楚,怎么了解其間的性能呢,不了解性能如何開發(fā)高效率的程序呢?”(整個談話這句最讓我滿意,其他的都是“我們是專業(yè)的軟件公司,很注重軟件的性能,編程風(fēng)格等等如事云云”),最后問了我的薪水要求和能不能適應(yīng)公司的開發(fā)等就叫我回家去等消息。
當(dāng)然,由于后面沒有過關(guān)當(dāng)然也沒有應(yīng)聘得上。更當(dāng)然,我吸取了這次應(yīng)聘的經(jīng)驗(yàn),總結(jié)以下幾條來做為以后學(xué)習(xí)的信條,寫出來與大家共勉:
一,學(xué)習(xí)應(yīng)該從基礎(chǔ)抓起,注意學(xué)習(xí)的每個細(xì)節(jié),爭取學(xué)精,避免為了開發(fā)而開發(fā)。
二,在以一門語言為主功語言的同時,要學(xué)習(xí)一下與之相關(guān)的其它技術(shù)。
三,長常保持對新技術(shù)的關(guān)注,了解未來發(fā)展的方向,做到有的放矢。
四,多參與項目開發(fā),在項目中發(fā)現(xiàn)問題,解決問題,才能更好的了解學(xué)習(xí)中的細(xì)節(jié)問題。
五,加強(qiáng)交流,多寫文章,多發(fā)源碼,多收取意見,在交流學(xué)習(xí)并提高,才能更快了解自已的不足。
六, 永遠(yuǎn)相信下一個作品是最好的....業(yè)余程序員最喜歡做的一件事就是對不同的語言進(jìn)行比較。Java是否比C++好?C#是否會成為終極語言?凡此種種。從專業(yè)程序員的角度看來,這是最低級無趣的游戲。
其一,在項目諸元確定之后,通常并沒有選擇語言的余地;其二,語言的生存本身就是一個達(dá)爾文主義的問題:設(shè)若兩種語言有明確的可比較性,其中較劣的那一種必定早已被淘汰出局,又何來比較的必要?所以,有“C++之父”美稱的Bjarne Stroustrup博士常常聲明自己不會拿C++與其他語言比較——偏偏每次接受采訪時,必定有外行的記者或聽眾提出這一類最令他反感的問題,這是題外話,按下不表。
丟開實(shí)用主義的觀點(diǎn),從美學(xué)(或者說,計算機(jī)科學(xué))的角度來看,語言的比較似乎并不像它通常所表現(xiàn)的那么低級。畢竟,既然維特根斯坦反復(fù)強(qiáng)調(diào)“語言制訂游戲的規(guī)則”、“凡不可言說者必保持沉默”,可見語言并非僅僅是可通約的思想的映射,語言本身就決定思想的方式。使這個問題顯得那么低級而業(yè)余的,往往是業(yè)余程序員討論它的方式:僅僅憑著自己對幾種語言一知半解的認(rèn)識、僅僅憑著使用一種語言的習(xí)慣、甚至僅僅憑著一種宗教狂熱來展開討論,這樣的討論自然是不值一哂的。
我是不是已經(jīng)提到了“宗教狂熱”這個詞?如果說對語言的喜愛(或者憎惡)可以成為一種宗教狂熱,就有那么一些人可以憑著宗教般的狂熱成為開發(fā)高手,Ian Joyner無疑屬于這種人。1992年,在Unisys用C++開發(fā)UNIXX.500時,Joyner感到C++讓他“不自在”,于是就寫了一篇題為《C++批判》的報告,張貼在Unisys的內(nèi)部新聞組上。到此為止,一切都沒有什么不同。但Joyner與其他宗教狂熱者的區(qū)別在于:他有著遠(yuǎn)為深厚的理論基礎(chǔ),以及鍥而不舍的毅力。于是,《C++批判》有了第二版和在Internet上廣為流傳的第三版。到1998年,這篇典型的論壇文章終于變成了一本書,“批判”也徹底變成了語言之間的比較(參與比較的另外兩種語言是Java和Eiffel),這就是我手上的《對象揭秘:Java、Eiffel和C++》(Object Unencapsulated:Java,Eiffeland C++,人民郵電出版社2003年7月)。
盡管宣稱自己反對“宗教戰(zhàn)爭”,但顯然Ian Joyner是深諳宗教戰(zhàn)爭之道的。從批評的方式來說,他與其他人并無不同:首先立論(“Eiffel是最好的語言”),然后不斷變換角度批評對手——時而是數(shù)學(xué)理論的完備性、時而是使用的便利和可靠、時而是命名的清晰??論據(jù)的選取完全只是為論點(diǎn)服務(wù)。也正因?yàn)榇?,這本《對象揭秘》足以讓絕大多數(shù)的語言比較者感到羞赧,因?yàn)樵谕瑯拥呐u套路上,Joyner探索的深度和廣度令他們望塵莫及。譬如說,任何一個負(fù)責(zé)的語言比較者都必然會提到“繼承和類型系統(tǒng)”這一話題,但Joyner卻把這個話題寫成了長達(dá)63頁的一章(第5章,“類型擴(kuò)展:繼承與虛擬”),并在后面的章節(jié)(第9章,“類型轉(zhuǎn)換”)中繼續(xù)討論相關(guān)的問題。拋開篇幅不談,單是Joyner習(xí)以為常的文法解讀、Lamda演算法和簽名變化理論,就足以使不夠水準(zhǔn)的批評者自慚形穢了。
因此,在我看來,這本《對象揭秘》完全有理由成為所有語言比較者的必讀書目——也許說“入門書目”會更準(zhǔn)確一些?因?yàn)槟隳芟氲降娜魏我粭l批評,Ian Joyner很可能早已做了鞭辟入里的闡述。如果在細(xì)讀《對象揭秘》之前妄自作評,結(jié)果很可能是貽笑大方。另一方面,在批評的方法上,Joyner為后來者作出了表率:簡單的反對與謾罵毫無意義,用錢鐘書的話來說,“反其道以行也是一種模仿”;只有拿出充足的論據(jù),再拿出合理的解決方案,才稱得上一個高明的批評者。當(dāng)然,這樣的“入門書目”也許讓門檻顯得太高了一點(diǎn)。但對于“Java和C++誰更好”這樣一個通常只會令人感到莫名煩躁的話題,門檻總是不厭其高的。
像我一樣的Java人常常會抱怨“Java的經(jīng)典書籍太少了”。C++的經(jīng)典好書總是層出不窮,實(shí)在令人艷羨——當(dāng)然真正擁有這些書的人也同時擁有不少的煩惱,我就有最深切的體會。在這本《對象揭秘》中,IanJoyner順便也半開玩笑地揭開了這個秘密。也許,這句半開玩笑的話會成為Java人喜愛這本書的另一個理由:
“??學(xué)習(xí)C++要花那么長時間??,要比Eiffel和Java都長得多?;敲撮L時間還未必掌握編程或者面向?qū)ο笤O(shè)計技術(shù)。這也是為什么關(guān)于C++的書籍那么多而Eiffel和Java不需要那么多書的原因?!?/p>
我是初中時接觸編程的。那時父親廠里買了一臺微電腦,而我父親,當(dāng)時正好可以接觸到這臺微機(jī),于是,頗具戰(zhàn)略眼光的父親便開始幫我尋找各種書籍資料,讓我學(xué)起了計算機(jī)。
第一眼看到它,我就被吸引住了。那是在當(dāng)時也很差的一種名叫“R1”的微機(jī),可是顏色實(shí)在漂亮,典雅的奶黃色,配著深綠的按鍵,按下不同的鍵還有不同音調(diào)的悅耳的聲音。跟當(dāng)時風(fēng)行的大多數(shù)八位微電腦一樣,整個機(jī)身實(shí)際就是一個鍵盤,比現(xiàn)在PC機(jī)通常的鍵盤還要小,顯示器就用電視機(jī)。當(dāng)我第一次把從書上抄下來的寥寥幾句的一個Basic程序從嘀嘀作響的鍵盤上敲入,最后再打進(jìn)了“RUN”,而屏幕上忠實(shí)地顯示出了結(jié)果后,我就不可救藥地迷上了編程。父親的廠離家有五公里,每個星期天我都要自己一個人步行五公里,把一個星期里自己寫下的一大堆Basic程序拿來調(diào)試,當(dāng)然一大半都被它冷酷的拒絕了,所以每次有一個程序通過了,我都會興奮的叫起來。那時我的體力不好,五公里走下來,相當(dāng)累,還經(jīng)常小腿抽筋,可是一坐到電腦前,聽見打開時“嘀”的提示音,一切的痛和累都消失了。
漸漸地我的程序通過率越來越高了,程序的規(guī)模也在增長。但是,那臺外表可愛的電腦卻開始不堪重負(fù)了,運(yùn)行速度本來就慢,又加上效率低下的解釋性Basic語言,讓我實(shí)在不可忍受。于是,父親又到新華書店為我訂下了一本《Z80匯編語言》的書。書一到,我就捧起這部大塊頭的書,開始用我初中的程度一點(diǎn)點(diǎn)地啃。邊啃邊實(shí)驗(yàn),終于掌握了Z80匯編語言,又在電腦不具備輸入?yún)R編語言能力的情況下,手工翻譯成機(jī)器語言,再通過Basic語言中的Poke語句把二進(jìn)制代碼輸入內(nèi)存,然后用Basic程序調(diào)用。在不懈的努力下,終于成功地做出了一個匯編語言的動畫程序!在這次成功之后,我就開始相信,只要肯鉆研,沒有學(xué)不會的技術(shù),沒有克服不了的難題。
初中畢業(yè)后,我以全縣第一的成績進(jìn)入了一所附近城市的省重點(diǎn)中學(xué),從此我的眼界開始逐漸拓寬了,以后,我用到的電腦越來越高級,從高檔八位機(jī)蘋果電腦,到今天主頻以G計,內(nèi)存以M計的奔四電腦,當(dāng)年那臺主頻內(nèi)存都只能以K計的八位機(jī)已是進(jìn)了歷史博物館。但是這臺引領(lǐng)我進(jìn)入編程領(lǐng)域,并且更驅(qū)使我深入鉆研匯編語言的電腦,將是我記憶中最珍貴的收藏之一。
在重點(diǎn)中學(xué),學(xué)業(yè)的壓力是很重的,又是住校獨(dú)立生活,對于體力已較大程度下降、行動已呈現(xiàn)出不少不便的我,平添了幾許額外的困難。高中的第一年沒有計算機(jī)課,我只能在假期回家后才能有機(jī)會繼續(xù)學(xué)習(xí)編程,也以此來忘記一學(xué)期的壓力和苦累。高二時,終于盼到了計算機(jī)課,也見到了當(dāng)時相對高檔的蘋果電腦。而我此時已有的基礎(chǔ)令老師吃驚,同學(xué)驚服。我加入了計算機(jī)興趣小組,開始在性能遠(yuǎn)遠(yuǎn)好于原來那臺電腦的蘋果機(jī)上快樂的編程了。在高二的暑假我和計算機(jī)老師一起給學(xué)校做個工資管理軟件。在學(xué)校里的一周時間內(nèi),由于宿舍已經(jīng)鎖掉不能住,我就睡在了辦公室里。位于郊區(qū)的校園,蚊子格外多,咬的我一直睡不著。到了后半夜,我索性爬起來,打開了電腦干活。就這樣,我?guī)椭蠋煂懗绦颉浫霐?shù)據(jù),并且在即將交貨時找出了一個大BUG,又正確地判斷出問題根源在內(nèi)存不足,算是立下了一個小功勞。
由于高考發(fā)揮出色(尤其是物理的滿分),我進(jìn)入了北京大學(xué)物理系。在大學(xué)里,計算機(jī)上機(jī)條件就更好了。當(dāng)時蘋果的Macintosh剛剛推出,給我們系捐了好多臺組建了計算機(jī)室。這個計算機(jī)室從此就成了我大學(xué)四年最常去的地方。一年級的時候有兩門計算機(jī)課,一門是Fortran語言,一門是Pascal語言。而Pascal語言基本是我們自己學(xué),每到晚上計算機(jī)室向我們開放。那是我第一次見識“窗口”形式的操作界面。第二年,計算機(jī)室的機(jī)器換成了386和Dos系統(tǒng)了,但是上機(jī)機(jī)時卻被限制住了。不能滿足的我到處找不喜歡計算機(jī)的同學(xué)借機(jī)時卡,好讓我有足夠的時間調(diào)試自己寫的程序。到了第三年,北大招生更多,系計算機(jī)室天天爆滿,所以上午只要沒課,我就會起個大早到機(jī)房門口等待開門。在一個寒冷的冬晨,還因此著涼發(fā)燒而暈倒在機(jī)房門口。就這樣,我熟練地掌握了Turbo Pascal和Turbo C++,也學(xué)習(xí)了好多相關(guān)的理論知識。
畢業(yè)后,我終于如愿以嘗當(dāng)上了程序員。我被分配的任務(wù),起先是用Delphi做一些文字處理的工具,供編輯部和數(shù)據(jù)部使用。后來Internet開始興起,又委派我寫為網(wǎng)絡(luò)版期刊使用的一些CGI程序。工作一直都很順利,我的眼界與編程水平也在穩(wěn)步成長。兩年后,為了有更好的發(fā)展,我離開了我工作的第一家公司。這時,我把求職的陣地移到了網(wǎng)上。不久,就在某網(wǎng)站上看到了一家合資軟件企業(yè)的招聘啟事。盡管啟事上說明不接受來訪,我仍然勇敢地拿著簡歷于第二天趕到公司所在的翠宮飯店去求職了。幸運(yùn)仍然在籠罩著我,這次我直接見到了經(jīng)理,向他表達(dá)了自己對于編程的熱愛。我說,我夢想著成為IT業(yè)的傳奇英雄。也許是這句話感動了他,我成功的通過了面試。在這家公司,我第一次作為一個龐大項目組的一員,感受到了現(xiàn)代化的軟件項目管理,接受了團(tuán)隊精神的洗禮。
在北京做了五年的程序員,這時候,我聽到了來自深圳的召喚。早在99年,我就在網(wǎng)絡(luò)上找到了一個位于深圳的名為“中華殘疾人服務(wù)網(wǎng)”的殘疾人網(wǎng)站。一天,我在這個網(wǎng)站的留言本上看到了站長的一席因殘疾人網(wǎng)絡(luò)事業(yè)缺少技術(shù)支持而發(fā)的感慨,不由心有所感,便留言說,愿投入殘疾人網(wǎng)絡(luò)事業(yè),而不計待遇。從此,我的人生翻開了輝煌的一頁。那是2002年的10月6日。
起初以為,這個網(wǎng)站會類似于僅僅出于興趣的個人網(wǎng)站,走進(jìn)去才真正發(fā)現(xiàn),這是個志存高遠(yuǎn)的團(tuán)隊。而我真正感覺到了團(tuán)結(jié)一致共創(chuàng)大業(yè)的團(tuán)隊精神。在同樣因病致殘的站長有力領(lǐng)導(dǎo)下,這里基本解決了殘疾人在生活會有的種種不便,克服了許多社會上普遍存在的障礙,從而可以讓我充分發(fā)揮聰明才智,全身心地去攀登IT技術(shù)的高峰。
加入網(wǎng)站之后,我完成的第一個任務(wù)是改進(jìn)網(wǎng)站新聞系統(tǒng),增加圖片上傳和自動圖文排版功能。以前沒有做過ASP程序的我在原有的ASP程序的基礎(chǔ)上,通過學(xué)習(xí)和分析源代碼,完成了這個任務(wù),同時也掌握了基本的ASP編程技術(shù)。然后,我又獨(dú)立完成了一套社區(qū)論壇程序,這套程序受到了全國以至海外殘疾朋友的歡迎,成為了許多足不出戶的殘疾朋友與網(wǎng)友熱烈交流的園地。也讓我從中看到了自己的價值。后來,因?yàn)榫W(wǎng)站的網(wǎng)管不辭而別,我又接過了網(wǎng)管的重任,從此一面開發(fā)程序,一面又管理著我們自己的兩臺服務(wù)器。盡管壓力和工作量成倍地增加了,卻使我同時掌握了兩個領(lǐng)域的技術(shù),而這兩方面的技術(shù)又互相促進(jìn),使我的知識結(jié)構(gòu)更為全面。
由于我們沒有外來資金的支持,要維持中華殘疾人服務(wù)網(wǎng)這個福利公益網(wǎng)站的運(yùn)轉(zhuǎn),必須走以網(wǎng)養(yǎng)網(wǎng)的道路,即為企業(yè)、政府提供信息化建設(shè)服務(wù),以獲得經(jīng)濟(jì)收入。所以,在給網(wǎng)站開發(fā)和升級程序之余,我又開始進(jìn)行商業(yè)網(wǎng)站后臺程序的開發(fā)。僅網(wǎng)站新聞系統(tǒng),就在兩年內(nèi)從1.0版升級到了6.0版;還有大量為企業(yè)量身定做的功能程序。這些程序在網(wǎng)站原本就強(qiáng)大的前臺設(shè)計的包裝下,受到了市場的歡迎。網(wǎng)站也由此發(fā)展壯大。今天中華殘疾人服務(wù)網(wǎng)在全球排名中穩(wěn)步上揚(yáng),進(jìn)入了三萬以內(nèi)的行列。
在承接網(wǎng)站建設(shè)工程的同時,一些客戶也開始找我們開發(fā)應(yīng)用軟件。第一個應(yīng)用軟件項目是一家與廣東移動通信有業(yè)務(wù)關(guān)系的公司,因?yàn)樽陨頉]有軟件開發(fā)能力,便請我們合作為廣東移動通信做一個《“測試卡”管理系統(tǒng)》。根據(jù)要求,我設(shè)計了使用條形碼的輸入方案,又使用SQL數(shù)據(jù)庫作為局域網(wǎng)聯(lián)網(wǎng)的后臺數(shù)據(jù)庫解決方案。由于是第一次全程的開發(fā)與服務(wù),在進(jìn)行以前沒有接觸過的安裝過程中出現(xiàn)了大量問題,又沒有充分做好應(yīng)對的準(zhǔn)備,造成了一些被動局面。但是最終我仍然想出了臨時的解決方法,順利地完成了測試版的交付。遺憾的是由于中介的公司人事調(diào)動,這個項目最終沒有進(jìn)行下去。
很快又一個重大考驗(yàn)落在了以我為首的網(wǎng)站開發(fā)隊伍身上。這是一直從各方面扶持我們的深圳市信息化辦公室交給我們的任務(wù)。要求是我們收集深圳市所有的網(wǎng)站,以PDF電子書的形式印刷在光盤上。同時要有一個完善的分類搜索系統(tǒng)。時間緊、數(shù)據(jù)量大,而且不允許出現(xiàn)任何差錯。為了證明殘疾人團(tuán)隊的開發(fā)能力,我和大伙都拼上了。而在送交初稿的前一天晚上,更是全民動員,站長第二天一大早要親自帶上光盤送去,但他也一起在熬夜。那個不眠之夜是我編程生涯中效率最高的一夜。不久后,這個項目終于完成,看著出自我們的頭腦和雙手的幾千張光盤,我知道自己的努力沒有白費(fèi),而自己的能力也提升到了一個新的境界。這個項目,在那些大公司看來也許是不值一提,可是對于一個核心成員僅五六人、而且全部是殘疾人組成的一個項目組,是非常了不起的成就!
2003年12月,世界殘疾人職業(yè)技能奧林匹克在印度新德里舉行,我有幸代表中國的殘疾人參加了其中編程項目的比賽。在中國,殘疾人的就業(yè)問題是一個大問題,因此,這種殘疾人的職業(yè)技能競賽尤其有意義。2002年12月,我以廣東省冠軍的身份取得了2003年在上海參加全國比賽的資格。2003年8月,我在上海憑著多年的編程經(jīng)驗(yàn)和創(chuàng)新精神,又取得了參加中國殘疾人代表團(tuán)出征印度的資格。遺憾的是,在賽場上,為了追求更好的界面效果,我耽誤了一些時間,以至在最后因時間過于緊張,出現(xiàn)了一個致命的失誤,將本來有希望得到的獎牌拱手相讓。唯一的安慰,就是我的程序界面受到了印度裁判的稱贊。
從國外回來,我又打開了.NET的大門,準(zhǔn)備帶領(lǐng)網(wǎng)站的幾個做程序的殘疾朋友進(jìn)入.NET的開發(fā)。對未來,我充滿了信心,而新的夢想,又開始浮現(xiàn)在我眼前!
現(xiàn)在我的身份,一半是軟件工程師,一半是高級程序員。隨著網(wǎng)站這個實(shí)體的發(fā)展,我也許會逐漸成長轉(zhuǎn)型為軟件架構(gòu)師,但是我仍然會夢想著掌握最高的編程技術(shù),仍然愿意承擔(dān)基礎(chǔ)性的編碼工作。我相信,保持開放的心態(tài),保持年輕的心態(tài),再老也能做程序。當(dāng)今的數(shù)字化時代給殘疾人士尤其是肢殘人士帶來了新的機(jī)會和挑戰(zhàn)?,F(xiàn)在,純粹腦力勞動的門檻,因?yàn)槌绦騿T門檻的大幅度降低而降低,給更多由于社會原因而教育程度相對偏低肢殘人士提供了經(jīng)過培訓(xùn)進(jìn)入初級程序員行列的機(jī)會。但是,這些機(jī)會要想轉(zhuǎn)化為現(xiàn)實(shí),還需要更多更廣泛的“無障礙”環(huán)境的支持。我的第二個夢想,就是夢想中國能夠出現(xiàn)更多的“軟件工廠”,而這些“工廠”又是向殘疾人敞開大門的。
十年編程生涯,歷經(jīng)了風(fēng)雨坎坷,而程序代碼給我插上的翅膀在風(fēng)雨中更加硬朗。今天,我喜歡在程序代碼的世界中自由飛翔。讓病魔去禁錮我的身軀吧,我的靈魂仍然在廣闊的世界里翱翔??
“我不是程序員”,楊過在電話那頭淡淡的說。楊過是大學(xué)同學(xué)叫他的外號,因?yàn)樗臍赓|(zhì)和金庸造的楊過最像,連一些感情遭遇都像。
拒絕做程序員,雖然很火
楊過畢業(yè)那年軟件公司很火,據(jù)說在中關(guān)村隨便一個剛畢業(yè)的寫C程序的畢業(yè)生月薪一不小心會上萬。于是乎楊過不少的同學(xué)們畢業(yè)后紛紛改行編起了程序,跳進(jìn)了大家現(xiàn)在也沒說清楚的IT行業(yè)。說改行是因?yàn)闂钸^學(xué)的不是計算機(jī)專業(yè),只是沾上邊。
楊過那時根本不屑于做編程,雖然那時班里就他最喜歡打軟件游戲。他覺得去編程不是什么“正經(jīng)事”,所以畢業(yè)后他去了大連一家生產(chǎn)糧油的集團(tuán)企業(yè),楊過說是“一顆紅心投入四化建設(shè)”。
由于不想拍馬逢迎,楊過徹底打消了“磨豆油”的念頭。不過他沒有直接留在大連找工作,而是跑到偏遠(yuǎn)的老家和他青梅竹馬的高中同學(xué)結(jié)婚去了。楊過的感情故事太有傳奇色彩,跟金庸那個楊過有一拼。因?yàn)樾禄榈钠拮釉诖筮B不好找工作,當(dāng)時他留在家里,找了一個小公司用電腦給人設(shè)計零件圖。
本來大多數(shù)人的工作就是混口飯吃,楊過也不嫌公司小,老老實(shí)實(shí)過日子吧??勺屗邮懿涣耸?,公司的老板經(jīng)常借口讓他熟悉工作為名把他當(dāng)民工使,一氣之下楊過回了大連,幾個月也是白干,工資沒拿到一分錢,因?yàn)楣べY是三個月一發(fā)。楊過借口看病從老板那里借了幾百塊錢,老板也明白怎么回事,就給他了。直到現(xiàn)在,楊過還算是借著這個公司的幾百塊錢。
還得做程序員
楊過先自己回到大連,到人才市場一看,鋪天蓋地都是要程序員?!鞍?,不服氣不行,社會發(fā)展趨勢啊”。電話那頭的楊過一直在嘆氣。
畢竟楊過是重點(diǎn)大學(xué)畢業(yè)的和計算機(jī)相關(guān)專業(yè),那時還很吃香。他很快找到一家做尋呼臺業(yè)務(wù)的軟件公司。由于以前“沒睡決時還看看計算機(jī)書”,他上手還挺快。干了一年,他跳到現(xiàn)在的這家公司,工資漲了一大截,在大連還算可以,老婆也接過來了。
楊過老婆剛開始在影樓做過一段,后來生病就沒再做。楊過說現(xiàn)在工資也夠兩個人花的,也不逼她找了,也不好找。
我不是程序員,也不考慮明天
楊過現(xiàn)在的這家公司雖然也不算小,主要是做政府機(jī)構(gòu)的一些單子,但為了生存業(yè)務(wù)還是比較雜。楊過感覺自己“天天這編一點(diǎn)、那寫一點(diǎn),從來沒有好好從頭做過一個正式的項目”。“我不是程序員,”他說,“可大家都這個樣子?!?/p>
公司里只有楊過一個人結(jié)婚了,其它都是小伙子。“以前沒睡覺還看看書,現(xiàn)在沒心思了”,楊過調(diào)侃。
由于換了幾個工作,楊過的國家基本保險也搞的亂七八糟?!拔易屑?xì)研究過國家的一些文件,自己掏錢交那些基本保險沒有什么用”,楊過現(xiàn)在和老婆都沒有基本保險,自己存錢保險。
楊過無奈的笑笑,“也存了一些錢,前一段老婆病了都交給醫(yī)院了?!?/p>
最近,看到論壇一貼子,主題是:我從校園出來的這幾年。里面可熱鬧了,回復(fù)次數(shù)竟然達(dá)1425次,我讀了幾個鐘都沒看完,最后只能大概瀏覽一下了,不過里面大多數(shù)都說自己是程序員,并且出來工作都不容易,可謂是一部“千人辛酸史”了,從中多少反映出了中國不少程序員的生活狀況,不知道打算做程序員或者現(xiàn)在正入門的程序員朋友看了作何感想?
說實(shí)在的,目前在中國的程序員大都過得不容易,而且普遍表現(xiàn)為“青春飯”狀態(tài),工作量大,導(dǎo)致對新知識的吸收能力隨著年齡增大而降低,到了一定年齡(30后)后因?yàn)楦簧蠒r代發(fā)展面臨淘汰的厄運(yùn)。雖然如此,但讓我覺得欣慰的是的不少程序員或打算做程序員的朋友都表示堅持在程序員的路上走下去,因?yàn)槲乙彩且幻绦騿T,而且我對未來充滿陽光,充滿希望。
我記住了這樣一個簡單的道理:過去并不代表未來!相信沒有人會不知道這個道理吧!大多程序員過去的辛酸大都可以歸結(jié)于中國軟件產(chǎn)業(yè)的發(fā)展的不成熟,而現(xiàn)在,中國政府制定政策大力扶持軟件產(chǎn)業(yè)的發(fā)展,而且不少國際軟件企業(yè)也看好中國的軟件產(chǎn)業(yè),紛紛把投資向中國傾斜,而且國內(nèi)也開始有了不少比較成熟的軟件企業(yè),當(dāng)然與國外的一些軟件企業(yè)相比,還有一大段距離。但它表明中國的軟件產(chǎn)業(yè)開始向規(guī)?;?guī)范化的方向發(fā)展了。
印度在軟件方面,在我們看來是成功,印度政府在1991年就制定相關(guān)扶持政策,到現(xiàn)在也有10多年了,才取得成功,另一個在軟件方面比較成功的亞洲國家——韓國,它也在1998年就制定了相關(guān)扶持政策,到現(xiàn)在也取得了一定的成功,用時不過4-5年,那么中國的軟件產(chǎn)業(yè)呢?要多久才能成熟起來呢?引金山總裁雷軍的話,3年左右有所成就,到全面成熟那就要比較長的時候了,但中國軟件產(chǎn)業(yè)的成熟和前述國家成熟概念不一致:印度是定位于軟件外包而取得成功,韓國定位于網(wǎng)絡(luò)游戲取得一定成就,而中國呢?定位于什么呢?中國的定位是組合式的,不是某一方面,而是全面的。
可以相信:在未來,中國的軟件產(chǎn)業(yè)無論在產(chǎn)業(yè)結(jié)構(gòu)上,還是人才結(jié)構(gòu)上都會具有優(yōu)勢。關(guān)于后者,你只要看看中國建立的50多所軟件學(xué)院就可見一斑了,而且還有很多像印度的NIIT,北大青鳥(中外合資)等著名的國外軟件開發(fā)教育機(jī)構(gòu)進(jìn)入中國,把先進(jìn)成熟的教育模式帶入了中國。
但是,以上的教育機(jī)構(gòu)培養(yǎng)目標(biāo)都不是精英程序員,而是最近大家抄的很熱的“高級軟件藍(lán)領(lǐng)”,成熟模式中的軟件開發(fā)團(tuán)隊中需要“金領(lǐng)”,“白領(lǐng)”,再到“藍(lán)領(lǐng)”,而中國軟件企業(yè)大多是小企業(yè),最需要的是能獨(dú)擋一面的“金領(lǐng)”,“白領(lǐng)”程序員,并不需要那么多只會Coding的“藍(lán)領(lǐng)”程序員,我想很多混的不那么好的程序員,大概你是屬于“藍(lán)領(lǐng)”程序員吧!
任何時代,任何時候,機(jī)遇總是垂青于有能耐的人的。但是,即使你現(xiàn)在不是“金領(lǐng)”,或者“白領(lǐng)”程序員,你還不是精英,而僅僅是“藍(lán)領(lǐng)”程序員或者還不是而想成為程序員的你聽到這句話,千萬不要泄氣,要相信你自己是將來的精英,雖然現(xiàn)在的生存環(huán)境不是那么好,但是,恰恰有更多機(jī)會讓培養(yǎng)自己獨(dú)擋一面的能力,隨著中國軟件產(chǎn)業(yè)的發(fā)展,將會需要大量有數(shù)年工作經(jīng)驗(yàn),有整體系統(tǒng)架構(gòu)能力的人才,而這些恰恰是任何學(xué)校都無法培養(yǎng)的人才,而現(xiàn)在的程序員,只要你們不放棄夢想,不放棄追求,繼續(xù)努力,你們將成為軟件產(chǎn)業(yè)的中堅力量!軟件人才的佼佼者。
最好,告訴大家一項調(diào)查,硅谷的程序員的平均年齡是35歲左右,而且微軟公司的核心開心者大都在35歲以上,可以遇見,程序員不在是“青春飯”,也會有“老來悄”的“老資格”了!
冬天來了,春天還會遠(yuǎn)嗎?——謹(jǐn)飭送給所有的中國程序員。
如同一首民歌《三十里鋪》所言,路行三十要有個歇腳的地方,人行三十也要喘口氣。在IT,特別是程序員這個特殊的職業(yè),流傳一種說法:30歲是職場上的一道檻,事業(yè)上此時會發(fā)生了許多變化。30歲和程序員真有某種特殊的聯(lián)系嗎?程序員到底能不能做到30歲以上呢?
J曾是一名計算機(jī)老師,因?yàn)閰捑肓藢W(xué)校平淡的生活,應(yīng)聘到一家開發(fā)嵌入式系統(tǒng)的公司做底層程序員。剛開始的一兩年,憑著一股熱情和鉆勁兒,投入到如火如荼的開發(fā)中,甚至購置了睡袋以備晚上加班。兩年中,他掌握了極其專門的硬件參數(shù)、規(guī)格、開發(fā)細(xì)節(jié)等知識,成為部門的骨干。
逼近30歲的那幾個月,他開始感到有些困惑。自己在公司雖然還算受重視,但是技術(shù)上翻來覆去就是那幾樣爛熟于心的東西,公司只需要自己慣性運(yùn)作,實(shí)際不愿支付經(jīng)驗(yàn)轉(zhuǎn)換的成本;而公司的原始積累還遠(yuǎn)遠(yuǎn)未完成,自己仍然要和剛畢業(yè)的大學(xué)生一起加班,通宵達(dá)旦的干。因?yàn)槿狈θ穗H交往,家里一直催著的婚姻大事,至今還八字沒一撇。很多同時期來的人都打算往管理轉(zhuǎn)了,可是自己對管理缺乏興趣,還是樂于從事技術(shù)工作。下一步怎么辦?J想到了辭職,但還沒有什么方向。
相比J,M要幸運(yùn)得多。作為清華計算機(jī)本科、中科院研究生畢業(yè)的高材生,M在做項目經(jīng)理時就能夠月收入2萬,先后換過3家公司,對所謂30歲的說法不以為然。M以前的項目都是用CMM做,項目管理很好,而核心的也就幾個人。手下帶過的人,當(dāng)然是剛畢業(yè)的最差,因?yàn)橐@得30歲時的經(jīng)驗(yàn),顯然需要一個過程。M最開始做程序是用Debug單步跟蹤、分析、定位;后來開發(fā)圖形界面的上層程序,哪怕半年寫1萬行,也覺得不叫程序;只有到后來轉(zhuǎn)到做底層開發(fā)以后,雖然半年只寫到2000行,但是卻感到了寫程序的快樂。M認(rèn)為30歲以后程序員的體力不是問題,好的程序員不經(jīng)常熬夜,有也是臨時的。M接觸過國外、比如印度的一些公司,技術(shù)人員們沒有固定辦公室,用互聯(lián)網(wǎng)聯(lián)系;很多人年齡都在35歲以上,技術(shù)很熟練,思想敏捷,讓人敬佩。
M的職業(yè)觀也很靈活。剛剛辭職在家,接點(diǎn)活干,非常忙。M有幾個同學(xué)在外企做程序,日子過得更舒服,但是幾年下來,個人、技術(shù)均無進(jìn)展。究其原因,除了像微軟研究院、Intel等一些少數(shù)外企還做些研發(fā)外,其它外企都是挑國外剩下的做,反而是國外一些小公司倒是把最核心技術(shù)放在中國來開發(fā)。其它像金山這樣的一些本土企業(yè)應(yīng)該也不錯。做為程序員,機(jī)遇、環(huán)境、職業(yè)(項目)都很重要,它不但直接決定現(xiàn)在的收入水平,更決定未來不同的命運(yùn)。而程序員這個行業(yè)又有極強(qiáng)的主導(dǎo)性,如何做好職業(yè)生涯的規(guī)劃,恰恰是決定乾坤的關(guān)鍵棋子。
程序員圈子里流傳過一套書叫做《編程之禪》和《編程之道》。創(chuàng)造力、邏輯、判斷、體力、智力、手段都是所謂道的一部分,書中有個比喻,程序員編程時,只有硬盤在響。創(chuàng)造本身是一項神圣的工作,但是創(chuàng)造者的果實(shí)卻是世俗的。換句話說,年齡的問題本是見仁見智的,但是“30歲的檻”卻是世俗的。國內(nèi)大部分公司還沒有好到為程序員做好一生的職業(yè)規(guī)劃的地步,因此路還得自己來走。不要讓過度的重復(fù)勞動損害了創(chuàng)造力,也不要太迷信技術(shù)的力量,而忽略了世俗世界的張力。“三十里鋪是一個小村莊,小村莊是我們經(jīng)過的地方。經(jīng)過的地方向著遙遠(yuǎn)的別處,遙遠(yuǎn)的別處還是三十里鋪?!?/p>
做為一名大四的學(xué)生,我面試過不少的單位,有成功的也有失敗的,但是對我來說所有的失敗在某種意義上都是一種成功,特別是我下面寫的這些,寫這篇文章的時,我已經(jīng)簽了南京的一家軟件公司,但是想起今年2月21日我面試蘇州臺灣的IT公司的經(jīng)歷聯(lián)想到我們現(xiàn)在學(xué)習(xí)編程的一些情況我真的深有感觸,這次面試使我深深的體會到了失敗但也收獲了很多。
我要說的將分成三部分,1.是我面試的具體經(jīng)過 2.是由面試想到的 3.現(xiàn)今我應(yīng)該做的。
當(dāng)然這些話很大程度上是我個人的意見,不可能完全得到大家的贊同,所以 在某些觀點(diǎn)上如果哪位朋友覺得跟我的有很大出入,請不要介意,也不要對我攻擊,就當(dāng)我 沒有說過,歡迎和我聯(lián)系共同探討這些問題!我的EMAIL:wutao8@263.net
1.面試經(jīng)過
大約在年前我接到了臺灣瑞晟(Realtek)蘇州公司的面試通知,通知我2月21日到蘇州工業(yè)園區(qū)面試,接到面試后的幾天我把一些專業(yè)課溫習(xí)了一遍,特別是C++和數(shù)據(jù)結(jié)構(gòu),由于大學(xué)幾年里,我一直專研這些方面,加上通過了高級程序員的考試,對于一些常用的算法我差不多也 達(dá)到了爛熟于胸的地步,當(dāng)時的感覺是如果問了我這些方面的問題我應(yīng)該是沒有問題的!
21日那天我被安排在4:30面試,由一位技術(shù)人員單獨(dú)給我面試,在問了一些簡單的問題之后 ,他給我出了一道編程題目,題目是這樣的:
(由于具體面試的題目比較煩瑣,我將其核心思想提取出來分解成??(亂碼)
1)寫一個函數(shù)計算當(dāng)參數(shù)為n(n很大)時的值 1-2+3-4+5-6+7......+n 哼,我的心里冷笑一聲!沒想到這么簡單,我有點(diǎn)緊張的心情頓時放松起來!于是很快我給出我的解法:
long fn(long n){ long temp=0;int i,flag=1;if(n<=0){ printf(“error: n must > 0);exit(1);} for(i=1;i<=n;i++){ temp=temp+flag*i;flag=(-1)*flag;} return temp;}
搞定!當(dāng)我用期待的目光看著面試官的時候,他微笑著跟我說,執(zhí)行結(jié)果肯定是沒有問題!但當(dāng)n很大的時候我這個程序執(zhí)行效率很低,在嵌入式系統(tǒng)的開發(fā)中,程序的運(yùn)行效率很重要,能讓CPU少執(zhí)行一條指令都是好的,他讓我看看這個程序還有什么可以修改的地方,把程序 優(yōu)化一下!聽了這些話,我的心情當(dāng)時變的有點(diǎn)沉重,沒想到他的要求很嚴(yán)格,之后我對程序 進(jìn)行了嚴(yán)格的分析,給出了改進(jìn)了的方案!
long fn(long n){ long temp=0;int j=1,i=1,flag=1;if(n<=0){ printf(”error: n must > 0);exit(1);} while(j<=n){ temp=temp+i;i=-i;i>0?i++:i--;j++;} return temp;}
雖然我不敢保證我這個算法是最優(yōu)的,但是比起上一個程序,我將所有涉及到乘法指令的語 句改為執(zhí)行加法指令,既達(dá)到要題目的要求而且運(yùn)算時間上縮短了很多!而代價僅僅是增加了 一個整型變量!但是我現(xiàn)在的信心已經(jīng)受了一點(diǎn)打擊,我將信將疑的看者面試官,他還是微笑 著跟我說:“不錯,這個程序確實(shí)在效率上有了很大的提高!”我心里一陣暗喜!但他接著說這個程序仍然不能達(dá)到他的要求,要我給出更優(yōu)的方案!天啊!還有優(yōu)化!我當(dāng)時真的有點(diǎn)崩 潰了,想了一會后,我請求他給出他的方案!然后他很爽快的給出了他的程序!
long fn(long n){ if(n<=0){ printf(“error: n must > 0);exit(1);} if(0==n%2)return(n/2)*(-1);else return(n/2)*(-1)+n;}
搞笑,當(dāng)時我目瞪口呆,沒想到他是這個意思,這么簡單的代碼我真的不會寫嗎,但是我為 什么沒有往那方面上想呢!他說的沒有錯,在n很大很大的時候這三個程序運(yùn)行時間的差別簡 直是天壤之別!當(dāng)我剛想開口說點(diǎn)什么的時候,他卻先開口了:“不要認(rèn)為CPU運(yùn)算速度快就 把所有的問題都推給它去做,程序員應(yīng)該將代碼優(yōu)化再優(yōu)化,我們自己能做的決不要讓CPU做,因?yàn)镃PU是為用戶服務(wù)的,不是為我們程序員服務(wù)的!”多么精辟的語言,我已經(jīng)不想再說 什么了!接著是第二個問題:
他要求我用一種技巧性的編程方法來用一個函數(shù)實(shí)現(xiàn)兩個函數(shù)的功能n為如:
fn1(n)=n/2!+n/3!+n/4!+n/5!+n/6!fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9!
現(xiàn)在用一個函數(shù)fn(int n,int flag)實(shí)現(xiàn),當(dāng)flag為0時,實(shí)現(xiàn)fn1功能,如果flag為1時實(shí)現(xiàn)fn2功能!他的要求還是效率,效率,效率!說實(shí)在話,如果我心情好的話我應(yīng)該能給出一種比較好的算法,但我那時真的沒有什么心思再想了,我在 紙上胡亂畫了一些諸如6!=6*5!的公式后直截了當(dāng)?shù)母f要他給出他的答案!面試官也沒有 說什么,給出了他的思路:
定義一個二維數(shù)組 float t[2][5]存入[2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!]然后給出一個循環(huán):
for(i=0;i<6;i++){ temp=temp+n/t[flag][i];}
最后得到計算值!呵呵,典型的空間換時間的算法!這些總共花了50分鐘的時間,還有十分鐘我就跟他很隨意的聊聊天,聊了一些編程以及生活 的問題,那時的我已經(jīng)很放松了,因?yàn)槲抑肋@次面試結(jié)果只有一個:失敗。5:30的時候面試官要我等通知,于是我離開了他們公司。這就是面試的整個經(jīng)過!
2.由面試想到的
真的是很失敗??!我記得那天下好大的雨,氣溫也很低,我邊走邊想,從5:30一直走到7:30,全身都濕透了,又冷又餓,但是我只是一直走,腦子里面充滿了疑惑,我也想讓雨把自己淋 醒!看到這里有些朋友可能覺得那些面試題目不算什么如果讓自己做的話肯定能全部答對,我 肯定相信你,因?yàn)槲覐奈磻岩蛇^中國程序員的能力,我認(rèn)為中國有世界上最好的程序員,我也 從未認(rèn)為自己是高手,所以我做不出來不代表中國程序員比臺灣或者別的地方的程序員差,所 以我就從我的角度,我的所見所想來談一些感想:
不錯全世界都有優(yōu)秀的程序員,中國也不例外,但是我疑惑的是:到底中國和臺灣或者國外 的優(yōu)秀的程序員的比例到底是多少?臺灣我不知道,中國100個程序員里有幾個是優(yōu)秀的呢?我 根本算不上,從上面的表現(xiàn)就足以說明一切了!是1個?5個?10個?50個?這個數(shù)字我不敢亂 猜,恐遭網(wǎng)友一頓痛罵,那么我們國內(nèi)有多少人學(xué)習(xí)計算機(jī)呢?拿我們學(xué)校來說,計算機(jī)97級 4個班,98級5個班,99級10個班,2000級17個班,人多了,老師怎么辦?我們學(xué)校的做法是讓 研究生上課,然后呢?補(bǔ)考一抓一大把,大把大把的補(bǔ)考費(fèi)落入了學(xué)校的口袋,還說現(xiàn)在的學(xué)
生素質(zhì)低!真是好笑,我都不知道學(xué)校這么做是為了什么,為國內(nèi)培養(yǎng)大量的程序員嗎?學(xué)生 們能真正學(xué)到計算機(jī)知識嗎?好了,我敢講,在我們學(xué)校學(xué)習(xí)編程學(xué)生和優(yōu)秀程序員(注意我 指的是優(yōu)秀,只會編幾個糟爛程序的人算不上)的比例應(yīng)該是100:0.1 在這種比例下雖然我們中國學(xué)習(xí)編程的人鋪天蓋地,但是想想有多少個人能真正為中國軟件 業(yè)發(fā)展作出貢獻(xiàn),有多少人能真正寫出優(yōu)秀的程序名揚(yáng)海外!
我從學(xué)習(xí)編程以來,不管是自學(xué)還是老師指導(dǎo),從來都是解決問題就好,編出程序來就行,我的疑惑是:我們有真正的強(qiáng)調(diào)過程序的效率,程序的質(zhì)量嗎?我們有仔細(xì)分析過我們寫的東 西,看看有沒有可以改進(jìn)的地方,看看有沒有簡單的方法來達(dá)到同樣的目的呢?我問心自問,我發(fā)現(xiàn),我從來沒有對我寫出來的程序進(jìn)行過優(yōu)化,最多就是進(jìn)行詳細(xì)的測試,然后Debug,但是這就足夠了嗎?這些天我偶爾發(fā)現(xiàn)我曾經(jīng)寫過的一個游戲,那是一年做為 其中一員時候,感覺應(yīng)該拿點(diǎn)東西出來,然后花了一個星期的時間寫出來的!程序不算復(fù)雜,但是用到了不少數(shù)據(jù)結(jié)構(gòu)的東西,也用到了一些精彩的算法,加上windows的界面和游戲的可 玩性,寫完后受到了不少好評,我當(dāng)時真的很佩服自己!但是現(xiàn)在看呢:沒有一句注釋,好多 丑陋的函數(shù)名比如:void chushihua(),好多沒有必要的變量,可以用簡單語句完成工作的我 使用華麗的算法,大量使用全局變量.....,說不好聽的話,六百多行的程序除了能運(yùn)行之外就 是一陀屎!如果一年前我能聽到一些反面意見的話,大概我能早一點(diǎn)覺悟,但是自原代碼在 網(wǎng)站發(fā)布以來聽到的都是贊美之詞,沒有一個人向我提出程序改進(jìn)的意見,這又說明了一個什 么問題呢?很值得思考??!
還有一個疑惑是:我們說的和做的真的一樣嗎?我在學(xué)校的時候曾經(jīng)受學(xué)院指派承辦過一個 計算機(jī)大賽,請了一個老師出決賽的題目,主要是一些算法題目,這個老師可能是我上大學(xué)以 來唯一敬佩的老師了,從程序調(diào)試到打分,對于每個程序都仔細(xì)分析其時間效率和空間效率,然后綜合打分,四十個人的卷子,老師從下午三點(diǎn)一直調(diào)試到晚上十點(diǎn),在有些寫的精彩的語 句后還加上批注。我真是高興很遇到這樣的老師并且和他做深入的交流,但在事后,卻發(fā)生了 一件不愉快的事,在比賽中獲得第二名的學(xué)生找到我,說他程序全部調(diào)試成功應(yīng)該給他滿分,并且應(yīng)該得第一,我說不過他,最后調(diào)出了他的原程序和第一名的原程序?qū)Ρ?,錯,兩個程 序都運(yùn)行的很好,這時,那個同學(xué)開口了:“我的程序?qū)懙氖趾喗菝髁?,僅僅數(shù)行就完成了 題目要求,而他的卻寫了一大堆,為什么給他的分多過給我的分?!蔽耶?dāng)時很是氣憤,如果不 是老師負(fù)責(zé)的話,那么現(xiàn)在第一名和第二名的位置真的要互調(diào)了,拜托,不是程序的行數(shù)越少 程序的質(zhì)量就越高,我記得我跟他大談這方面的道理,最后說服他了!哈哈,但是我,只能說 說而已,我不知道還有多少人一樣,說起來頭頭是道,但心里卻壓根就從未重視過它!
3.我打算做的!
其實(shí)那天我想到的遠(yuǎn)不止上面那么多,但是我不想再說了,因?yàn)槲也孪肟催@篇文章的網(wǎng)友大 概都有一肚子的感想,一肚子的抱怨,借用這篇文章發(fā)泄可不是我想達(dá)到的目的,在上面我把 自己罵的一文不值也不是妄自菲薄,但是在某些方面我真的做錯了,或者說是偏離了正確方向,現(xiàn)在是矯正方向和重整旗鼓的時候了,就象我前面說過的,我相信中國有世界上最好的程序 員,我也相信我的水平不會一直保持現(xiàn)狀,我現(xiàn)在就收拾起牢騷真正的實(shí)干起來!真的很巧,就寫到這里的時候我在網(wǎng)上偶爾發(fā)現(xiàn)了這篇手冊,我不知道這預(yù)示著什么,但是 我想如果我照下面這個基本原則一直踏實(shí)做下去,我一定會實(shí)現(xiàn)我的理想---一名優(yōu)秀的軟件設(shè)計師!
(下面這些文字不是我的原創(chuàng),是我偶爾在網(wǎng)上發(fā)現(xiàn)的,我真的很幸運(yùn)能看到這些,這篇文 章也隨著下面的文字而結(jié)束,我真心的希望您能從這篇文章中得到啟發(fā),這篇文章歡迎大家隨 意轉(zhuǎn)載!)
作者:金蝶中間件公司CTO袁紅崗
不知不覺做軟件已經(jīng)做了十年,有成功的喜悅,也有失敗的痛苦,但總不敢稱自己是高手,因?yàn)楹臀倚哪恐姓嬲母呤謧儽绕饋恚€差的太遠(yuǎn)。世界上并沒有成為高手的捷徑,但一些基 本原則是可以遵循的。
1.扎實(shí)的基礎(chǔ)。數(shù)據(jù)結(jié)構(gòu)、離散數(shù)學(xué)、編譯原理,這些是所有計算機(jī)科學(xué)的基礎(chǔ),如果 不掌握他們,很難寫出高水平的程序。據(jù)我的觀察,學(xué)計算機(jī)專業(yè)的人比學(xué)其他專業(yè)的人更能 寫出高質(zhì)量的軟件。程序人人都會寫,但當(dāng)你發(fā)現(xiàn)寫到一定程度很難再提高的時候,就應(yīng)該想 想是不是要回過頭來學(xué)學(xué)這些最基本的理論。不要一開始就去學(xué)OOP,即使你再精通OOP,遇到 一些基本算法的時候可能也會束手無策。
2.豐富的想象力。不要拘泥于固定的思維方式,遇到問題的時候要多想幾種解決問題的 方案,試試別人從沒想過的方法。豐富的想象力是建立在豐富的知識的基礎(chǔ)上,除計算機(jī)以外,多涉獵其他的學(xué)科,比如天文、物理、數(shù)學(xué)等等。另外,多看科幻電影也是一個很好的途徑。
3.最簡單的是最好的。這也許是所有科學(xué)都遵循的一條準(zhǔn)則,如此復(fù)雜的質(zhì)能互換原理 在愛因斯坦眼里不過是一個簡單得不能再簡單的公式:E=mc^2。簡單的方法更容易被人理解,更容易實(shí)現(xiàn),也更容易維護(hù)。遇到問題時要優(yōu)先考慮最簡單的方案,只有簡單方案不能滿足要 求時再考慮復(fù)雜的方案。
4.不鉆牛角尖。當(dāng)你遇到障礙的時候,不妨?xí)簳r遠(yuǎn)離電腦,看看窗外的風(fēng)景,聽聽輕音 樂,和朋友聊聊天。當(dāng)我遇到難題的時候會去玩游戲,而且是那種極暴力的打斗類游戲,當(dāng)負(fù) 責(zé)游戲的那部分大腦細(xì)胞極度亢奮的時候,負(fù)責(zé)編程的那部分大腦細(xì)胞就得到了充分的休息。當(dāng)重新開始工作的時候,我會發(fā)現(xiàn)那些難題現(xiàn)在竟然可以迎刃而解。
5.對答案的渴求。人類自然科學(xué)的發(fā)展史就是一個渴求得到答案的過程,即使只能知道 答案的一小部分也值得我們?nèi)ジ冻觥V灰銏远ㄐ拍?,一定要找到問題的答案,你才會付出精 力去探索,即使最后沒有得到答案,在過程中你也會學(xué)到很多東西。
6.多與別人交流。三人行必有我?guī)煟苍S在一次和別人不經(jīng)意的談話中,就可以迸出靈 感的火花。多上上網(wǎng),看看別人對同一問題的看法,會給你很大的啟發(fā)。
7.良好的編程風(fēng)格。注意養(yǎng)成良好的習(xí)慣,代碼的縮進(jìn)編排,變量的命名規(guī)則要始終保 持一致。大家都知道如何排除代碼中錯誤,卻往往忽視了對注釋的排錯。注釋是程序的一個重 要組成部分,它可以使你的代碼更容易理解,而如果代碼已經(jīng)清楚地表達(dá)了你的思想,就不必 再加注釋了,如果注釋和代碼不一致,那就更加糟糕。
8.韌性和毅力。這也許是”高手"和一般程序員最大的區(qū)別。A good programming is 99 weat and 1ffee。高手們并不是天才,他們是在無數(shù)個日日夜夜中磨練出來的。成功能給 我們帶來無比的喜悅,但過程卻是無比的枯燥乏味。你不妨做個測試,找個10000以內(nèi)的素數(shù) 表,把它們?nèi)汲聛?,然后再檢查三遍,如果能夠不間斷地完成這一工作,你就可以滿足這 一條。
這些是我這幾年程序員生涯的一點(diǎn)體會,希望能夠給大家有所幫助。
第三篇:怎樣學(xué)好編程(范文)
你既然喜歡編程,就應(yīng)該認(rèn)認(rèn)真真的學(xué)習(xí)一門語言,學(xué)習(xí)微軟的就先從VB開始,VB是比較好的入門語言,可視化的,比較簡單,是非常好的入門語言。書籍最少應(yīng)該準(zhǔn)備兩本,不可能一本書籍會包含VB的所有內(nèi)容,在看書的時候,可以交叉的看,一本書籍中沒有講到的內(nèi)容可以在另一本中看到,這樣對學(xué)習(xí)是很有好處的,也能保證所學(xué)知識的完整性。學(xué)編程是一個很漫長的過程,不要著急,要理論與實(shí)踐想結(jié)合,例程書籍也是很重要的,看源代碼對學(xué)習(xí)也是很有幫助的,等你學(xué)完這門VB語言之后,學(xué)習(xí)別的語言是非常簡單,可以嘗試C語言,按照C——C++——VC的順序?qū)W習(xí),有助于知識的連貫性,我也希望你能學(xué)好的。
或者學(xué)習(xí)Delphi,入門較為簡單類似于VB,但比VB強(qiáng)大,即可作為入門又能做強(qiáng)、做大
下面是我個人整理的一點(diǎn)資料。
怎樣學(xué)編程
1.明確學(xué)習(xí)目的學(xué)習(xí)編程對大多數(shù)IT業(yè)人員來說都是非常有用的。學(xué)編程,做一名編程人員,從個人角度講,可以解決在軟件使用中所遇到的問題,改進(jìn)現(xiàn)有軟件,可以為自己找到一份理想的工作添加重要得砝碼,有利于在求職道路上謀得一個好的職位;從國家的角度,可以為中國的軟件產(chǎn)業(yè)做出應(yīng)有的貢獻(xiàn),一名優(yōu)秀的程序員永遠(yuǎn)是被爭奪的對象。學(xué)習(xí)編程還能鍛煉思維,使我們的邏輯思維更加嚴(yán)密;能夠不斷享受到創(chuàng)新的樂趣,將一直有機(jī)會走在高科技的前沿,因?yàn)槌绦蛟O(shè)計本身是一種創(chuàng)造性的工作。知識經(jīng)濟(jì)時代給我們帶來了無限的機(jī)會,要想真正掌握計算機(jī)技術(shù),并在IT行業(yè)里干出一番事業(yè)來,有所作為,具有一定的編程能力是一個基本條件和要求。
2.打好基礎(chǔ)
學(xué)編程要具備一定的基礎(chǔ),總結(jié)之有以下幾方面:
(1)數(shù)學(xué)基礎(chǔ) 從計算機(jī)發(fā)展和應(yīng)用的歷史來看計算機(jī)的數(shù)學(xué)模型和體系結(jié)構(gòu)等都是有數(shù)學(xué)家提出的,最早的計算機(jī)也是為數(shù)值計算而設(shè)計的。因此,要學(xué)好計算機(jī)就要有一定的數(shù)學(xué)基礎(chǔ),出學(xué)者有高中水平就差不多了。
(2)邏輯思維能力的培養(yǎng)學(xué)程序設(shè)計要有一定的邏輯思維能力,“邏思力”的培養(yǎng)要長時間的實(shí)踐鍛煉。要想成為一名優(yōu)秀的程序員,最重要的是掌握編程思想。要做到這一點(diǎn)必須在反復(fù)的實(shí)踐、觀察、分析、比較、總結(jié)中逐漸地積累。因此在學(xué)習(xí)編程過程中,我們不必等到什么都完全明白了才去動手實(shí)踐,只要明白了大概,就要敢于自己動手去體驗(yàn)。誰都有第一次。有些問題只有通過實(shí)踐后才能明白,也只有實(shí)踐才能把老師和書上的知識變成自己的,高手都是這樣成材的。
(3)選擇一種合適的入門語言 面對各種各樣的語言,應(yīng)按什么樣的順序?qū)W呢?程序設(shè)計工具不外乎如下幾類: 1)本地開發(fā)應(yīng)用軟件開發(fā)的工具有:Visual Basic、Delphi、VC++(C++ Builder)等;數(shù)據(jù)庫開發(fā)工具有:Visual Foxpro、Oracle Developer、Power Builder 等。
2)跨平臺開發(fā)開發(fā)工具如 Java 等。3)網(wǎng)絡(luò)開發(fā)對客戶端開發(fā)工具如:Java Script 等;對服務(wù)器開發(fā)工具如:PHP、ASP、JSP、ISAPI、NSAPI、CGI 等。以上不同的環(huán)境下幾種開發(fā)工具中 VB 法簡單并容易理解,界面設(shè)計是可設(shè)化的,易學(xué)、易用。選 VB 作為入門的方向?qū)Τ鰧W(xué)者是較為適合的。
3.注意理解一些重要概念
一本程序設(shè)計的書看到的無非就是變量、函數(shù)、條件語句、循環(huán)語句等概念,但要真正能進(jìn)行編程應(yīng)用,需要深入理解這些概念,在理解的基礎(chǔ)上應(yīng)用,不要只簡單地學(xué)習(xí)語法、結(jié)構(gòu),而要吃透針
這些語法、結(jié)構(gòu)的應(yīng)用例子,做到舉一反三,觸類旁通。
4.掌握編程思想
學(xué)習(xí)一門語言或開發(fā)工具,語法結(jié)構(gòu)、功能調(diào)用是次要的,最主要是學(xué)習(xí)它的思想。例如學(xué)習(xí)VC 就要學(xué)習(xí)Windows 的內(nèi)在機(jī)理、什么是線程......;學(xué)習(xí)COM 就要知道 VTALBE、類廠、接口、idl......,關(guān)鍵是學(xué)一種思想,有了思想,那么我們就可以觸類旁通。
5.多實(shí)踐、多交流
掌握編程思想必須在編程實(shí)際工作中去實(shí)踐和體會。編程起步階段要經(jīng)常自己動手設(shè)計程序,具體設(shè)計時不要拘泥于固定的思維方式,遇到問題要多想幾種解決的方案。這就要多交流,各人的思維方式不同、角度各異,各有高招,通過交流可不斷吸收別人的長處,豐富編程實(shí)踐,幫助自己提高水平。親自動手進(jìn)行程序設(shè)計是創(chuàng)造性思維應(yīng)用的體現(xiàn),也是培養(yǎng)邏輯思維的好方法。
6.養(yǎng)成良好的編程習(xí)慣
編程入門不難,但入門后不斷學(xué)習(xí)是十分重要的,相對來說較為漫長。在此期間要注意養(yǎng)成一些良好的編程習(xí)慣。編程風(fēng)格的好壞很大程度影響程序質(zhì)量。良好的編程風(fēng)格可以使程序結(jié)構(gòu)清晰合理,且使程序代碼便于維護(hù)。如代碼的縮進(jìn)編排、變量命令規(guī)則的一致性、代碼的注釋等。
7.上網(wǎng)學(xué)編程
在網(wǎng)上可以學(xué)到很多不同的編程思想、方法、經(jīng)驗(yàn)和技巧,有大量的工具和作品及相關(guān)的輔導(dǎo)材料供下載。例如網(wǎng)站“編程課堂”(http://best.yeah.net/)主要以 VB 和 Delph;教學(xué)和交流為主,提供大量實(shí)用技巧;網(wǎng)站“現(xiàn)在時編程學(xué)園”(http://pshool.yeah.net/)是專門介紹C、VC、VB、Delphi 等的綜合編程網(wǎng)站;網(wǎng)站“ VB 編程樂園(”http:///)提供內(nèi)容豐富而且實(shí)用的編程技術(shù)文章、精選控件、源代碼下載、計算機(jī)考試、相關(guān)軟件以及編程書籍推薦等等。
8.加強(qiáng)計算機(jī)理論知識的再學(xué)習(xí)
學(xué)編程是符合“理論→實(shí)踐→再理論→再實(shí)踐”的一個認(rèn)識過程。一開始要具有一定的計算機(jī)理論基礎(chǔ)知識,包括編程所需的數(shù)學(xué)基礎(chǔ)知識,具備了入門的條件,就可以開始編程的實(shí)踐,從實(shí)踐中可以發(fā)現(xiàn)問題需要加強(qiáng)計算機(jī)理論知識的再學(xué)習(xí)。程序人人皆可編,但當(dāng)你發(fā)現(xiàn)編到一定程度很難再提高的時候,就要回頭來學(xué)習(xí)一些計算機(jī)科學(xué)和數(shù)學(xué)基礎(chǔ)理論。學(xué)過之后,很多以前遇到的問題都會迎刃而解,使人有豁然開朗之感。因此在學(xué)習(xí)編程的過程中要不斷地針對應(yīng)用中的困惑和問題深入學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)、算法、計算機(jī)原理、編譯原理、操作系統(tǒng)原理、軟件工程等計算機(jī)科學(xué)的理論基礎(chǔ)和數(shù)理邏輯、代數(shù)系統(tǒng)、圖論、離散數(shù)學(xué)等數(shù)學(xué)理論基礎(chǔ)知識。這樣經(jīng)過不斷的學(xué)習(xí),再努力地實(shí)踐,編程水平一定會不斷提高到一個新高度。
學(xué)習(xí)編程是一件好事 不過之前你得先了解 你學(xué)習(xí)編程的目的是什么 這個很重要 因?yàn)槟康臎Q定發(fā)展方向
目前對于編程有很多種編程語言以及相對應(yīng)的開發(fā)軟件 下面說明一些常用的編程語言 根據(jù)你的情況選一種語言進(jìn)行學(xué)習(xí)不要盲亂學(xué)習(xí)
C語言 一種可移植性和多系統(tǒng)平臺的編程語言 開發(fā)軟件TC
VB 一種可以說是既學(xué)既用的軟件開發(fā)語言 開發(fā)軟件如:VB6.0
DELPHI 一種和VB差不多的既學(xué)既用的軟件開發(fā)語言不過其功能遠(yuǎn)比VB強(qiáng)大 代碼書寫上更加方便
開發(fā)軟件 DELPHI7.0
JAVA 一種功能強(qiáng)大可移植性強(qiáng)開發(fā)語言
程序語言,顧名思義就是語言,是用于交流的,程序就是計算機(jī)的語言和人的語言的翻譯者,做一個程序員就是要把人類世界的問題用計算機(jī)的方法去解決和展現(xiàn),可是因?yàn)榉N種
原因,大多數(shù)人在如何學(xué)好語言,如何學(xué)好開發(fā)平臺上疲于奔命,到頭來你只會敲寫代碼。程序基本上都是自學(xué)的,買書是一開始碰到的最頭痛的問題,計算機(jī)的書大多都很貴,現(xiàn)將我的一點(diǎn)經(jīng)驗(yàn)供大家參考:
如果想做一個合格的程序員,C++是一定要學(xué)的,首先你要花兩個月的時間學(xué)習(xí)C,C++,這樣的書很多,去選一些大學(xué)的教材足亦,切記,不要花過多的時間研究C++,兩個月夠了,只要學(xué)會其中語法就行了,不要為了深入用DOS編寫菜單什么的,那是吃飽人參了。
如果你有過多的時間,接下來你可以學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),推崇《數(shù)據(jù)結(jié)構(gòu)C++語言描述》,清華大學(xué)出版,58元,但如果無過多時間,還是不看為妙,至少我現(xiàn)在從未用過這本書的知識,許多東西MFC VCL等開發(fā)平臺都為你已經(jīng)做好。
接下來開始學(xué)習(xí)Windows下的SDK編程, 推崇《Windows程序設(shè)計》160元,建議去借,不要買,而且你只看上冊,你只要了解Windows的運(yùn)作機(jī)制即可。兩個月
然后你將轉(zhuǎn)入VC的世界,既然要在Windows下編程,VC不可不學(xué), 推崇《VC++技術(shù)內(nèi)幕》第四版,96元,三個月,不要全部看,看前面的三部分,后面不要看。后面的只是對COM,數(shù)據(jù)庫,Internet形如雞肋的介紹。
接下來你應(yīng)該考慮一下你將要發(fā)展的方向,如果是做數(shù)據(jù)庫,你可以用VB和Delphi或CB, 如果要做通信方面,或者硬件,你將要深入VC, 如果是WEB相關(guān)的,去學(xué)學(xué)ASP,JAVA,JSP,XML等,但有一樣你必須要學(xué)的,COM。COM與其說是一樣新的技術(shù),還不如說是種機(jī)制,推崇潘愛民的《COM原理和應(yīng)用》39元,你可以一邊看這本書,一邊學(xué)習(xí)些ActiveX組件,ATL控件等等。如果你有的是時間,不急于找工作,你還可以看看《Windows高級編程》或《Windows核心編程》,但不管怎么樣,你要切記,VC不是用來做界面和數(shù)據(jù)庫的,做網(wǎng)絡(luò)的現(xiàn)在也有JAVA,都是用來做一些很底層的東西,VC是很高薪的,如果你對自己有充分的信心和有的是時間,你才可以深入VC。否則的話,還是看看人才市場,看看行情,再說。
還有一點(diǎn)切記,有些書,諸如《MFC深入淺出》這些書主要是關(guān)于那些技術(shù)原理的介紹,我個人認(rèn)為程序只是工具,只是技術(shù),只要學(xué)會用,能完成任務(wù)即可,如果有的是時間,才會去探索根源,也許有許多人會說,懂了原理對你編程會有很大幫助,我不否認(rèn),但是,要知道,就算你編程技術(shù)如何了得,你只是個技術(shù)人員,當(dāng)你學(xué)了那么多的技術(shù)和知識,第一,計算機(jī)的知識其實(shí)是各大公司制定出的標(biāo)準(zhǔn),標(biāo)準(zhǔn)變了,你不是白學(xué)了嗎?第二,當(dāng)你花了幾年的時間學(xué)習(xí),到頭來你只不過程序水平提高一點(diǎn)。我認(rèn)為應(yīng)當(dāng)將你的大部分智力和精力用在如何與人打交道,電腦讓你用的好有什么用,人腦讓你擺弄的好才算真本事,就如《黑冰》里面的計算機(jī)工程師,雖然對計算機(jī)十分精通,可有什么用,還不是死在王志文的手里?而且死的很慘,臉都?xì)Я恕?/p>
另外,不要去學(xué)你喜歡的,也不要去費(fèi)勁腦子想該學(xué)什么,看看人才市場,市場需要什么,你學(xué)什么。
一家之言,僅供參考。
備注:摘自你既然喜歡編程,就應(yīng)該認(rèn)認(rèn)真真的學(xué)習(xí)一門語言,學(xué)習(xí)微軟的就先從VB開始,VB是比較好的入門語言,可視化的,比較簡單,是非常好的入門語言。書籍最少應(yīng)該準(zhǔn)備兩本,不可能一本書籍會包含VB的所有內(nèi)容,在看書的時候,可以交叉的看,一本書籍中沒有講到的內(nèi)容可以在另一本中看到,這樣對學(xué)習(xí)是很有好處的,也能保證所學(xué)知識的完整性。學(xué)編程是一個很漫長的過程,不要著急,要理論與實(shí)踐想結(jié)合,例程書籍也是很重要的,看源代碼對學(xué)習(xí)也是很有幫助的,等你學(xué)完這門VB語言之后,學(xué)習(xí)別的語言是非常簡單,可以嘗試C語言,按照C——C++——VC的順序?qū)W習(xí),有助于知識的連貫性,我也希望你能學(xué)好的。
或者學(xué)習(xí)Delphi,入門較為簡單類似于VB,但比VB強(qiáng)大,即可作為入門又能做強(qiáng)、做大
怎樣學(xué)編程
1.明確學(xué)習(xí)目的學(xué)習(xí)編程對大多數(shù)IT業(yè)人員來說都是非常有用的。學(xué)編程,做一名編程人員,從個人角度講,可以解決在軟件使用中所遇到的問題,改進(jìn)現(xiàn)有軟件,可以為自己找到一份理想的工作添加重要得砝碼,有利于在求職道路上謀得一個好的職位;從國家的角度,可以為中國的軟件產(chǎn)業(yè)做出應(yīng)有的貢獻(xiàn),一名優(yōu)秀的程序員永遠(yuǎn)是被爭奪的對象。學(xué)習(xí)編程還能鍛煉思維,使我們的邏輯思維更加嚴(yán)密;能夠不斷享受到創(chuàng)新的樂趣,將一直有機(jī)會走在高科技的前沿,因?yàn)槌绦蛟O(shè)計本身是一種創(chuàng)造性的工作。知識經(jīng)濟(jì)時代給我們帶來了無限的機(jī)會,要想真正掌握計算機(jī)技術(shù),并在IT行業(yè)里干出一番事業(yè)來,有所作為,具有一定的編程能力是一個基本條件和要求。
2.打好基礎(chǔ)
學(xué)編程要具備一定的基礎(chǔ),總結(jié)之有以下幾方面:
(1)數(shù)學(xué)基礎(chǔ) 從計算機(jī)發(fā)展和應(yīng)用的歷史來看計算機(jī)的數(shù)學(xué)模型和體系結(jié)構(gòu)等都是有數(shù)學(xué)家提出的,最早的計算機(jī)也是為數(shù)值計算而設(shè)計的。因此,要學(xué)好計算機(jī)就要有一定的數(shù)學(xué)基礎(chǔ),出學(xué)者有高中水平就差不多了。
(2)邏輯思維能力的培養(yǎng)學(xué)程序設(shè)計要有一定的邏輯思維能力,“邏思力”的培養(yǎng)要長時間的實(shí)踐鍛煉。要想成為一名優(yōu)秀的程序員,最重要的是掌握編程思想。要做到這一點(diǎn)必須在反復(fù)的實(shí)踐、觀察、分析、比較、總結(jié)中逐漸地積累。因此在學(xué)習(xí)編程過程中,我們不必等到什么都完全明白了才去動手實(shí)踐,只要明白了大概,就要敢于自己動手去體驗(yàn)。誰都有第一次。有些問題只有通過實(shí)踐后才能明白,也只有實(shí)踐才能把老師和書上的知識變成自己的,高手都是這樣成材的。
(3)選擇一種合適的入門語言 面對各種各樣的語言,應(yīng)按什么樣的順序?qū)W呢?程序設(shè)計工具不外乎如下幾類: 1)本地開發(fā)應(yīng)用軟件開發(fā)的工具有:Visual Basic、Delphi、VC++(C++ Builder)等;數(shù)據(jù)庫開發(fā)工具有:Visual Foxpro、Oracle Developer、Power Builder 等。
2)跨平臺開發(fā)開發(fā)工具如 Java 等。3)網(wǎng)絡(luò)開發(fā)對客戶端開發(fā)工具如:Java Script 等;對服務(wù)器開發(fā)工具如:PHP、ASP、JSP、ISAPI、NSAPI、CGI 等。以上不同的環(huán)境下幾種開發(fā)工具中 VB 法簡單并容易理解,界面設(shè)計是可設(shè)化的,易學(xué)、易用。選 VB 作為入門的方向?qū)Τ鰧W(xué)者是較為適合的。
3.注意理解一些重要概念
一本程序設(shè)計的書看到的無非就是變量、函數(shù)、條件語句、循環(huán)語句等概念,但要真正能進(jìn)行編程應(yīng)用,需要深入理解這些概念,在理解的基礎(chǔ)上應(yīng)用,不要只簡單地學(xué)習(xí)語法、結(jié)構(gòu),而要吃透針對這些語法、結(jié)構(gòu)的應(yīng)用例子,做到舉一反三,觸類旁通。
4.掌握編程思想
學(xué)習(xí)一門語言或開發(fā)工具,語法結(jié)構(gòu)、功
調(diào)用是次要的,最主要是學(xué)習(xí)它的思想。例如學(xué)習(xí)VC 就要學(xué)習(xí)Windows 的內(nèi)在機(jī)理、什么是線程......;學(xué)習(xí)COM 就要知道 VTALBE、類廠、接口、idl......,關(guān)鍵是學(xué)一種思想,有了思想,那么我們就可以觸類旁通。
5.多實(shí)踐、多交流
掌握編程思想必須在編程實(shí)際工作中去實(shí)踐和體會。編程起步階段要經(jīng)常自己動手設(shè)計程序,具體設(shè)計時不要拘泥于固定的思維方式,遇到問題要多想幾種解決的方案。這就要多交流,各人的思維方式不同、角度各異,各有高招,通過交流可不斷吸收別人的長處,豐富編程實(shí)踐,幫助自己提高水平。親自動手進(jìn)行程序設(shè)計是創(chuàng)造性思維應(yīng)用的體現(xiàn),也是培養(yǎng)
邏輯思維的好方法。
6.養(yǎng)成良好的編程習(xí)慣
編程入門不難,但入門后不斷學(xué)習(xí)是十分重要的,相對來說較為漫長。在此期間要注意養(yǎng)成一些良好的編程習(xí)慣。編程風(fēng)格的好壞很大程度影響程序質(zhì)量。良好的編程風(fēng)格可以使程序結(jié)構(gòu)清晰合理,且使程序代碼便于維護(hù)。如代碼的縮進(jìn)編排、變量命令規(guī)則的一致性、代碼的注釋等。
7.上網(wǎng)學(xué)編程
在網(wǎng)上可以學(xué)到很多不同的編程思想、方法、經(jīng)驗(yàn)和技巧,有大量的工具和作品及相關(guān)的輔導(dǎo)材料供下載。例如網(wǎng)站“編程課堂”(http://best.yeah.net/)主要以 VB 和 Delph;教學(xué)和交流為主,提供大量實(shí)用技巧;網(wǎng)站“現(xiàn)在時編程學(xué)園”(http://pshool.yeah.net/)是專門介紹C、VC、VB、Delphi 等的綜合編程網(wǎng)站;網(wǎng)站“ VB 編程樂園(”http:///)提供內(nèi)容豐富而且實(shí)用的編程技術(shù)文章、精選控件、源代碼下載、計算機(jī)考試、相關(guān)軟件以及編程書籍推薦等等。
8.加強(qiáng)計算機(jī)理論知識的再學(xué)習(xí)
學(xué)編程是符合“理論→實(shí)踐→再理論→再實(shí)踐”的一個認(rèn)識過程。一開始要具有一定的計算機(jī)理論基礎(chǔ)知識,包括編程所需的數(shù)學(xué)基礎(chǔ)知識,具備了入門的條件,就可以開始編程的實(shí)踐,從實(shí)踐中可以發(fā)現(xiàn)問題需要加強(qiáng)計算機(jī)理論知識的再學(xué)習(xí)。程序人人皆可編,但當(dāng)你發(fā)現(xiàn)編到一定程度很難再提高的時候,就要回頭來學(xué)習(xí)一些計算機(jī)科學(xué)和數(shù)學(xué)基礎(chǔ)理論。學(xué)過之后,很多以前遇到的問題都會迎刃而解,使人有豁然開朗之感。因此在學(xué)習(xí)編程的過程中要不斷地針對應(yīng)用中的困惑和問題深入學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)、算法、計算機(jī)原理、編譯原理、操作系統(tǒng)原理、軟件工程等計算機(jī)科學(xué)的理論基礎(chǔ)和數(shù)理邏輯、代數(shù)系統(tǒng)、圖論、離散數(shù)學(xué)等數(shù)學(xué)理論基礎(chǔ)知識。這樣經(jīng)過不斷的學(xué)習(xí),再努力地實(shí)踐,編程水平一定會不斷提高到一個新高度。
學(xué)習(xí)編程是一件好事 不過之前你得先了解 你學(xué)習(xí)編程的目的是什么 這個很重要 因?yàn)槟康臎Q定發(fā)展方向
目前對于編程有很多種編程語言以及相對應(yīng)的開發(fā)軟件 下面說明一些常用的編程語言 根據(jù)你的情況選一種語言進(jìn)行學(xué)習(xí)不要盲亂學(xué)習(xí)
C語言 一種可移植性和多系統(tǒng)平臺的編程語言 開發(fā)軟件TC
VB 一種可以說是既學(xué)既用的軟件開發(fā)語言 開發(fā)軟件如:VB6.0
DELPHI 一種和VB差不多的既學(xué)既用的軟件開發(fā)語言不過其功能遠(yuǎn)比VB強(qiáng)大 代碼書寫上更加方便
開發(fā)軟件 DELPHI7.0
JAVA 一種功能強(qiáng)大可移植性強(qiáng)開發(fā)語言
程序語言,顧名思義就是語言,是用于交流的,程序就
是計算機(jī)的語言和人的語言的翻譯者,做一個程序員就是要把人類世界的問題用計算機(jī)的方法去解決和展現(xiàn),可是因?yàn)榉N種原因,大多數(shù)人在如何學(xué)好語言,如何學(xué)好開發(fā)平臺上疲于奔命,到頭來你只會敲寫代碼。
程序基本上都是自學(xué)的,買書是一開始碰到的最頭痛的問題,計算機(jī)的書大多都很貴,現(xiàn)將我的一點(diǎn)經(jīng)驗(yàn)供大家參考:
如果想做一個合格的程序員,C++是一定要學(xué)的,首先你要花兩個月的時間學(xué)習(xí)C,C++,這樣的書很多,去選一些大學(xué)的教材足亦,切記,不要花過多的時間研究C++,兩個月夠了,只要學(xué)會其中語法就行了,不要為了深入用DOS編寫菜單什么的,那是吃飽人參了。
如果你有過多的時間,接下來你可以學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),推崇《數(shù)據(jù)結(jié)構(gòu)C++語言描述》,清
華大學(xué)出版,58元,但如果無過多時間,還是不看為妙,至少我現(xiàn)在從未用過這本書的知識,許多東西MFC VCL等開發(fā)平臺都為你已經(jīng)做好。
接下來開始學(xué)習(xí)Windows下的SDK編程, 推崇《Windows程序設(shè)計》160元,建議去借,不要買,而且你只看上冊,你只要了解Windows的運(yùn)作機(jī)制即可。兩個月
然后你將轉(zhuǎn)入VC的世界,既然要在Windows下編程,VC不可不學(xué), 推崇《VC++技術(shù)內(nèi)幕》第四版,96元,三個月,不要全部看,看前面的三部分,后面不要看。后面的只是對COM,數(shù)據(jù)庫,Internet形如雞肋的介紹。
接下來你應(yīng)該考慮一下你將要發(fā)展的方向,如果是做數(shù)據(jù)庫,你可以用VB和Delphi或CB, 如果要做通信方面,或者硬件,你將要深入VC, 如果是WEB相關(guān)的,去學(xué)學(xué)ASP,JAVA,JSP,XML等,但有一樣你必須要學(xué)的,COM。COM與其說是一樣新的技術(shù),還不如說是種機(jī)制,推崇潘愛民的《COM原理和應(yīng)用》39元,你可以一邊看這本書,一邊學(xué)習(xí)些ActiveX組件,ATL控件等等。如果你有的是時間,不急于找工作,你還可以看看《Windows高級編程》或《Windows核心編程》,但不管怎么樣,你要切記,VC不是用來做界面和數(shù)據(jù)庫的,做網(wǎng)絡(luò)的現(xiàn)在也有JAVA,都是用來做一些很底層的東西,VC是很高薪的,如果你對自己有充分的信心和有的是時間,你才可以深入VC。否則的話,還是看看人才市場,看看行情,再說。
還有一點(diǎn)切記,有些書,諸如《MFC深入淺出》這些書主要是關(guān)于那些技術(shù)原理的介紹,我個人認(rèn)為程序只是工具,只是技術(shù),只要學(xué)會用,能完成任務(wù)即可,如果有的是時間,才會去探索根源,也許有許多人會說,懂了原理對你編程會有很大幫助,我不否認(rèn),但是,要知道,就算你編程技術(shù)如何了得,你只是個技術(shù)人員,當(dāng)你學(xué)了那么多的技術(shù)和知識,第一,計算機(jī)的知識其實(shí)是各大公司制定出的標(biāo)準(zhǔn),標(biāo)準(zhǔn)變了,你不是白學(xué)了嗎?第二,當(dāng)你花了幾年的時間學(xué)習(xí),到頭來你只不過程序水平提高一點(diǎn)。我認(rèn)為應(yīng)當(dāng)將你的大部分智力和精力用在如何與人打交道,電腦讓你用的好有什么用,人腦讓你擺弄的好才算真本事,就如《黑冰》里面的計算機(jī)工程師,雖然對計算機(jī)十分精通,可有什么用,還不是死在王志文的手里?而且死的很慘,臉都?xì)Я恕?/p>
另外,不要去學(xué)你喜歡的,也不要去費(fèi)勁腦子想該學(xué)什么,看看人才市場,市場需要什么,你學(xué)什么。
一家之言,僅供參考。
第四篇:一個老程序員的十年回顧
一個老程序員的十年回顧
發(fā)布時間: 2012-02-05 18:30 閱讀: 3149 次 全屏閱讀 [收藏]
目錄
上篇艱難人生
一、第一次考研的失敗
二、“土包子”的北京之行
下篇學(xué)習(xí)人生:主要是我學(xué)習(xí)計算機(jī)技術(shù)的經(jīng)歷與感觸,時間跨度大約是從1994~1996年;中篇實(shí)踐人生:主要是我的技術(shù)實(shí)踐經(jīng)歷:在公司打工,開發(fā)軟件,畢業(yè)求職與教書生涯,時間跨度是1999~2003。
上篇艱難人生
從此(決定考研)邁上了一條對我來說到目前為止最難走的路,是一個人生的煉獄。
一、第一次考研的失敗
決定考研之后,我就去買了相關(guān)資料,取出塵封己久差點(diǎn)當(dāng)廢紙賣掉的大學(xué)課本,又開始了學(xué)生生涯。
考哪兒的大學(xué)?是我首先要考慮的問題。當(dāng)時還有另一個高中同學(xué)也準(zhǔn)備考研,也是計算機(jī),他報了廣西師范大學(xué)的研究生。
父母則勸我也考廣西師大或我的母校廣西大學(xué)的研究生,說那好考得多,也可以托人走走關(guān)系。但我這人很犟,我在西大混了4年,什么也沒學(xué)到,我還去那兒干什么?我想起了高中時的夢想,決定直接考北京的高校。當(dāng)然,北大清華是想都不敢想的,社會上工作幾年,我畢竟清楚自己幾斤幾兩,但北京幾十所高校,難道一所也不行?我不能再聽父母的話了,我要走自己的路,自己的命運(yùn)自己負(fù)責(zé),于是我堅持要考北京的學(xué)校。
知道這件事的朋友都對我表示驚奇,工作了4年,學(xué)校里的知識都忘得差不多了,還想直接考北京的學(xué)校,難度之大,相信不少人都認(rèn)為我成功的希望很渺茫。事實(shí)證明,他們的看法是對的,但不全對,因?yàn)槭郎媳揪蜎]有絕對的事情。
這時,我還在一家私營公司里打工,于是,白天上班,晚上就挑燈夜戰(zhàn),每晚不到12點(diǎn)不休息。
經(jīng)過半年的復(fù)習(xí),我參加了1997年元月的全國研究生入學(xué)考試,成績出來,我專業(yè)課沒問題,但數(shù)學(xué)才得了44分,毫無疑問,名落孫山。
這是一個打擊,但對我并沒有太大的影響。
這時,我小時候住在隔壁的阿姨來到桂林,她說她女兒(我小時的玩伴,也姓楊)去年就考研了,但也同樣沒過,她原先在北京服裝學(xué)院讀本科,畢業(yè)分回廣西柳州一個國企里,工作一年之后考研,沒考上之后,她就把工作給辭了,專門跑到北京同學(xué)家中復(fù)習(xí)一年。97年考研她成功了。
得知這個消息,對我是個很大的鼓勵。我想,她一個比我小的女孩都能成功,我為什么不行?我想辦法與她聯(lián)系上了,在后來的考研歲月中,她給了我極大的幫助,幫我買資料,幫我問成績,寫信給我,鼓勵我堅持下去……
受人滴水之恩,當(dāng)涌泉以報。
世上的人大都只會“錦上添花”,但只有“雪中送炭”才是最寶貴的。她就是我的“雪中送炭”人,她研究生畢業(yè)后嫁到青島去了,斷了音訊,但我心中永遠(yuǎn)記住了她的幫助。我決定,從今往后,如果我有能力幫助別人的,就一定要幫助人。這世界充滿了太多不好的東西,我應(yīng)該努力往其中添一點(diǎn)好的東西,哪怕顯得多么微不足道。
二、“土包子”的北京之行
1.中關(guān)村印象
剛好,1997年我大哥在北京中央美院進(jìn)修美術(shù),我決定明年繼續(xù)考研,于是辭去了在一家私營電腦公司的工作,于6月底來到了北京,住進(jìn)了大哥的宿舍。6月到7月,我在北航學(xué)計算機(jī)維修,7月參加陳文燈老師的考研班,一直呆到9月中旬,我才回到桂林。
中央美院當(dāng)時搬到了北京西北角的西八間房,我和大哥一起住在學(xué)生宿舍中。認(rèn)識了不少來自全國各地的搞美術(shù)的大哥同學(xué),我很喜歡和他們這些搞藝術(shù)的人在一起,看他們色彩斑斕,形象逼真的油畫,和設(shè)計精巧的一些手工作品,是一種美的體驗(yàn)。與我們工科人相比,他們是另一種思維方式。
7月份,大哥要回桂林了。在回桂林前,我?guī)退退耐瑢W(xué)們?nèi)ブ嘘P(guān)村電子市場一口氣買了三臺電腦,當(dāng)時最紅火的電子市場是中關(guān)村電子市場,就是現(xiàn)在北大太平洋電腦商場所在的地方。那時電子市場里熙熙攘攘,如此的紅火,是我在廣西所從未見到的也從未想到的。在大街上隨處可見抱著臺打印機(jī),拎著個掃描儀的人,把電腦配件當(dāng)成白菜一樣賣,這就是我對聞名全國的“中關(guān)村電子一條街”的最初印象。
我到了中關(guān)村,見到了那些我非常熟悉的公司:北大方正,金山WPS,江民科技……,見到了北京書堆積如山的書店,感嘆這里真是一個知識的海洋,覺得親身感受到了中國IT業(yè)的脈博。
大哥回去后,我一個人留在北京,騎著輛破自行車逛了中國最有名的大學(xué):北大和清華,北大風(fēng)景如畫的未名湖上處處荷葉飄香,清華平平展展的草坪展示一種平實(shí)坦蕩的心胸。一墻之隔,校園內(nèi)外,就是兩種不同氣氛,無名無狀,卻讓我這個二十多歲沒出過廣西的土包子感受深刻。
2.“瘋狂”的考研班
我參加的是暑期文登學(xué)校的考研班。中央財經(jīng)大學(xué)那棟破敗不堪的學(xué)四樓里,住滿了來自全國各地的學(xué)生,和我住在一起的,一個是湖北的,一個是東北的,一個四川的,為了同一個目的,大家從天南地北聚到了一起,我當(dāng)時真感到了一種“家”的感覺,原來這世界有這么多同路人,我不過是中國十幾萬考生中一名不起眼的“老生”罷了,但還不算是“范進(jìn)”。
考研班的日子是“瘋狂學(xué)習(xí)”的日子。
記得我們需要到北方交通大學(xué)的大禮堂去聽人大老師索愛群的政治課,一千多人的大禮堂被擠得滿滿的,連過道上都坐了人。在老師的講臺前堆滿了各式各樣的錄音機(jī),足有一百多部,來自全國各地的莘薺學(xué)子拿著一瓶礦泉水,在北京最熱的7月,揮汗如雨地在記筆記!這段日子,我用去了7個筆記本!這種氣氛,我以前在廣西是從未見過的。我本來以為我已經(jīng)夠努力勤奮的了,到北京考研班一看,根本就不算什么。
陳文燈老師教的數(shù)學(xué)給我留下了最為深刻的印象,他上課不用講稿,所有的例題全都記在他的腦里,隨手就可以寫出來,絲毫不差,還總結(jié)出一整套解題方法,讓我大開眼界。我是見著了,原來一個人對本職工作可以精熟到這種地步!后面我還會談到另一位老教授對職業(yè)可貴可敬的敬業(yè)精神,不敬業(yè),就不是一個合格的勞動者。
我一直呆到身上沒錢了才離開北京。這三個月花完了我工作幾年的所有積蓄,卻對我的影響是巨大的,中國什么地方最適合學(xué)習(xí)?最適合學(xué)計算機(jī)?在我看來,只有北京!
我下定決心,一定要到北京來學(xué)習(xí)計算機(jī)技術(shù)。
3.差點(diǎn)跳樓的致命打擊
9月中旬我回到了桂林,開始準(zhǔn)備第二年的考研。
但生活是不講情面的,我想當(dāng)然地認(rèn)為經(jīng)過了北京名師的指點(diǎn),我去年就是數(shù)學(xué)沒過,今年應(yīng)該沒問題了,但事實(shí)并不如此。
1998年的數(shù)學(xué)試題,突然有了一次很大的變動,這次數(shù)學(xué)考試特別難,題量還特別大,全國及格率僅7%,平均分為30多分。我現(xiàn)在將這次考試試題稱之為“變態(tài)”的題目,出題的那幫呆在空調(diào)房里的教授們挖空心思出出來的題目,可把我給害慘了。我自認(rèn)為心理素質(zhì)夠強(qiáng)了,但因?yàn)檫@場考試關(guān)系命運(yùn)太大,在考場上我的手都是抖的,幾乎暈倒,一道道的大題空在那兒做不出來,都象是在不斷地譏笑我不自量力,又象是一張張面無血色的血盆大口,一張口就把我給吞下去了,連骨頭渣子都不吐。
考完數(shù)學(xué),我就知道我今年沒戲了。原來一個考場有幾十位考生,考完數(shù)學(xué)之后只剩下不到三分之一的人。我堅持著把后面的課目考完。在那種明知無望但僅憑一種信念支撐著要堅持到底的時刻,我真不知道當(dāng)時是怎么挨完后面的專業(yè)課考試的。
3月,成績下來了,我的數(shù)學(xué)成績讓我差點(diǎn)去跳漓江了---13分!我從小學(xué)習(xí)勤奮努力,從沒拿過這么低的分?jǐn)?shù)。真是破紀(jì)錄!當(dāng)時真是灰心到了極點(diǎn),準(zhǔn)備放棄考研,到廣東打工,找個地方浪跡天涯,自生自滅去,實(shí)在沒臉在家呆了。
這個時候,我大哥勸住了我:你都考了兩次了,我看來你就是數(shù)學(xué)差,其它課你都過線了,專業(yè)課還都是80多分,為什么不繼續(xù)努力?集中精力把數(shù)學(xué)搞好就可以了。你現(xiàn)在放棄,就前功盡棄!
我這人笨,從小學(xué)學(xué)東西就慢,這是一大弱點(diǎn)。但上天是公平的,他給你一個弱點(diǎn)的同時,也一定提供了讓你克服這個弱點(diǎn)的方法。
我笨,但我好強(qiáng),但我勤奮,但我堅持,人一之,我十之,笨鳥先飛,古已有之,古人可以做到,我為什么就不能做到?這事就這么收場?我不服,不甘心!于是,我下定決心再拼一次。
我現(xiàn)在沒有工作,也不想再去找工作了,住在家中,就與堆積如山的書干上了。在關(guān)鍵時刻,年邁的父母無條件地支持了我,他們默默地承擔(dān)了一切,讓我有飯吃,給我一個安靜的環(huán)境,讓我去實(shí)現(xiàn)我的夢想。
我深深感受到父母的愛是多么的無條件!我一個二十五六的大小伙子,呆在家中吃閑飯,還讓父母為我的前途操心,那種心靈的煎熬,現(xiàn)在想起來都有種想哭的感覺。男兒有淚不輕彈,只因未到傷心處!在此,我要深情地對我的父母說:兒子絕不會忘記你們的恩情,唯望兩老保重身體,一定要等到看到我過上好日子的時光。
4.反思,走自己的路!
考研失敗,我反復(fù)想,為什么我聽了陳文燈傳授的做題秘訣,反而考得更差了?別人為什么用陳老師的方法考出了好成績?看來,每個人的具體情況不同,不存在可以讓人暴長功力的“武林密笈”,從這件事中我學(xué)到,決不能迷信權(quán)威,迷信理論。后來我對許多現(xiàn)象與潮流如CMM熱、設(shè)計模式、軟件工程等理論都持有不同的看法,認(rèn)為把西方的東西原樣照搬是行不通的,不經(jīng)過自己的大腦獨(dú)立地思索,不經(jīng)過實(shí)踐的檢驗(yàn),不要相信任何東西!
從98年到99年1月,我斷絕了一切外部聯(lián)系,把自己關(guān)在了家中。我父母的工作單位是一個療養(yǎng)院,全院加起來也就一兩百號人,后山就是一個森林公園,空氣清新,林木繁茂,大院里還有一個小山(是真山,不是假山,桂林的這樣象竹筍似的山多了),山上修了個亭子,平時少有人來,真是一個閉門修行的好地方。
我每天到小山亭子上去學(xué)英語、背政治,桂林四季長青,我周圍是青山綠竹,微風(fēng)一過,樹葉沙沙做響,我就在這里學(xué)起了戰(zhàn)國時的蘇秦。從春學(xué)到夏,再從夏學(xué)到冬,苦苦學(xué)了一年,這一年里,使我的心志得到了極大的鍛煉,困難更加難以擊倒我。后來我境況轉(zhuǎn)好,生活中很多人覺得受不了的挫折,在我看來都不過是小菜一碟罷了。
桂林多奇山,秀美蒼翠,風(fēng)景四季如畫。每當(dāng)我學(xué)累的時候,總是看著這美麗的風(fēng)景,贊嘆祖國江山如畫,感觸人生之渺小,命運(yùn)之無常!
大哥從北京帶回了一臺電腦,奔騰166、4.2G的昆騰大腳硬盤,當(dāng)時不錯的配置,把它送給了我用。我渴望了多久的東西終于到手了,我終于可以無限制地使用計算機(jī)了!我把電腦放在床前,伴它入眠。
我有時半夜會突然驚醒,想著目前的困境,渾身會出一身冷汗。電腦沉默不語,在一旁安靜地陪著我。我看著那藍(lán)幽幽的屏幕,心情非常復(fù)雜。
有了電腦也難過,我得抑制住自己強(qiáng)烈地想探索軟件技術(shù)的欲望,強(qiáng)制自己把主要精力放在考研上。
整個考研英語大綱有5300多個單詞,為了背下它們,我用VB編了一個背單詞的小軟件,每次可以分別顯示中文或英文,并可以區(qū)分哪些單詞沒記住,下次復(fù)習(xí)。所有單詞我都是用鍵盤一個字母一個字母地敲入的,每天早上一起床,先對著電腦背它半個小時。到考研結(jié)束,我一看,數(shù)據(jù)庫中已有了兩千多個單詞。
這一年以來,我真是玩命,什么考研理論我都不信了,我就托人買了國家教委出的幾本考試分析,就專門研究考研試題,我要找出適合我自己的方法來。
考研數(shù)學(xué)考試分析500多頁的書,被我翻來覆去地將歷年考試試題做了三遍。黨的十五大報告我至少背了一百多遍,我稱之為背“語錄”,真稱得上是“倒背如流”,考政治時我把大段大段的十五大報告文字抄上去,居然得了75分!
發(fā)黃的本科高等數(shù)學(xué)和概率與數(shù)理統(tǒng)計,以及藍(lán)色封皮的線性代數(shù)課本,都被我翻得不成樣子。我覺得我就是基礎(chǔ)太差,在這種基礎(chǔ)之上,講什么做題方法都是空中樓閣,一定要抓住“三基”(基本知識、基本方法與基本原理)。但我不得不悲哀地指出,我這些努力并未使我的數(shù)學(xué)能力有所提高,數(shù)學(xué)并不是這樣學(xué)的,數(shù)學(xué)思維絕不是這樣培養(yǎng)的。怎樣學(xué)數(shù)學(xué)?得去問華羅庚與陳景潤等數(shù)學(xué)大師!我至今數(shù)學(xué)還是不行。也希望有這方面經(jīng)驗(yàn)的人能夠教我,讓我補(bǔ)上數(shù)學(xué)這一課。
生活總算給了我一次微笑。1999年考研,我數(shù)學(xué)得了60分,終于邁進(jìn)了大學(xué)的門檻,可以打起背包上北京了。
我這人比較笨,不善于找到達(dá)到目標(biāo)的最佳路線,但憑著牛勁鉆下去,硬給我鉆出了一條路。這條路能走通還帶有一些僥幸的色彩,大家想必比我聰明得多,一定能找到更好的路,用更經(jīng)濟(jì)更聰明的辦法達(dá)到目的,這是一種大智慧,是我所沒有的。
這段經(jīng)歷對我個人的思想品質(zhì)的影響是深遠(yuǎn)的。為什么這么說?為了考政治,我深入全面地了解了中國近現(xiàn)代史,我去盜版碟市場買了不少存有歷史資料的光盤,從多方面來看中國歷史,凡電視中有關(guān)歷史的節(jié)目,我必看。我在這里尤其想說的是一個巨著——《毛澤東選集》!經(jīng)歷過文革的每個家庭,哪家沒有毛選?我家就有不止一套。毛澤東選集一到四卷,發(fā)黃的書被我在這段時間通讀了一遍。其中的經(jīng)典文章更是被我看了一遍又一遍,趕上金庸的《射雕英雄傳》了。越讀越覺得毛澤東之人真是數(shù)百年才出一人的大牛人,他的《湖南農(nóng)**動考察報告》、《論持久戰(zhàn)》等著作,其中體現(xiàn)出來的深刻洞察力與對中國國情的深入把握,其博大的心胸,為國為民的精神真叫我震撼!最終奪了天下,實(shí)在是中國社會的必然,當(dāng)時她集中了多少中國最出色最優(yōu)秀的人才,再加上毛澤東這種不世出的大牛人領(lǐng)導(dǎo),老蔣真與他不是一個水準(zhǔn)的,想與老毛逐鹿中原,必敗無疑!我成了毛澤東的崇拜者,但絕不是盲從者。
說起來大家可能不信,我從毛選中得到了許多精神上的營養(yǎng),更加樂觀了。毛選,真是中國人巨大的精神財富!近年來有不少憤青指著毛澤東晚年的失誤全盤否定毛澤東,在我看來真是狂妄無知,他們有幾個真正了解毛澤東?有幾個真正客觀地看過毛選?有幾個有資格對毛澤東做出評價? 把他們放回毛澤東生存的那個民族危亡的時代,他們還會有這么多屁放?!說不定最先當(dāng)漢奸的就是他們。呵呵,不好意思,說粗話了。
閑話少說,回到正題。
回顧這段經(jīng)歷,我只能說是“具有中國特色的考研之路”。我感嘆,中國的考試就是扼殺人性的東西,高考與考研尤其如此。我要是用這種精力去學(xué)計算機(jī),一年半的時間,還有什么技術(shù)學(xué)不到手?但我沒辦法,現(xiàn)實(shí)逼著我去考這種我并不想考的試。中國考試之難我看全世界也不多見,我想,每年全國還有那么多的學(xué)生要參加這種考試,大量的人力物力與年青人的精力和時間都耗費(fèi)在考試上了,而考試的內(nèi)容與實(shí)際脫離那么遠(yuǎn),真的有助于人才的脫穎而出?我看反倒是形成了一種應(yīng)試教育,扼殺了年青人本來所具有的創(chuàng)造性,中國現(xiàn)在為什么出不了大師級的人物,應(yīng)該反思中國的教育制度。
下篇-實(shí)踐人生
一、希特勒地堡與CIH病毒
1999年4月,我來到北京參加研究生復(fù)試。復(fù)試完了之后就不回去了,我拿著一張光盤,里面刻著我用VB和Authorware 3.5編的一個Cool 3D的教學(xué)軟件,到處參加招聘會,開始了在北京的打工生涯。
說句實(shí)話,我心中真是一點(diǎn)底也沒有。北京人才濟(jì)濟(jì),我一個三流大學(xué)的畢業(yè)生,又不是計算機(jī)專業(yè)的,有人要我嗎?
我在北京無依無靠,沒有任何一個親戚在北京,住成了大問題。北京這地方,錢太不經(jīng)花,生活費(fèi)用太高,我四處尋找便宜的地方住。后來,我在北京化工大學(xué)對面的招待所中租了個床位,每晚20元,地下室。這個招待所的地下室非常大,每天回去的時候,都要走過長長的曲曲折折的通道,加上那昏黃的燈泡,每次我都有走進(jìn)了希特勒地堡的感覺。地下室里潮濕陰暗,不見天日。地下室里人員很雜,什么人都有,永遠(yuǎn)沒有一種安全的感覺,所幸的是我也是個窮光蛋,光腳的還怕穿鞋的?別人能呆我也能呆,唯一讓我擔(dān)心的是錢,沒錢,在北京連流落街頭都不夠格,立馬被收容去昌平篩沙。呵呵,我沒這種經(jīng)歷,這是當(dāng)時住一塊的一個外地要考北京中醫(yī)藥大學(xué)的博士生說的(我倆居然住到了一個屋里,大家都沒錢,只能擠地下室,只是他老兄晚上打呼,我可真受了不少罪)。
日子一天天過去,袋里的錢一天天少了,但工作還是沒著落,心中越來越慌,除去學(xué)費(fèi),來京時父母給我2000元,大哥資助我的1000元就是我當(dāng)時的全部資金(3000元在北京能呆多久??。?。我當(dāng)時訂了個計劃,留下500元保底,打死都不能動,要靠它作路費(fèi)回家的。我當(dāng)時說,一定得找到一家公司,再少的錢都干,只要有口飯吃,有張床讓我睡我就滿足了。
我一共應(yīng)聘了四五家公司,最具傳奇色彩的是到西單附近一家公司的應(yīng)聘經(jīng)歷。那時,我?guī)チ宋业淖髌?,公司項目?jīng)理要看,于是我給他們演示,很奇怪,程序一打開就死機(jī),一連兩臺電腦都一樣,末了,兩臺電腦都啟動不起來了。用瑞星一查,CIH病毒——那天正是4月26日!于是,CIH破壞了電腦主板的同時,也無情地摧毀了我的就業(yè)機(jī)會。還算老板可憐我,沒要我賠。其實(shí)我當(dāng)時快到山窮水盡的地步了,真要我出錢,我可能連家都回不了啦。陳盈豪(CIH病毒的作者),你小子這么的聰明做什么不行,偏要去做病毒,害人害已,弄得我連個飯碗也找不到,晚上回“希特勒地堡”,把這小子罵了無數(shù)次!
總算天無絕人之路,在我數(shù)著最后還剩余600元錢的時候,終于有一家公司要我了,做中小學(xué)教育軟件,月薪1600。干了兩星期,又給我在公司的倉庫挪開貨物,搭了個床位,我就在那住下了,慶幸再也不用到“希特勒地堡”里當(dāng)沖鋒隊員了。每天下班后,我就睡在林立的大紙箱之中,如果來個地震,呵呵,我就埋在紙箱中了,休想爬得出來!
我干得非常努力,第一個月工資開出來,扣掉個人所得稅,我拿了1500多元。你們不知道我拿到第一筆工資的感覺!這錢在很多人眼里簡直不算錢,但對于一個沒工作近兩年,工作也一個月收入不到200的窮小子而言,就象陳佩斯小品中所演的:“我王老五活了一輩子,還從沒見過這么多錢??!”。好笑嗎?我一點(diǎn)也不覺得好笑。我只是心酸,我到了28歲才可以用自己的知識與技能養(yǎng)活自己,再不用依靠父母和兄長的資助,才真正完全用自己的力量在社會上站起來,一個沒有經(jīng)濟(jì)自立能力的人,只能是個不成熟的人,一個躺在父母身上的人,不是一個真正的男子漢!我當(dāng)這樣的孬種當(dāng)了28年!
我找到工作后向家里寫過一封長信,信中講了我對父母平時不好意思說的很多心里話,當(dāng)時,我父親說,母親接到信都哭了。我剛拿到工資,馬上打了個電話回家里告訴母親,以緩解他們的焦慮,畢竟兒行千里母擔(dān)心?。「改赣型诵萁?,一再表示不需要我贍養(yǎng),而我再這樣不要臉下去,我還是人嗎?我就是從那時候開始,下定決心,從今往后,再不向家中要一分錢!今后三年讀書和生活的費(fèi)用我一定要用自己的勞動來獲取。
金錢帶給我的激動就是在那段時間,溫飽問題解決之后,金錢對我的誘惑就再沒有了,哪怕讓我一個月賺一萬,給套房子給我,也不可能再給我?guī)硇腋5母杏X了,錢是重要的,但不能成為它的奴隸,家中不需要我負(fù)擔(dān),我一個人有吃有喝,干著我喜歡的工作,足矣!
我在那公司一直干到九月學(xué)校開學(xué)為止。我走的那一天,公司居然還開了個歡送宴會,老板封了500元的封包給我。我真是感動。我大學(xué)畢業(yè)后在社會上掙扎求生,得到的大都是冷眼與蔑視,社會終于認(rèn)可了我的價值,我不是一個只知道吃飯的廢物!
1999年9月9日上午9點(diǎn),在這個最多9字的時刻,我到學(xué)校報道來了,放下行李,我坐在分配給我的床上,心中終于踏實(shí)下來。
現(xiàn)在,我在北京終于有一張屬于我的床了,一張真正屬于我的床了,終于有個地方可以讓我安穩(wěn)地睡覺了。沒有這段經(jīng)歷,我怎么體驗(yàn)到“安居樂業(yè)”這一個詞的真實(shí)含義!個人如此,國家要做到,中國要做到,更難!
二、編程生涯
讀研兩年半的時間,我四處打工,這兩年半我至少在七八家公司做過,編了十幾萬行代碼,為自己賺了一臺電腦,兩部手機(jī)(丟了一部),還有讀研期間的所有費(fèi)用,實(shí)現(xiàn)了我的目標(biāo):沒向家里要一分錢。
我水平不高,但在打工過程中,發(fā)現(xiàn)許多中國軟件公司的水平更菜!
2000年暑假,我參加一個商品軟件的開發(fā),搬到了北大燕北園的一個宿舍,在那兒搞封閉式開發(fā)。在這個項目采用VB6開發(fā),主力程序員除我之處,還有一個華北電力大學(xué)的研究生。大家都沒開發(fā)商品軟件的經(jīng)驗(yàn),沒經(jīng)過正式的設(shè)計,就匆忙編碼了。我曾經(jīng)想采用分層的系統(tǒng)架構(gòu),但遭到另一位程序員的反對,爭吵沒有結(jié)果,老板也不能做決定,結(jié)果各行其是?,F(xiàn)在看起來,那時真是太菜了,任何一本軟件工程書都會指出這種做法是不對的。
我們直接就熱火朝天的干了起來,那位華北電力大學(xué)的老兄,真讓我佩服,他可以在一個sub過程中寫上2000行代碼!我覺得奇怪,為何他能寫這么多的代碼?一看,頓時我暈倒,他居然將每個控件的left, top, width等屬性都用代碼來設(shè)定!想想這樣的程序,調(diào)試時光單步執(zhí)行就需要按多少次F8鍵!
我們在電腦旁邊搭了個行軍床,每天都是干到早上6點(diǎn)才睡,12點(diǎn)吃中飯,然后又是一個通宵。當(dāng)時整個工程只有一個類模塊,被我用于封裝訪問數(shù)據(jù)庫的ADO數(shù)據(jù)引擎,這是整個工程中唯一一處用到了最簡單的面向?qū)ο蠹夹g(shù)的地方。然后,我寫了近十個bas公用模塊,每個模塊代碼規(guī)模都有一兩千行,還有十幾個窗體,每個窗體中都塞滿了事件驅(qū)動的VB代碼,整個軟件應(yīng)該有10萬行代碼,我一個人在此期間至少就寫了3萬多行VB代碼。程序的主處理流程我甚至用ADO與DAO寫了兩套!
現(xiàn)在想起來,我們當(dāng)時根本就不知道面向?qū)ο鬄楹挝?,更不理解許多對軟件開發(fā)至關(guān)重要的理論,就憑著一種熱情。在這段痛苦的開發(fā)經(jīng)歷中,我不僅精熟了VB,而且從中學(xué)到了很多?,F(xiàn)在再開發(fā)同樣功能的東西。我至少可以砍掉2/3的代碼。怎么學(xué)都不如從失敗中學(xué)得多。
后來我總結(jié)VB程序員的三個境界:
(1)所有代碼都只放在窗體文件中的,屬于菜鳥級,他們只會從面板上拖控件,設(shè)置屬性,然后再給事件編碼。
(2)工程中有bas模塊的,屬于中間級,他們已意識到有大量的代碼是重復(fù)出現(xiàn)的,應(yīng)該將其抽取出來作為公用模塊。
(3)工程中有cls模塊的,屬于高手,他們已掌握了面向?qū)ο蟮乃枷?,并能?yīng)用這種思想來解決實(shí)際問題。
正是這次開發(fā)經(jīng)歷,促使我反思:到底如何開發(fā)軟件?我個人可以用VB完成各種各樣的功能,為什么湊在一起就會那么困難?更正一個bug為何那么難?為什么一個看似簡單的軟件,要拖半年的時間還看不到結(jié)束的日子?
九月,研究生要開題,我自擬了個課題:軟件體系結(jié)構(gòu)設(shè)計。我決心弄明白,好軟件到底是怎么做出來的。
我放下了VB,開始研究C++,原來學(xué)過VC,但沒學(xué)會,就直接從C++ Builder入手。Borland公司的VCL類庫讓我大為嘆服,很快就迷上了它,為此連帶學(xué)了Delphi,并參與了一個Delphi項目。給我真正震撼的是《設(shè)計模式》這本書,看了才知道,原來好軟件是這么設(shè)計出來的!在此,我強(qiáng)烈推薦所有有一定編程經(jīng)驗(yàn)的程序員一定要看這本書!
一邊學(xué)習(xí)理論,一邊可沒忘記我沒經(jīng)濟(jì)來源,于是又四處打工,接一些小項目與小模塊來賺些生活費(fèi),國內(nèi)一家橫跨家電與軟件的著名公司是我打工期間去過的最大的公司。但無論什么公司,都給我一種感覺——爛!公司中充滿了對員工的剝削與不尊重,對軟件開發(fā)這一事物的錯誤認(rèn)識,管理混亂。
我沒機(jī)會去外企,技術(shù)水平不到,別人不要我 ?,但我所見到的軟件公司,我敢說沒一家能做出世界一流的軟件!
我上的研究生課程也讓我失望,整個就是本科教育的再版。經(jīng)過高考與考研兩次重大考試,我對考試已是深惡痛絕,但讀研期間仍要考試,而且是閉卷!我就不知道我去背那些條文對我的研究與學(xué)習(xí)有何幫助?2000年7月當(dāng)我考完最后一門,終于大松一口氣,我終于擺脫了考試的壓迫,可以在剩余的一年半中真正搜索我渴望已久的軟件技術(shù)了。這年,我29歲。
悲哀嗎?一個中國的程序員要到29歲才可以真正自由地學(xué)習(xí)想學(xué)的東西!
我開始研究面向?qū)ο罄碚摚戳舜罅康臅?,每天都在?shí)驗(yàn)室學(xué)習(xí)到深夜12點(diǎn),天天上網(wǎng),CSDN成了我最常去的網(wǎng)站。
隨著我對軟件技術(shù)的了解越多,就越深刻地感到國內(nèi)與國外技術(shù)水平的差異是如此的巨大,巨大得甚至有讓人絕望的感覺。同時,在北京這個中國軟件人才最集中的地方,我也見到了許多牛人,一個清華的本科學(xué)生,做程序員可以拿到一個月12000元的工資,一個北大的計算機(jī)系研究生,一畢業(yè)就到外企,一個月一萬多收入,每年發(fā)16個月工資!干了兩年就開了自己的公司。我看到了一個北方交大的本科生作品,在半年的業(yè)余時間里,用Delphi寫了十幾萬行代碼,他甚至在代碼中嵌入?yún)R編,自行編寫數(shù)據(jù)存取引擎讀寫Foxpro,速度超快!軟件中有一個計算公式解析模塊,他用編譯原理理論居然做了一個小型的公式解析器,就象C++編譯器檢查C++程序一樣,不僅可以判斷是否公式正確,而且給出的出錯信息還相當(dāng)準(zhǔn)確!其基本功之扎實(shí),水平之高讓我望塵莫及!中國優(yōu)秀的人才真還是不少的!在精英集聚的北京,面對著博大精深的軟件科學(xué),我深感自身的渺小。
但我畢竟是靠自己奮斗出來的,我并不自卑,這世界需要牛人,同樣需要大批合格的勞動者,我成為不了牛人,但我作一名程序員是合格的。
時間過得飛快,一年半根本就不算時間,馬上就要畢業(yè)了,學(xué)習(xí)的成績?nèi)绾?,要到社會上去競爭了,讓社會考場來決定你是否及格。
三、畢業(yè)求職
98級的研究生是IT業(yè)最后輝煌的回光反照。當(dāng)時,各大公司都發(fā)了瘋似的要人,象華為,當(dāng)時是來者不拒。計算機(jī)專業(yè)的研究生是一搶而光,本科生也供不應(yīng)求。2001年畢業(yè)的我的師兄師姐們,平均每個人手頭都至少有兩三個offer,談的工資沒有低于每月6000的,許多人去了外企,工資在8000~10000每月的也有。真是畢業(yè)生的黃金時間。
但好景不常在,911事件我看來好象成了分水嶺,911之后,整個IT業(yè)急剎車,就業(yè)形勢急轉(zhuǎn)直下,各大公司都在消化去年吃得過飽的胃口,我形容是大家都吃壞了胃,再也不可能有我?guī)熜謳熃銈兊娘L(fēng)光了。雖然時間相隔僅大半年。
從10月開始,11月和12月,我?guī)缀跏窃谡衅笗c公共汽車上渡過的,北京東南西北地去面試,上午在上地,下午可能就要跑到朝陽區(qū),疲于奔命。
在找工作過程中,我良好的心理素質(zhì)與豐富的編程經(jīng)驗(yàn)起到了很大的作用,并沒有遇到很大的困難,就先后有幾家公司表示要我。
其中我想說的有兩家公司。
一家是中國臺灣公司,應(yīng)該說他們做得是不錯的,但我非常反感他們那種自認(rèn)為高于大陸人的那種優(yōu)越感,而且待遇也不高。面試之后,回來感覺很不好。
我想:我們大陸確實(shí)是不如中國臺灣發(fā)達(dá),難怪別人看不起我們,這世界勢利得很,社會如此,國家亦然。但我中華960萬平方公里的國土,13億人口,難道要依靠一個小小的島嶼來撐門面?難道除了中國臺灣公司,我就無處可去了?雖然改變不了什么,但我決定絕不去臺資和日資的公司工作(日本人我更不喜歡,但我認(rèn)為他們做事實(shí)在優(yōu)秀,我們一定要向日本人學(xué)習(xí))!在這種公司呆著,不爽!同時,我們的確也得爭氣些,這世界只尊重強(qiáng)者。
另一家是個很不錯的民族軟件企業(yè),想要我,其老總專門找我去面談了一次,希望我能到他的公司工作。這位老總白手起家,能在五六年的時間內(nèi)由幾個人發(fā)展到300多人,當(dāng)時,是中國這個領(lǐng)域軟件市場占有率最高的公司,我非常佩服,他為人也很好,并表示可以給我每月比其他研究生多加1000元工資,而且希望鍛煉一兩年之后我能夠帶領(lǐng)一個團(tuán)隊來開發(fā)產(chǎn)品,并負(fù)擔(dān)我畢業(yè)所需交納的各種費(fèi)用。在就業(yè)不景氣的2002年,對我一個30歲的技術(shù)水平有限的老程序員如此看重,真叫我感動。雖然我最后還是沒去,但我仍然對這個公司充滿了好感。一個軟件企業(yè)最重要的是什么?是對人的尊重,沒有這點(diǎn),可以斷定,這個公司長不大。
我為什么沒去軟件公司?放棄有可能在幾年之后年薪突破10萬的收入?是因?yàn)槲乙延辛烁胱龅氖?,我想?dāng)老師!
我自己是從自學(xué)的路上走過來的,其中的艱辛歷歷在目,無人指點(diǎn),我走了多少彎路?中國還有多少是象我這樣的年輕人無人指點(diǎn)的?我幸運(yùn)能爬出來了,因?yàn)槲抑辽龠€能有飯吃,比我條件更差的,比如農(nóng)村的孩子,可能就被生活的壓力所淹沒了。我個人的力量很微弱,技術(shù)也有限,但我自認(rèn)為至少是一名合格的程序員,如果能培養(yǎng)出一大批達(dá)到我的水平的學(xué)生,他們畢業(yè)后成為合格的程序員,中國軟件的根基就會更扎實(shí),如果更能有一批遠(yuǎn)遠(yuǎn)超過我水平的學(xué)生出來,中國軟件就有希望了。軟件是什么?軟件以人為本!
人生追求什么?金錢?我很缺錢,但不可能把金錢作為我的目標(biāo),我希望我能夠成為一個對社會有所貢獻(xiàn)的人,能夠獲得心靈的充實(shí),于是,我選擇了留校。
四、對教育的反思與教書生涯
2002年下半年,我參加了北京高校青年教師崗前培訓(xùn)。一位杜教授的兩堂課讓我印象深刻,其中兩句話讓我深深震動:
第一句話:我是一個教書匠,教書匠好啊,好就好在“匠心獨(dú)運(yùn)”!
第二句話:做什么工作都要達(dá)到變魔術(shù)的境界!
是的,作為一名教師,就必須起到一個傳聲筒與放大器的作用,將人類最聰明的人探索世界所得到的知識予以拓寬發(fā)展,以便讓更多的人能夠掌握這些知識并進(jìn)而應(yīng)用于實(shí)踐,從而推動人類的不斷進(jìn)步。
作為一名計算機(jī)專業(yè)的教師,就要努力把先進(jìn)的計算機(jī)技術(shù)以盡可能高的效率傳授給廣大的學(xué)生,引導(dǎo)他們直接面對真實(shí)的軟件世界,而不是向他們硬灌各種各樣的理論知識,強(qiáng)迫他們?nèi)ニ烙浻脖骋詰?yīng)付考試。
我是一個小人物,才低學(xué)淺,但我真的認(rèn)為高校計算機(jī)教育存在嚴(yán)重的問題。我在打工期間的開發(fā)經(jīng)歷,以及閱讀國外相關(guān)資料的時候,發(fā)現(xiàn)學(xué)校中教的和社會上用的差得太遠(yuǎn)!都已經(jīng)是什么時代了,許多大學(xué)還設(shè)立Foxpro課程,難道就不能直接用現(xiàn)代主流的數(shù)據(jù)庫如Oracle,SQL Server,哪怕是Access也好,來講授數(shù)據(jù)庫知識?還有所謂的計算機(jī)等級考試,呵呵,過了三級學(xué)生的我見過不少,但他們真正對軟件,對計算機(jī)又理解多少?
在中國甚至于升職稱也要考計算機(jī),我看了一本職稱計算機(jī)考試教材,里面幾乎原樣照搬計算機(jī)原理課程中的相關(guān)章節(jié),弄得我給搞藝術(shù)的大嫂講了一個小時的二進(jìn)制與八進(jìn)制、十六進(jìn)制的轉(zhuǎn)換方法,她還是弄不太清。我都泄氣了,對啊,他們搞藝術(shù)的,有必要去分清二進(jìn)制的10與十進(jìn)制的2有何分別嗎?他們八輩子也用不上。但是考試用得上,呵呵,又是中國特色。
拿C++來說,我講過C++課,許多的國內(nèi)教材對C++語法下了大功夫,卻對體現(xiàn)了C++精華的STL只字不提,對代碼背后所體現(xiàn)的軟件開發(fā)思想與方法更是視而不見,我用C++也編過不少程序了,說句實(shí)話,我用到的特性不到C++的三分之一!于是就出現(xiàn)了這種怪現(xiàn)象,許多學(xué)生考試可以拿八九十分,給他一個簡單的實(shí)際問題他卻不知如何下手!
還有UML,現(xiàn)在好象很火的樣子,我們讀研時就開了這門課,講句實(shí)話,當(dāng)時這門課我就沒聽懂,可后來我嘗試著用C++用面向?qū)ο蟮姆椒▉砭幊绦?,然后,由代碼倒推回UML類圖,一下子就明白了,原來UML只不過是一種描述面向?qū)ο笙到y(tǒng)的符號罷了,如果學(xué)生沒進(jìn)行過真正的OOP,那就是為了學(xué)UML而學(xué)UML,根本就本末倒置。
還有軟件工程,我的感覺,一個人如果沒寫過一萬行以上的程序,他看軟件工程書就同看政治書差不多,每句都對,呵呵,就不知道為什么對。我完成了那個幾萬行的VB程序之后,再回過頭看看理論,真是句句是真理!每個理論背后都是大量實(shí)踐經(jīng)驗(yàn)的總結(jié)。
回想我做軟件的體會,我發(fā)現(xiàn)所有的知識都是一個完整的體系,根本就無法區(qū)分哪些知識是本科的,哪些知識是研究生課程。于是,一種想法產(chǎn)生了,我主講程序語言類的課程,那我就直接以真實(shí)的軟件開發(fā)過程為主線,實(shí)踐中需要什么我就講什么。講C++,我就拋開了指定的教材,C++我講了STL,我講了OOAD,兩者我都講了用Rose進(jìn)行雙向工程,引導(dǎo)學(xué)生去學(xué)UML,一開始就用UML去描述自己開發(fā)的程序,何必浪費(fèi)大量的時間去學(xué)結(jié)構(gòu)化的編程方法?
我現(xiàn)在簡直成了面向?qū)ο蠹夹g(shù)的布道者,我下學(xué)期即將開設(shè)OOAD基礎(chǔ)選修課,從實(shí)際項目中抽取典型的案例,講UML,講Rose,講設(shè)計模式,講軟件體系結(jié)構(gòu),例子代碼橫跨C++和.NET下的開發(fā)語言(C#和VB.NET),這對于我一個技術(shù)水平有限公司的董事長而言,實(shí)在有點(diǎn)不自量力,我鼻子上才插上幾根蔥,就想裝大象?但我想,如果我能成功地激發(fā)出哪怕1%的學(xué)生的興趣,能引導(dǎo)他們走向我認(rèn)為是正確的方向,能啟發(fā)他們思考,能直接面向真實(shí)的軟件開發(fā)活動而不是學(xué)校的考試,就是我的成績。我現(xiàn)在正在看引進(jìn)的原版書籍——《設(shè)計模式解析》,時時擊節(jié)贊嘆!《設(shè)計模式》經(jīng)典但難懂難用,而《解析》一書的兩位作者既有豐富的從業(yè)經(jīng)驗(yàn),又對OOAD進(jìn)行了深入的思索,真知灼見時時展露于書中,我現(xiàn)在剛看了這本書的80%,基本上可以用一個成語來描述這部書:深入淺出!
要做到深入淺出談何容易!只有同時具備技術(shù)專家與文學(xué)作家素質(zhì)的人才能做到!
反觀我們國內(nèi)的大量教材,還有大量的垃圾論文(包括碩士、博士的,本科的就算了,我看絕大部分根本不能稱之為論文),全都是“淺入深出”,作者自己都未必明白,就東拼西湊,擺出個樣子嚇人。本來完全可以用大白話三言兩語講清楚讓人明白的道理,有人專門要繞一大圈,專挑用高深的數(shù)學(xué)公式來表達(dá),唯恐別人容易理解,顯得他水平不高!呵呵,什么東西一沾上“數(shù)學(xué)”,立馬身價百倍。我就聽過一個北師大的一個在讀博士說過:如果一篇博士論文中沒有一個數(shù)學(xué)公式,根本就不算是博士論文。這句話對不對,大家可以多思索。我數(shù)學(xué)不好,沒資格討論數(shù)學(xué),我的直覺:數(shù)學(xué)是工具,但如果為了發(fā)表論文等目的而故弄玄虛,為數(shù)學(xué)而數(shù)學(xué),是不合道理的。中國的學(xué)術(shù)水平與現(xiàn)狀,大家都心知肚明,不用我廢話了。
現(xiàn)在每年都畢業(yè)大批的計算機(jī)專業(yè)學(xué)生,可其中真正具備扎實(shí)根基的可以很快勝任工作的我看只有5%(95%的學(xué)生不要扁我,不同意就當(dāng)我在說胡話,我很瘦的,一扁就沒了?)。多年以來,我國高校計算機(jī)教育是按照計算機(jī)科學(xué)研究者來培養(yǎng)的,可事實(shí)上,有多少學(xué)生能從事計算機(jī)方面研究的能力?我看應(yīng)分流,80%的學(xué)生按工程師方向來培養(yǎng),20%的學(xué)生按研究者方向來培養(yǎng),而且應(yīng)大幅減少必修課的數(shù)量,計算機(jī)領(lǐng)域太深太廣,樣樣都想教給學(xué)生,反而成了夾生飯,一個想從事硬件設(shè)計的學(xué)生和一個想從事軟件開發(fā)的學(xué)生,能給他們一樣的飯吃嗎?學(xué)校應(yīng)提供各種條件和資源去引導(dǎo)學(xué)生,激發(fā)學(xué)生的創(chuàng)造性與主動探索性,讓他們?nèi)L試,去發(fā)現(xiàn)自己的長處,最終找到最適合自己的發(fā)展方向。不這樣做,中國軟件后繼乏人,沒希望。
五、實(shí)踐第一
2002年下半年,我和一個朋友去了北京郊區(qū)的一家雜志社,看到的情形讓我震驚:在信息產(chǎn)業(yè)最發(fā)達(dá)的北京,這家雜志社還用人工查對雜志訂單和款單,看著那按省來登記的幾大本厚厚的客戶登記本,工作人員需要手工來在其中查找相應(yīng)的信息。這樣的工作效率,這樣的行業(yè)信息化水平!北京如此,全國又如何?
從這件事上,我看到了中國軟件業(yè)的另一方面。一方面我們沒有核心技術(shù),另一方面,已有的技術(shù)又根本沒推廣沒用好。追蹤世界先進(jìn)水平,對于我等這種水平的人來說,確實(shí)勉為其難,但將已有的技術(shù)用于解決實(shí)際問題,卻是我們可以做的。如果中國各行各業(yè)都真正能通過進(jìn)行信息化而提高生產(chǎn)效益,那中國不就從根本上強(qiáng)大起來了嗎(象印度,IT一枝獨(dú)秀,其他行業(yè)沒有起色,我稱之為跛足的國家,絕不能成為世界強(qiáng)國)?在扎實(shí)的社會基礎(chǔ)之上,軟件業(yè)不就有了更大的市場與發(fā)展?jié)摿??中國許多行業(yè)的信息化水平非常低,而且中國地域廣大,發(fā)展非常不平衡,有些地方信息化水平甚至為0!努力推動行業(yè)信息化,是我們這一代軟件開發(fā)者的責(zé)任!而追趕國外先進(jìn)水平,恐怕就不是一代兩代程序員可以達(dá)到目標(biāo)的,需要長期的努力。作為一名軟件開發(fā)者,只能腳踏實(shí)地,哪怕你只做一個小小的MIS產(chǎn)品,也要盡力把它做好來。
于是,我開始了期刊發(fā)行系統(tǒng)的開發(fā),這完全是自發(fā)的,沒有任何資金投入,只有一種熱情在支撐。我開始選擇C++ Builder開發(fā),做了幾個月,完成了第一個版本,但我發(fā)現(xiàn),我找不到足夠水平的C++程序員進(jìn)行合作開發(fā),而且整個一個exe文件,在體系結(jié)構(gòu)設(shè)計上雖采用了分層分塊的設(shè)計方案,但卻是源代碼級別的,要拆分成COM組件難度太大,不是一個人能完成的,于是中途流產(chǎn)。
2003年3月,我開始系統(tǒng)地學(xué)習(xí).NET,我吃驚地發(fā)現(xiàn),我原來想在C++中實(shí)現(xiàn)的許多功能,比如對象串行化為XML,在.NET中已有現(xiàn)成的類可用,.NET更把OO的功用發(fā)揮到了極致,它的混合語言開發(fā),它的反射機(jī)制,它的新的自識別的軟件組件,以及強(qiáng)大好用的開發(fā)環(huán)境Visual Studio,都讓我驚嘆微軟對開發(fā)者遇到的困難的深入把握,相比用C++開發(fā),至少可以提高1/3的開發(fā)效率。于是一個新的想法產(chǎn)生了,我要把以前的產(chǎn)品用.NET重寫,利用.NET強(qiáng)大的組件模型,將設(shè)計模式理論推廣應(yīng)用到組件級別,通過XML和反射機(jī)制建立一套可動態(tài)裝配的軟件生產(chǎn)流水線,實(shí)現(xiàn)象Dell直銷PC那樣的軟件動態(tài)裝配直銷。只要建立好靈活可不斷重構(gòu)的系統(tǒng)架構(gòu),配以對業(yè)務(wù)領(lǐng)域的深入分析,逐步建立功能強(qiáng)大的業(yè)務(wù)組件倉庫,就可以實(shí)現(xiàn)軟件系統(tǒng)的動態(tài)裝配。說干就干,我用VB.NET重寫了原先用C++編寫的系統(tǒng),將原先的一個exe變?yōu)槭畮讉€dll,而且這些dll還會隨著發(fā)展而不斷地分裂,也有可能重新組合,利用refractoring(重構(gòu))不斷進(jìn)化,最終形成一整套完備的行業(yè)軟件組件庫。做軟件關(guān)鍵因素是變化,只有適應(yīng)變化的系統(tǒng)才是有生命力的。
我用兩個月的時間大體上弄清了.NET平臺下的主要類庫,然后又用兩個月的時間再次重新實(shí)現(xiàn)了期刊發(fā)行系統(tǒng)的C++版本的全部功能,到8月份我寫這篇文章之時,第一個產(chǎn)品里程碑已經(jīng)完成。同樣的,除了需求是由另一個合作者去搜集的之外,幾乎又是全部由我一個人包攬了所有的系統(tǒng)設(shè)計及編碼工作!
毫無疑問,我自覺得新系統(tǒng)要比老系統(tǒng)可維護(hù)性強(qiáng)得多,真正實(shí)現(xiàn)了徹底的全組件化系統(tǒng)開發(fā),計劃再有一個月的界面美化,改正bug,引用多線程提高運(yùn)行效率,優(yōu)化系統(tǒng)結(jié)構(gòu),就可以提供給用戶試用了。市場如何,難說難測。
在開發(fā)過程中,我再次感到巨大的挑戰(zhàn),不光是技術(shù)上的,更是管理上的。人才是我最頭痛的問題,沒有一流的人才,哪來一流的產(chǎn)品?我們找不到足夠水平的程序員一起合作(牛人哪屑于做這樣一個小兒科的產(chǎn)品?)我們要走的路還很長。也許我們開發(fā)的產(chǎn)品是失敗的,但我從來就沒指望能用這賺錢,我只是盡一個軟件開發(fā)者的責(zé)任而己,成敗已不重要!人生不嘗試,怎能體現(xiàn)人活著的價值?
剛好我編的程序告一段落。于是就crazy地敲鍵盤,一鼓作氣地把下篇寫完了。心中有好多話一次就說個痛快。
看得越多,想得越多,我就越困惑,人啊,你活著到底是為了什么?又整天忙忙碌碌地追求些什么?我這十年,……我都不知道怎么說了!
大家自己看吧!
結(jié)束語 永無止境的軟件之路
一、辛酸與苦辣
做軟件開發(fā)很苦的,技術(shù)進(jìn)步如此神速,每個軟件開發(fā)者都得不斷地學(xué)習(xí)以跟上發(fā)展的步伐。有時我常想,何苦呢?我現(xiàn)在在大學(xué)中混,怎么樣不能混下去?為什么要做這些吃力不討好的事?我投了十年的時間去學(xué)習(xí)電腦,卻最終發(fā)現(xiàn)自己不過中人之資,離頂峰遠(yuǎn)之又遠(yuǎn)。古語云:三十而立。我今年32了,仍是孤身一人,看看周圍的同學(xué),他們的小孩都差不多上小學(xué)了!許多都有了自己的房子和車子,而我到現(xiàn)在才開始申報中級職稱,還擠在集體宿舍中,望著北京高昂的房價而嘆息?,F(xiàn)在社會越來越功利了,看著象我這樣的窮光蛋,看著由于長期面對電腦缺少鍛煉而瘦弱的身軀,又有哪個女孩愿意嫁過來受苦?
軟件人的生活很苦,壓力很大,我認(rèn)為是拿青春賭明天。就是在這種惡劣的開發(fā)環(huán)境中,還有許多業(yè)外人士指手劃腳說程序員如何如何,還有太多的公司只顧壓榨程序員的勞動,缺乏對程序員基本的尊重,怎不叫人寒心?
“三十而衰”,這句本不應(yīng)該流行的話居然成了中國軟件人員的流行語。中國程序員的悲哀!
二、無止境的追求
人類已進(jìn)入信息時代,計算機(jī)技術(shù)幾乎每隔半年就有一次大的變化,我現(xiàn)在又面臨著這樣的抉擇:今后的路如何走?
北大的教師聘任制度的改革一石激起千層浪,說明了中國高校的改革勢在必行。我是歡迎這種變化的,雖然到時我可能會下崗。但人生中總會遇到各種各樣的挑戰(zhàn),只要你不倒下爬不起來,就有希望。
我想我必須再次讓自己有個提升,要從小事做起,但做小事則絕不能成為最終的目標(biāo),也許,不遠(yuǎn)的將來,我會走出國門,到世界軟件技術(shù)最發(fā)達(dá)的地區(qū)去汲取豐富的養(yǎng)份。今后的路怎么走,我還在摸索之中。
三、人生無悔
人生年華如水,時光無情。在過去的歲月中,我盡了自己的力,回顧往事,我可以說:過去的事只有遺憾,卻沒有后悔。如果給我再一次選擇職業(yè)的機(jī)會,我還會再次選擇軟件!
再過10年,到2013年的時候,我也許會再次寫一篇人生的十年回顧,到那時中國的軟件會如何?中國軟件的明天靠你我這些普通人去扎扎實(shí)實(shí)地去工作來支撐!少發(fā)些牢騷,多做些實(shí)事,中國軟件才會有光輝的明天。你我共勉!
一個老程序員的心理話
完成于 2003-8-3 北京
2003-8-3中午14:33,在我的彈指神功之下,我寫完了這近兩三萬字的個人自訴。一點(diǎn)也不累,回想過去的種種感觸,仍然身在其中。
樓上一位兄弟說想看我的愛情故事,但人生不是小說,沒有什么浪漫的,我只能讓你失望了,我是孤單地在人生之路上走著,我就是這樣的一個帶著點(diǎn)悲劇色彩的人。
如果有人能有這上中下三篇文章耐心看完,我會謝謝你。如果有人能指點(diǎn)我,我感激你。
好了,我去休息了,生活是一天天過的,不是嗎?
第五篇:怎樣學(xué)好PLC編程范文
怎樣學(xué)好PLC編程
看到很多網(wǎng)友問學(xué)習(xí)PLC的方法, 現(xiàn)將我個人學(xué)習(xí)PLC的心得總結(jié)如下,大家有更好的方法請補(bǔ)充:
1.有一定的電工基礎(chǔ)-----掌握傳感器、接近開關(guān)、編馬器、氣動元件等常用器件的使用及繼電器控制原理。
2.再學(xué)數(shù)制及數(shù)制轉(zhuǎn)換-----掌握二進(jìn)制、八進(jìn)制、十六進(jìn)制、BCD碼、ASCI碼的概念。
3.選擇你所在地區(qū)流型的PLC品牌做為學(xué)習(xí)的機(jī)種.---------學(xué)會后可以更好的與實(shí)際工作對接。
4.買臺手提電腦(配制不低于PIII ,512M內(nèi)存,硬盤40G,帶串口)----必備學(xué)習(xí)及外出干活的工具。
5.學(xué)會電腦的基本操作,如開機(jī)關(guān)機(jī)、文件保存以及WORD、EXCEL辦公軟件的基本應(yīng)用(電腦使用者必會);常用軟件的安裝與卸載(如編程軟件的安裝和卸載);打字(用于程序起名及加注釋)。
6.尋找編程軟件及仿真軟件、教學(xué)軟件(當(dāng)然還要學(xué)會使用它們)。-----必備學(xué)習(xí)用具。
7.買相關(guān)書及視頻教材。-----學(xué)習(xí)資料。
8.找齊該P(yáng)LC的編程手冊、使用手冊、使用案例,可從網(wǎng)上收集或參加產(chǎn)品推廣會獲得。----工作中肯定會用到的資料.9.以上準(zhǔn)備好后,您可以自學(xué)PLC了,一般來說PLC梯形圖的基本指令好學(xué),其邏輯關(guān)系與繼電器控制原理圖相通。但功能
指令就難很多了。
10.最好是到有實(shí)力口碑好的學(xué)校培訓(xùn).-----比起自學(xué)可縮短學(xué)習(xí)時間,學(xué)得更系統(tǒng),還可多交恩師、學(xué)友以利于今后發(fā)展。
11.用一切辦法多結(jié)識周圍的同行、PLC廠家、代理商,以便于得到他們的幫助及有用的信息。
12.堅持學(xué)習(xí),多與同行交流,多動手實(shí)踐.-----編程是理論與技能高度結(jié)合的,應(yīng)多看書多實(shí)踐才能提高編程技術(shù)。
13.當(dāng)外出包工程時,還要準(zhǔn)備該類型PLC程序解密軟件------因?yàn)橛袝r你會忘記自己程序中已加的密碼,還有時是別人加密的程序,客戶要你J將它再優(yōu)化、增加新功能、修改參數(shù)、將原來定時停機(jī)的程序刪除。這也是很多人找解碼軟件的原因。
如想學(xué)三菱PLC的網(wǎng)友,請看本站的相關(guān)文稿,愿對你有幫助.