1個老程序員的心得;[size=4]不知不覺做軟件已經做了十年,有成;1.扎實的基礎;2.豐富的想象力;3.最簡單的是最好的;4.不鉆牛角尖;5.對答案的渴求;6.多與別人交流;7.良好的編程風格;8.韌性和毅力;這些是我這幾年程序員生涯的一點體會,希望能夠給大;做了快三年的程序員了,有一點小體會和大家分享一下;1.好鋼是由鐵煉成的.;一名好的程序員必須經過
1個老程序員的心得
[size=4]不知不覺做軟件已經做了十年,有成功的喜悅,也有失敗的痛苦,但總不敢稱自己是高手,因為和我心目中真正的高手們比起來,還差的太遠。世界上并沒有成為高手的捷徑,但一些基本原則是可以遵循的。
1. 扎實的基礎。數據結構、離散數學、編譯原理,這些是所有計算機科學的基礎,如果不掌握他們,很難寫出高水平的程序。據我的觀察,學計算機專業的人比學其他專業的人更能寫出高質量的軟件。程序人人都會寫,但當你發現寫到一定程度很難再提高的時候,就應該想想是不是要回過頭來學學這些最基本的理論。不要一開始就去學OOP,即使你再精通OOP,遇到一些基本算法的時候可能也會束手無策。
2. 豐富的想象力。不要拘泥于固定的思維方式,遇到問題的時候要多想幾種解決問題的方案,試試別人從沒想過的方法。豐富的想象力是建立在豐富的知識的基礎上,除計算機以外,多涉獵其他的學科,比如天文、物理、數學等等。另外,多看科幻電影也是一個很好的途徑。
3. 最簡單的是最好的。這也許是所有科學都遵循的一條準則,如此復雜的質能互換原理在愛因斯坦眼里不過是一個簡單得不能再簡單的公式:E=mc2。簡單的方法更容易被人理解,更容易實現,也更容易維護。遇到問題時要優先考慮最簡單的方案,只有簡單方案不能滿足要求時再考慮復雜的方案。
4. 不鉆牛角尖。當你遇到障礙的時候,不妨暫時遠離電腦,看看窗外的風景,聽聽輕音樂,和朋友聊聊天。當我遇到難題的時候會去玩游戲,而且是那種極暴力的打斗類游戲,當負責游戲的那部分大腦細胞極度亢奮的時候,負責編程的那部分大腦細胞就得到了充分的休息。當重新開始工作的時候,我會發現那些難題現在竟然可以迎刃而解。
5. 對答案的渴求。人類自然科學的發展史就是一個渴求得到答案的過程,即使只能知道答案的一小部分也值得我們去付出。只要你堅定信念,一定要找到問題的答案,你才會付出精力去探索,即使最后沒有得到答案,在過程中你也會學到很多東西。
6. 多與別人交流。三人行必有我師,也許在一次和別人不經意的談話中,就可以迸出靈感的火花。多上上網,看看別人對同一問題的看法,會給你很大的啟發。
7. 良好的編程風格。注意養成良好的習慣,代碼的縮進編排,變量的命名規則要始終保持一致。大家都知道如何排除代碼中錯誤,卻往往忽視了對注釋的排錯。注釋是程序的一個重要組成部分,它可以使你的代碼更容易理解,而如果代碼已經清楚地表達了你的思想,就不必再加注釋了,如果注釋和代碼不一致,那就更加糟糕。
8. 韌性和毅力。這也許是"高手"和一般程序員最大的區別。A good programming is 99% sweat and 1% coffee。高手們并不是天才,他們是在無數個日日夜夜中磨練出來的。成功能給我們帶來無比的喜悅,但過程卻是無比的枯燥乏味。你不妨做個測試,找個10000以內的素數表,把它們全都抄下來,然后再檢查三遍,如果能夠不間斷地完成這一工作,你就可以滿足這一條。
這些是我這幾年程序員生涯的一點體會,希望能夠給大家有所幫助
做了快三年的程序員了,有一點小體會和大家分享一下.
1.好鋼是由鐵煉成的.
一名好的程序員必須經過千錘百煉才行, 挫折是程序員最大的寶,要能承受挫折,戰勝挫折,只有不斷經受挫折,從挫折中吸取經驗,教訓,這樣你才能成為真正的程序員.
2.手是好漢,眼是懶漢.看會不是目的,要會寫,勤動手,熟練書寫各種常用代碼,在學習之初 可以不借助IDE來書寫代碼,反復練習,熟能成巧,毋庸置疑.
3.穩中求勝,小心使得萬年船.程序員最忌諱毛躁.代碼多,項目大的時候,錯誤是在所難免的,但低級錯誤一定不能犯,盡量把錯誤壓到最低,這就要求我們程序員養成穩重,多思維的方式,切忌浮躁,養成良好的書寫習慣和正確的思維方式.
4.做就做程序員,不要做高級打字員.
每個程序員都是從基礎學起的,在學的時候一定要把握好方向不要被眾多的語言,概念所迷惑,學的是語言,學的是編程思想不要在IDE上下功夫,研究哪個好,哪個壞,要敢于創新,程序是死的人是活的,在活人手里,也要讓程序活起來.多學多看數據結構等書多看別人的成型代碼,學習別人的思想,使自己成為真正的程序員.
5.敢想敢做,持之以恒,一切皆有可能!
一點薄思庸見送給賽迪網java版的初學者們,僅代表本人個人意見,如有任何各位大蝦有好的方法或意見可以跟帖提出.
java開發八榮八恥
以動手實踐為榮,以只看不練為恥。
以打印日志為榮,以出錯不報為恥。
以局部變量為榮,以全局變量為恥。
以單元測試為榮,以手工測試為恥。
以代碼重用為榮,以復制粘貼為恥。
以多態應用為榮,以分支判斷為恥。
以定義常量為榮,以魔法數字為恥。
以總結思考為榮,以不求甚解為恥。
從大學開始到現在, 學習編程已經四年了,在過去的四年里學了不少的東西,總感覺自已還行吧。怎么著也能找個好的工作。加上在學校表現良好,大專一畢業就順利應聘上一個政府機構的工作。雖然工資不算多,但也穩定。
但總覺得自己有點屈才.一天,見到本市的一家知名軟件企業的招聘信息,就把自己從大學三年到現在寫過的一些東西簡單地寫了一份求職信過去(不是想跳槽,只是想測試一下我現在這份工作丟了,在社會上我能夠達到什么程度)。
沒想到,第二天,那家公司就叫我過去應聘了。感覺很突然,總覺得一些軟件公司在人才網站上打一些招聘信息總是借此做大做廣告,并不是想招聘人,就是要招聘人,可能因為這種因素的機率都很小吧。(這是我一直以來對人才網站上某些軟件公司的招聘信息的看法),
不過卻增加了幾分信心,于是我便興沖沖的去了。
到了公司,首先就讓我填寫一張表格,填寫完一張表格以后安排一個技術主管過來與我談,談的倒不是一些深入的技術問題,我基本上的都能應上來。接著就是上機測試。測試的題目是寫一個人員信息的插入、修改、顯示。主考官說只需要寫一個功能就是,只是希望看看我的編程風格。于是我把數據操作寫了一個類,然后在按鈕的事件里得到輸入框值,組合一個SQL,傳到數據操作類里面去執行,然后返回插入結果就可以了。完了,很快搞定。馬上叫主考官過來看吧。呵呵,小意思。
主考官過來了,首先就在姓名的地方輸入好長的一串字符串,接著一陣亂輸,完了,出問題。名字太長了,郵件沒有限制,身份證沒有限制,生日沒有限制,完了,完了,我想,這么點東西,就出問題了,我心里好一陣緊張。還好就是主考官的態度還不錯,說:“雖然你做了足夠的注釋,縮近也注意了,但是卻沒有對輸入的值進行判斷,我們這為合理的判斷也是好的編程風格,再者,你雖然把數據操作寫成了類,但也有很多的改進,一是。。。二是。。?!闭f完以后還鼓勵我接著寫剛才的代碼。當時真是很是感動,但感動歸感動,說老實話,這些判斷平時還真的沒有寫過多少,都是寫一個以后,COPY過去COPY過來的用,現在一時還覺得有些短路,不知道如何是好,然后,就是按鈕的事件中寫對數值的判斷。終于完成了,再看看表,時間距剛開始測試已經快一個小時了。
主考官過來看了,覺得功能都實現了,就叫了公司的一個副經理(后來才知道的)來繼續面試我。這個副總就到我到另外的一個會議室去,問了我一些技術概念的問題,結果我基本上都答不過來(我以前覺得我能夠用就夠了啥,沒有太大的必有對這寫概念的條款記得這么清楚啥),結果,那位副經理訓斥了我一下,說:“你對這些概念都不清楚,怎么了解其間的性能呢,不了解性能如何開發高效率的程序呢?”(整個談話這句最讓我滿意,其他的都是"我們是專業的軟件公司,很注重軟件的性能,編程風格等等如事云云"),最后問了我的薪水要求和能不能適應公司的開發等就叫我回家去等消息。
當然,由于后面沒有過關當然也沒有應聘得上。更當然,我吸取了這次應聘的經驗,總結以下幾條來做為以后學習的信條,寫出來與大家共勉:
一,學習應該從基礎抓起,注意學習的每個細節,爭取學精,避免為了開發而開發。
二,在以一門語言為主功語言的同時,要學習一下與之相關的其它技術。
三,長常保持對新技術的關注,了解未來發展的方向,做到有的放矢。
四,多參與項目開發,在項目中發現問題,解決問題,才能更好的了解學習中的細節問題。
五,加強交流,多寫文章,多發源碼,多收取意見,在交流學習并提高,才能更快了解自已的不足。
六, 永遠相信下一個作品是最好的....
業余程序員最喜歡做的一件事就是對不同的語言進行比較。Java是否比C++好?C#是否會成為終極語言?凡此種種。從專業程序員的角度看來,這是最低級無趣的游戲。
其一,在項目諸元確定之后,通常并沒有選擇語言的余地;其二,語言的生存本身就是一個達爾文主義的問題:設若兩種語言有明確的可比較性,其中較劣的那一種必定早已被淘汰出局,又何來比較的必要?所以,有“C++之父”美稱的Bjarne Stroustrup博士常常聲明自己不會拿C++與其他語言比較——偏偏每次接受采訪時,必定有外行的記者或聽眾提出這一類最令他反感的問題,這是題外話,按下不表。
丟開實用主義的觀點,從美學(或者說,計算機科學)的角度來看,語言的比較似乎并不像它通常所表現的那么低級。畢竟,既然維特根斯坦反復強調“語言制訂游戲的規則”、“凡不可言說者必保持沉默”,可見語言并非僅僅是可通約的思想的映射,語言本身就決定思想的方式。使這個問題顯得那么低級而業余的,往往是業余程序員討論它的方式:僅僅憑著自己對幾種語言一知半解的認識、僅僅憑著使用一種語言的習慣、甚至僅僅憑著一種宗教狂熱來展開討論,這樣的討論自然是不值一哂的。
我是不是已經提到了“宗教狂熱”這個詞?如果說對語言的喜愛(或者憎惡)可以成為一種宗教狂熱,就有那么一些人可以憑著宗教般的狂熱成為開發高手,Ian Joyner無疑屬于這種人。1992年,在Unisys用C++開發UNIXX.500時,Joyner感到C++讓他“不自在”,于是就寫了一篇題為《C++批判》的報告,張貼在Unisys的內部新聞組上。到此為止,一切都沒有什么不同。但Joyner與其他宗教狂熱者的區別在于:他有著遠為深厚的理論基礎,以及鍥而不舍的毅力。于是,《C++批判》有了第二版和在Internet上廣為流傳的第三版。到1998年,這篇典型的論壇文章終于變成了一本書,“批判”也徹底變成了語言之間的比較(參與比較的另外兩種語言是Java和Eiffel),這就是我手上的《對象揭秘:Java、Eiffel和C++》(Object Unencapsulated:Java,Eiffeland C++,人民郵電出版社2003年7月)。
盡管宣稱自己反對“宗教戰爭”,但顯然Ian Joyner是深諳宗教戰爭之道的。從批評的方式來說,他與其他人并無不同:首先立論(“Eiffel是最好的語言”),然后不斷變換角度批評對手——時而是數學理論的完備性、時而是使用的便利和可靠、時而是命名的清晰??論據的選取完全只是為論點服務。也正因為此,這本《對象揭秘》足以讓絕大多數的語言比較者感到羞赧,因為在同樣的批評套路上,Joyner探索的深度和廣度令他們望塵莫及。譬如說,任何一個負責的語言比較者都必然會提到“繼承和類型系統”這一話題,但Joyner卻把這個話題寫成了長達63頁的一章(第5章,“類型擴展:繼承與虛擬”),并在后面的章節(第9章,“類型轉換”)中繼續討論相關的問題。拋開篇幅不談,單是Joyner習以為常的文法解讀、Lamda演算法和簽名變化理論,就足以使不夠水準的批評者自慚形穢了。
因此,在我看來,這本《對象揭秘》完全有理由成為所有語言比較者的必讀書目——也許說“入門書目”會更準確一些?因為你能想到的任何一條批評,Ian Joyner很可能早已做了鞭辟入里的闡述。如果在細讀《對象揭秘》之前妄自作評,結果很可能是貽笑大方。另一方面,在批評的方法上,Joyner為后來者作出了表率:簡單的反對與謾罵毫無意義,用錢鐘書的話來說,“反其道以行也是一種模仿”;只有拿出充足的論據,再拿出合理的解決方案,才稱得上一個高明的批評者。當然,這樣的“入門書目”也許讓門檻顯得太高了一點。但對
于“Java和C++誰更好”這樣一個通常只會令人感到莫名煩躁的話題,門檻總是不厭其高的。
像我一樣的Java人常常會抱怨“Java的經典書籍太少了”。C++的經典好書總是層出不窮,實在令人艷羨——當然真正擁有這些書的人也同時擁有不少的煩惱,我就有最深切的體會。在這本《對象揭秘》中,IanJoyner順便也半開玩笑地揭開了這個秘密。也許,這句半開玩笑的話會成為Java人喜愛這本書的另一個理由:
“??學習C++要花那么長時間??,要比Eiffel和Java都長得多?;敲撮L時間還未必掌握編程或者面向對象設計技術。這也是為什么關于C++的書籍那么多而Eiffel和Java不需要那么多書的原因?!?div style="height:15px;">
第一眼看到它,我就被吸引住了。那是在當時也很差的一種名叫“R1”的微機,可是顏色實在漂亮,典雅的奶黃色,配著深綠的按鍵,按下不同的鍵還有不同音調的悅耳的聲音。跟當時風行的大多數八位微電腦一樣,整個機身實際就是一個鍵盤,比現在PC機通常的鍵盤還要小,顯示器就用電視機。當我第一次把從書上抄下來的寥寥幾句的一個Basic程序從嘀嘀作響的鍵盤上敲入,最后再打進了“RUN”,而屏幕上忠實地顯示出了結果后,我就不可救藥地迷上了編程。父親的廠離家有五公里,每個星期天我都要自己一個人步行五公里,把一個星期里自己寫下的一大堆Basic程序拿來調試,當然一大半都被它冷酷的拒絕了,所以每次有一個程序通過了,我都會興奮的叫起來。那時我的體力不好,五公里走下來,相當累,還經常小腿抽筋,可是一坐到電腦前,聽見打開時“嘀”的提示音,一切的痛和累都消失了。
漸漸地我的程序通過率越來越高了,程序的規模也在增長。但是,那臺外表可愛的電腦卻開始不堪重負了,運行速度本來就慢,又加上效率低下的解釋性Basic語言,讓我實在不可忍受。于是,父親又到新華書店為我訂下了一本《Z80匯編語言》的書。書一到,我就捧起這部大塊頭的書,開始用我初中的程度一點點地啃。邊啃邊實驗,終于掌握了Z80匯編語言,又在電腦不具備輸入匯編語言能力的情況下,手工翻譯成機器語言,再通過Basic語言中的Poke語句把二進制代碼輸入內存,然后用Basic程序調用。在不懈的努力下,終于成功地做出了一個匯編語言的動畫程序!在這次成功之后,我就開始相信,只要肯鉆研,沒有學不會的技術,沒有克服不了的難題。
初中畢業后,我以全縣第一的成績進入了一所附近城市的省重點中學,從此我的眼界開始逐漸拓寬了,以后,我用到的電腦越來越高級,從高檔八位機蘋果電腦,到今天主頻以G計,內存以M計的奔四電腦,當年那臺主頻內存都只能以K計的八位機已是進了歷史博物館。但是這臺引領我進入編程領域,并且更驅使我深入鉆研匯編語言的電腦,將是我記憶中最珍貴的收藏之一。