1個老程序員的心得;[size=4]不知不覺做軟件已經(jīng)做了十年,有成;1.扎實的基礎(chǔ);2.豐富的想象力;3.最簡單的是最好的;4.不鉆牛角尖;5.對答案的渴求;6.多與別人交流;7.良好的編程風(fēng)格;8.韌性和毅力;這些是我這幾年程序員生涯的一點體會,希望能夠給大;做了快三年的程序員了,有一點小體會和大家分享一下;1.好鋼是由鐵煉成的.;一名好的程序員必須經(jīng)過
1個老程序員的心得
[size=4]不知不覺做軟件已經(jīng)做了十年,有成功的喜悅,也有失敗的痛苦,但總不敢稱自己是高手,因為和我心目中真正的高手們比起來,還差的太遠(yuǎn)。世界上并沒有成為高手的捷徑,但一些基本原則是可以遵循的。
1. 扎實的基礎(chǔ)。數(shù)據(jù)結(jié)構(gòu)、離散數(shù)學(xué)、編譯原理,這些是所有計算機科學(xué)的基礎(chǔ),如果不掌握他們,很難寫出高水平的程序。據(jù)我的觀察,學(xué)計算機專業(yè)的人比學(xué)其他專業(yè)的人更能寫出高質(zhì)量的軟件。程序人人都會寫,但當(dāng)你發(fā)現(xiàn)寫到一定程度很難再提高的時候,就應(yīng)該想想是不是要回過頭來學(xué)學(xué)這些最基本的理論。不要一開始就去學(xué)OOP,即使你再精通OOP,遇到一些基本算法的時候可能也會束手無策。
2. 豐富的想象力。不要拘泥于固定的思維方式,遇到問題的時候要多想幾種解決問題的方案,試試別人從沒想過的方法。豐富的想象力是建立在豐富的知識的基礎(chǔ)上,除計算機以外,多涉獵其他的學(xué)科,比如天文、物理、數(shù)學(xué)等等。另外,多看科幻電影也是一個很好的途徑。
3. 最簡單的是最好的。這也許是所有科學(xué)都遵循的一條準(zhǔn)則,如此復(fù)雜的質(zhì)能互換原理在愛因斯坦眼里不過是一個簡單得不能再簡單的公式:E=mc2。簡單的方法更容易被人理解,更容易實現(xiàn),也更容易維護。遇到問題時要優(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í)慣,代碼的縮進編排,變量的命名規(guī)則要始終保持一致。大家都知道如何排除代碼中錯誤,卻往往忽視了對注釋的排錯。注釋是程序的一個重要組成部分,它可以使你的代碼更容易理解,而如果代碼已經(jīng)清楚地表達(dá)了你的思想,就不必再加注釋了,如果注釋和代碼不一致,那就更加糟糕。
8. 韌性和毅力。這也許是"高手"和一般程序員最大的區(qū)別。A good programming is 99% sweat and 1% coffee。高手們并不是天才,他們是在無數(shù)個日日夜夜中磨練出來的。成功能給我們帶來無比的喜悅,但過程卻是無比的枯燥乏味。你不妨做個測試,找個10000以內(nèi)的素數(shù)表,把它們?nèi)汲聛恚缓笤贆z查三遍,如果能夠不間斷地完成這一工作,你就可以滿足這一條。
這些是我這幾年程序員生涯的一點體會,希望能夠給大家有所幫助
做了快三年的程序員了,有一點小體會和大家分享一下.
1.好鋼是由鐵煉成的.
一名好的程序員必須經(jīng)過千錘百煉才行, 挫折是程序員最大的寶,要能承受挫折,戰(zhàn)勝挫折,只有不斷經(jīng)受挫折,從挫折中吸取經(jīng)驗,教訓(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.敢想敢做,持之以恒,一切皆有可能!
一點薄思庸見送給賽迪網(wǎng)java版的初學(xué)者們,僅代表本人個人意見,如有任何各位大蝦有好的方法或意見可以跟帖提出.
java開發(fā)八榮八恥
以動手實踐為榮,以只看不練為恥。
以打印日志為榮,以出錯不報為恥。
以局部變量為榮,以全局變量為恥。
以單元測試為榮,以手工測試為恥。
以代碼重用為榮,以復(fù)制粘貼為恥。
以多態(tài)應(yīng)用為榮,以分支判斷為恥。
以定義常量為榮,以魔法數(shù)字為恥。
以總結(jié)思考為榮,以不求甚解為恥。
從大學(xué)開始到現(xiàn)在, 學(xué)習(xí)編程已經(jīng)四年了,在過去的四年里學(xué)了不少的東西,總感覺自已還行吧。怎么著也能找個好的工作。加上在學(xué)校表現(xiàn)良好,大專一畢業(yè)就順利應(yīng)聘上一個政府機構(gòu)的工作。雖然工資不算多,但也穩(wěn)定。
但總覺得自己有點屈才.一天,見到本市的一家知名軟件企業(yè)的招聘信息,就把自己從大學(xué)三年到現(xiàn)在寫過的一些東西簡單地寫了一份求職信過去(不是想跳槽,只是想測試一下我現(xiàn)在這份工作丟了,在社會上我能夠達(dá)到什么程度)。
沒想到,第二天,那家公司就叫我過去應(yīng)聘了。感覺很突然,總覺得一些軟件公司在人才網(wǎng)站上打一些招聘信息總是借此做大做廣告,并不是想招聘人,就是要招聘人,可能因為這種因素的機率都很小吧。(這是我一直以來對人才網(wǎng)站上某些軟件公司的招聘信息的看法),
不過卻增加了幾分信心,于是我便興沖沖的去了。
到了公司,首先就讓我填寫一張表格,填寫完一張表格以后安排一個技術(shù)主管過來與我談,談的倒不是一些深入的技術(shù)問題,我基本上的都能應(yīng)上來。接著就是上機測試。測試的題目是寫一個人員信息的插入、修改、顯示。主考官說只需要寫一個功能就是,只是希望看看我的編程風(fēng)格。于是我把數(shù)據(jù)操作寫了一個類,然后在按鈕的事件里得到輸入框值,組合一個SQL,傳到數(shù)據(jù)操作類里面去執(zhí)行,然后返回插入結(jié)果就可以了。完了,很快搞定。馬上叫主考官過來看吧。呵呵,小意思。
主考官過來了,首先就在姓名的地方輸入好長的一串字符串,接著一陣亂輸,完了,出問題。名字太長了,郵件沒有限制,身份證沒有限制,生日沒有限制,完了,完了,我想,這么點東西,就出問題了,我心里好一陣緊張。還好就是主考官的態(tài)度還不錯,說:“雖然你做了足夠的注釋,縮近也注意了,但是卻沒有對輸入的值進行判斷,我們這為合理的判斷也是好的編程風(fēng)格,再者,你雖然把數(shù)據(jù)操作寫成了類,但也有很多的改進,一是。。。二是。。。”說完以后還鼓勵我接著寫剛才的代碼。當(dāng)時真是很是感動,但感動歸感動,說老實話,這些判斷平時還真的沒有寫過多少,都是寫一個以后,COPY過去COPY過來的用,現(xiàn)在一時還覺得有些短路,不知道如何是好,然后,就是按鈕的事件中寫對數(shù)值的判斷。終于完成了,再看看表,時間距剛開始測試已經(jīng)快一個小時了。
主考官過來看了,覺得功能都實現(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)驗,總結(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é)問題。
五,加強交流,多寫文章,多發(fā)源碼,多收取意見,在交流學(xué)習(xí)并提高,才能更快了解自已的不足。
六, 永遠(yuǎn)相信下一個作品是最好的....
業(yè)余程序員最喜歡做的一件事就是對不同的語言進行比較。Java是否比C++好?C#是否會成為終極語言?凡此種種。從專業(yè)程序員的角度看來,這是最低級無趣的游戲。
其一,在項目諸元確定之后,通常并沒有選擇語言的余地;其二,語言的生存本身就是一個達(dá)爾文主義的問題:設(shè)若兩種語言有明確的可比較性,其中較劣的那一種必定早已被淘汰出局,又何來比較的必要?所以,有“C++之父”美稱的Bjarne Stroustrup博士常常聲明自己不會拿C++與其他語言比較——偏偏每次接受采訪時,必定有外行的記者或聽眾提出這一類最令他反感的問題,這是題外話,按下不表。
丟開實用主義的觀點,從美學(xué)(或者說,計算機科學(xué))的角度來看,語言的比較似乎并不像它通常所表現(xiàn)的那么低級。畢竟,既然維特根斯坦反復(fù)強調(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ù)的選取完全只是為論點服務(wù)。也正因為此,這本《對象揭秘》足以讓絕大多數(shù)的語言比較者感到羞赧,因為在同樣的批評套路上,Joyner探索的深度和廣度令他們望塵莫及。譬如說,任何一個負(fù)責(zé)的語言比較者都必然會提到“繼承和類型系統(tǒng)”這一話題,但Joyner卻把這個話題寫成了長達(dá)63頁的一章(第5章,“類型擴展:繼承與虛擬”),并在后面的章節(jié)(第9章,“類型轉(zhuǎn)換”)中繼續(xù)討論相關(guān)的問題。拋開篇幅不談,單是Joyner習(xí)以為常的文法解讀、Lamda演算法和簽名變化理論,就足以使不夠水準(zhǔn)的批評者自慚形穢了。
因此,在我看來,這本《對象揭秘》完全有理由成為所有語言比較者的必讀書目——也許說“入門書目”會更準(zhǔn)確一些?因為你能想到的任何一條批評,Ian Joyner很可能早已做了鞭辟入里的闡述。如果在細(xì)讀《對象揭秘》之前妄自作評,結(jié)果很可能是貽笑大方。另一方面,在批評的方法上,Joyner為后來者作出了表率:簡單的反對與謾罵毫無意義,用錢鐘書的話來說,“反其道以行也是一種模仿”;只有拿出充足的論據(jù),再拿出合理的解決方案,才稱得上一個高明的批評者。當(dāng)然,這樣的“入門書目”也許讓門檻顯得太高了一點。但對
于“Java和C++誰更好”這樣一個通常只會令人感到莫名煩躁的話題,門檻總是不厭其高的。
像我一樣的Java人常常會抱怨“Java的經(jīng)典書籍太少了”。C++的經(jīng)典好書總是層出不窮,實在令人艷羨——當(dāng)然真正擁有這些書的人也同時擁有不少的煩惱,我就有最深切的體會。在這本《對象揭秘》中,IanJoyner順便也半開玩笑地揭開了這個秘密。也許,這句半開玩笑的話會成為Java人喜愛這本書的另一個理由:
“??學(xué)習(xí)C++要花那么長時間??,要比Eiffel和Java都長得多。花那么長時間還未必掌握編程或者面向?qū)ο笤O(shè)計技術(shù)。這也是為什么關(guān)于C++的書籍那么多而Eiffel和Java不需要那么多書的原因。”
我是初中時接觸編程的。那時父親廠里買了一臺微電腦,而我父親,當(dāng)時正好可以接觸到這臺微機,于是,頗具戰(zhàn)略眼光的父親便開始幫我尋找各種書籍資料,讓我學(xué)起了計算機。
第一眼看到它,我就被吸引住了。那是在當(dāng)時也很差的一種名叫“R1”的微機,可是顏色實在漂亮,典雅的奶黃色,配著深綠的按鍵,按下不同的鍵還有不同音調(diào)的悅耳的聲音。跟當(dāng)時風(fēng)行的大多數(shù)八位微電腦一樣,整個機身實際就是一個鍵盤,比現(xiàn)在PC機通常的鍵盤還要小,顯示器就用電視機。當(dāng)我第一次把從書上抄下來的寥寥幾句的一個Basic程序從嘀嘀作響的鍵盤上敲入,最后再打進了“RUN”,而屏幕上忠實地顯示出了結(jié)果后,我就不可救藥地迷上了編程。父親的廠離家有五公里,每個星期天我都要自己一個人步行五公里,把一個星期里自己寫下的一大堆Basic程序拿來調(diào)試,當(dāng)然一大半都被它冷酷的拒絕了,所以每次有一個程序通過了,我都會興奮的叫起來。那時我的體力不好,五公里走下來,相當(dāng)累,還經(jīng)常小腿抽筋,可是一坐到電腦前,聽見打開時“嘀”的提示音,一切的痛和累都消失了。
漸漸地我的程序通過率越來越高了,程序的規(guī)模也在增長。但是,那臺外表可愛的電腦卻開始不堪重負(fù)了,運行速度本來就慢,又加上效率低下的解釋性Basic語言,讓我實在不可忍受。于是,父親又到新華書店為我訂下了一本《Z80匯編語言》的書。書一到,我就捧起這部大塊頭的書,開始用我初中的程度一點點地啃。邊啃邊實驗,終于掌握了Z80匯編語言,又在電腦不具備輸入?yún)R編語言能力的情況下,手工翻譯成機器語言,再通過Basic語言中的Poke語句把二進制代碼輸入內(nèi)存,然后用Basic程序調(diào)用。在不懈的努力下,終于成功地做出了一個匯編語言的動畫程序!在這次成功之后,我就開始相信,只要肯鉆研,沒有學(xué)不會的技術(shù),沒有克服不了的難題。
初中畢業(yè)后,我以全縣第一的成績進入了一所附近城市的省重點中學(xué),從此我的眼界開始逐漸拓寬了,以后,我用到的電腦越來越高級,從高檔八位機蘋果電腦,到今天主頻以G計,內(nèi)存以M計的奔四電腦,當(dāng)年那臺主頻內(nèi)存都只能以K計的八位機已是進了歷史博物館。但是這臺引領(lǐng)我進入編程領(lǐng)域,并且更驅(qū)使我深入鉆研匯編語言的電腦,將是我記憶中最珍貴的收藏之一。
在重點中學(xué),學(xué)業(yè)的壓力是很重的,又是住校獨立生活,對于體力已較大程度下降、行
三億文庫3y.uu456.com包含各類專業(yè)文獻(xiàn)、專業(yè)論文、中學(xué)教育、行業(yè)資料、高等教育、幼兒教育、小學(xué)教育、51一個老程序員的心得等內(nèi)容。
1234 下載地址:51一個老程序員的心得.Doc【】
最新搜索
一個老程序員的心得Using integral transforms to e西南政法大學(xué)學(xué)生會五柳先生傳(超全)“四有”新風(fēng)尚——個人師德總結(jié)最新外研版 小學(xué)英語三年級下學(xué)期 導(dǎo)學(xué)案琴女小動物飼養(yǎng)日記恩施華龍總醫(yī)院江蘇省蘇州市2014–2015學(xué)年第二學(xué)期期末模擬卷(2)七人事主管任職要求及崗位職責(zé)