java學習方法-淺談軟件開發的神速進步

中國人大都喜歡用武俠小說來比較軟件開發,可是在實戰武功中,只有葵花寶典纔是最厲害的,也只有掌握了葵花寶典,才能稱爲「不敗」。java

1淺談軟件開發的神速進步linux

1.1什麼纔是軟件開發的葵花寶典?c++

  讓咱們先從一些現象出發。咱們的前提是,軟件開發是一項智力密集型勞動。對於智力密集型勞動,咱們觀察到的現象是,個體的表現差別很大,團隊的表現差別很大,組織的表現差別很大,國家的表現差別很大。這不象體力佔主要的勞動,象百米王跑百米的速度也僅比我快50%。但在棋類運動中,一個高手能夠車輪戰數位低手,並且毫無例外地將他們一一擊敗!程序員

  這些智力運動員表現出的特色是,計算精確並且速度快。其行爲很象東方不敗。雖然關於葵花寶典的傳說不少,但最準確的描述只有一個字「快」。東方不敗已經快到了嚇人的地步。就象卡斯帕羅夫已快到了深藍的地步。編程

  在軟件開發中,咱們一樣注意到這樣一種高手,他們能夠天天寫出一千行左右的高品質代碼。他們能夠運用已有的一些軟件包,迅速完成一個新的產品。他們能夠在很短的時間內,學會一項新的程序語言或是新技術。他們表現出一種神奇的速度。windows

  在武俠小說中,全部的高手都有一些凡人不能企及的表現。象張無忌學太極,用龍爪手擊敗龍爪手名家;喬峯用太祖長拳擊敗天下英雄;姑蘇慕容以其人之道還治其人之身,令狐沖一劍剌瞎十幾雙眼睛等等。我認爲,之因此他們能作到這樣,關鍵是在於他們快。api

  快並不意味着不許或品質差。快與品質並不矛盾。eclipse

  高手的快,其實包含着很高的品質在其中。若是你由於高手的快,就質疑其品質,那就至關於在問:東方不敗出手那麼快,會不會刺不許?東方不敗並不知足於刺死對手,他會在對手身上刺朵花。他把殺人變成了藝術。準確來講,他真正的興趣不在殺人,而在於藝術。ide

退一步說,就算東方不敗第一擊有點誤差,他稍做修正後,立刻跟上的第二第三擊,也會擊中他想擊中的地方。在武功差的對手劍還沒撥出來的時候,他已殺死對方並刺上了一朵花。工具

1.2高手的特色

  真正的軟件高手,他並不知足於他的代碼能有效地工做了,他認爲編程是藝術,並醉心於其中。在低手能寫出一個版本的時間裏,他已經寫出了第十版。其品質固然不可同日而語。就象一個九段棋手,在給定的時間裏,他能計算十種可能,並將每種可能計算到100手以後,從中選擇一種最有利的下法。低手豈有苟全的機會?

1.2.1高手寫軟件老是不停地在重構(refactoring)。

高手喜歡迭代式開發。高手說,增量就是打補丁,迭代就是推倒重來。對於軟件這種東西,寫一遍它可能ok(作到這一點也不容易),寫十遍就是一個偉大的產品,再多寫一遍它就更偉大些。 一、編碼要不斷的重複,再重複。直到潛移默化。

1.2.2高手快的訣竅在於他很熟悉各類東西。

高手看書很快,由於每一本新書裏,值得他好好看的新技術只有一兩章的內容。他能迅速看完,並準確領會這本書的中心思想和價值。而對於一個新手,每句話都是新的,他都須要去理解,每一段例子,他都須要去試。

不多看到一種100%全新的技術或理論。就象java language specification裏說的,java沒有使用任何新技術,用的都是業界久經考驗的技術。對於高手來講,那些技術都是他所熟悉的。天然,很快他就能從一個c++高手變成了java高手。若是一個編程新手學java,學兩年也不如一個高手學兩個月的。高手學新東西快。

二、境界轉移,舉一反三

1.2.3高手寫代碼速度快。

統計結果說,人均每人月的有效代碼速度大概是500行(天天22 / 25)。但那是業界平均生產效率。對於高手來講,這個數字過低了。天天寫300至400行是徹底有可能的。由於在寫代碼時,全部知識都已具有,已經沒有任何須要他多花時間的事情了。他甚至不多須要 debug。

三、量變到質變

1.2.4高手重用代碼的能力很強,熟悉新的api的速度很快。

這也是由於,他曾經使用過不少的api,重用過不少的代碼。他知道哪些是可用的,哪些有缺陷。他既過用qt,也用過gtk+,也用過windows api & mfc,也用過awt & swing。新的api對他來講,也是老熟人。

四、舉一反三,觸類旁通的能力

1.2.5高手喜歡用輕量級的工具(eclipse 免費/ myeclipse收費 / idea【idea支持1.8/ 1.9】) 像vi,notepad,最多到ultraedit這樣複雜的。 高手用這種工具寫出不少的東西。這些工具就象東方不敗的針。那根針已具備神奇的魔力,有時候它能夠當激光槍來用。

對於一些重量級的工具,高手雖不經常使用,但一經使出也威力大於常人。若是讓東方不敗用劍,最厲害的劍術名家也會敗得很難看。高手其實用過不少的重量級工具,並且深知其優缺點。因此使出來,就會把威力發揮到最大,而把缺陷減小到最小。而低手則否則,老是把缺陷加以大大的發揚而渾不知其精髓何在。就象不少人學用uml、rup、xp、design pattern那樣。

五、高效作事

1.2.6高手所學博雜且融會貫通。 高手作什麼都快,當低手還在一愁莫展的時候,高手已經圓滿解決問題,去幹別的事去了。

 六、融會貫通   1.3成爲高手的總結

相信你有一點點想成爲高手了。可是有一個問題亟等解決,那就是「欲練神功,必先自宮」的問題。這一點實際上是有比喻意義的。就是說,你必需拋棄一些世俗的人們很看重的東西。有詩爲證 : 1.3.1成爲高手要作到拋棄一些世俗的人們很看重的東西     世人都曉高手好,只是寂寞受不了

  世人都曉高手好, 只有名利忘不了

  世人都曉高手好, 只有金錢必定要

  世人都曉高手好, 天下美女都要抱

世人都曉高手好, 不寫代碼最最好 
複製代碼

  高手的武功不是一朝一夕練成的。還記得玻爾那件軼事嗎,玻爾回答說,他年青時也計算過不少的問題。在不少計算的基礎上,高手能培養起一種感受。高手不寫代碼就能作設計是由於他之前寫了不少的代碼。並且他們會保持寫代碼,以保證自已的水平不降低。想想九段高手是如何練成的。最難作到的是能忍受十年磨一劍的寂寞。別人在父母那裏撒嬌時,他們在一旁用功。十年磨一劍,劍就成了東方不敗的針。

  在你下定決心要作高手以後,也就是下定決心拋棄那些世俗的追求以後,也就是你下決心忍受那些來自於庸俗的人的白眼、攻擊和謾罵以後,你就具有了練成神功的必要條件。

  事實上其實你沒必要一開始就練神功,一開始你們多是爲了錢,房子,汽車,美女才編程序的,然然後來藝術就從中產生了。那時高手就再也不關注那些東西了。卓別林曾說過,他開始進入那個圈子也是爲了錢,後來藝術就從中產生了。固然,也有人一開始是爲了藝術,後來變成爲了錢。

  所謂三十而立,就是說到了三十,你找到了你的真愛,值得用一輩子去追求的那種。好比說有的人到了三十認爲這一生應該賺儘量多的錢,這也沒什麼很差,也能夠把賺錢自己變成一種藝術,所謂資本運做是也。因此在三十之前,有些私心雜念沒什麼。三十之後還這樣是可恥的。而我,想作一個程序員。

  每一個人作本身最喜歡的事。這個世界須要程序員,也須要資本運做。全部真正的程序員,他最喜歡的事是編程和他自已。若是他後來去作ceo去了,再也不編程,只說明他原本不是一個真正的程序員。

1.4在成爲高手的路上要。

1.4.1要有熱情,要按部就班,要鍥而不捨。

1.4.2要靠本身,書要快快地看。 要試圖迅速理解其主旨。其實你快快看所接受的信息量,與慢慢看接受的差很少。能明白多少很大程度上取決於你的功底。之後用到再回過頭來看。一本對你來講新東西太多的書,不要期望看一次就全理解吸取。就象不少功力不夠的人看design patterns那本書同樣。慢慢看還不如找到多種 信息來源,都快快看一遍。對於一個徹底陌生的領域,只看一本書很遠遠不夠的。

1.4.3要靠自已,事要快快作。 (雷厲風行) 有一個朋友,幾年前我介紹他去玩玩linux,他也表示想玩,但他如今還沒碰過。他失去了不少機會。

平時要有意識提升本身寫代碼的速度,其實你一天寫15行有效代碼,與你寫50行有效代碼,其品質是差很少的。你應該把那些業界平均水平拋諸腦後,把超越本身作爲惟一目標。等到你寫了不少各式各樣的代碼,你的水平就不通常了。一個老師曾向我介紹他的學英語的決竅,他說你去啃原版小說,啃到50本,就和通常人有很大距離了。就是這個理。若是你寫得太慢,怎麼能寫得多?水平怎麼能提升?

1.4.4要靠本身,學不少別人怕學的東西。 低手總會說:這麼多東西怎麼學得過來啊。因而就少學或不學。這樣就成不了高手了。高手有很是廣的知識面,有很豐富的經驗。知道不少低手不知道的事。玩過不少低手聽都沒聽過的東西。

1.4.5要靠本身,努力知足客戶的各類需求。 我的技能是在知足客戶的各類需求的過程當中提升的。好比你喜歡用delphi,客戶說必定要用vb,那你就答應他,而後把本身培養成爲vb的高手。用戶的需求看似**,但對你是一個機會。

1.5怎樣才能作到看書快,寫代碼快,學新東西快 一個顯而易見的途徑就是將工做並行化。你在一臺機器上make時,同時能夠在看別的文檔和聊天。對於計算機是這樣,對人也是這樣。若是你只能串行地處理問題,你的速度將提升有限。你的大腦有很大潛力可挖,它應該是一個多任務分時系統。努力減小它idle的時間。搞經濟的samuelson被人稱爲human brain main frame,可見他的大腦有多快。

  讓你的思惟快起來,你就會區別於那些反應遲鈍的人。若是你不能讓人生的道路變長,就讓它變寬。這世界變化快,須要你變得比它快才行。

這樣加快並不會讓你短命,相反,你有更多的時間來享受生活和鍛鍊身體。你的生活將更有品質,更豐富,更有意義。面對變化,你將立於不敗之地。咱們都是和本身賽跑的人,須要跑得比昨天的本身更快。

目標:平均天天500行代碼量 15K 溝通(自信) 在深圳的水平:120天 * 500有效行 = 60000行 = 10K/月 (執行力) 行業工做量要求:60000/100 = 600天 = 2年

2知識,技能,才幹 , 藝術

2.1技能與知識最大的差異是 技能是以熟練不熟練爲判斷的。它沒有知識那種知道或不知道,「原來是這麼回事」的瞬間快感。任何人剛剛接觸技能,都是笨拙而滑稽的。雖然26個字母清清楚楚地寫在每個鍵位上,可是誰也不會一開始就運指如飛。

目標:前面半個月對打字必需要練到運指如飛 1000 600 100 後面的要求由於很難 必需要達到: 眼看,手敲,耳聽,心想,腦思。

2.2中國式英語教學的問題 把英語當成一種知識來教——你清晰地知道[θ]是從喉嚨發起的氣流經過上顎衝出脣齒之間摩擦發出的濁音,可是你不必定能順利發得標準。你能夠對虛擬語氣的十二種可能瞭如指掌,可是仍是沒法脫口而出。

目標:多練,不斷的敲代碼,敲到渾然天成的胸有成足。

2.3語言是技能,而不是知識。 知識能學到,而技能只能習得。知識學習是瞬間的,知道與不知道之間幾乎瞬間完成。但技能則須要漫長的笨拙期——若是你不接受本身笨拙的開始,你永遠也不會學好任何技能。

也正由於這個心智之牆,不少知識優勝者死別也不肯走入技能的練習領域。這也是爲何「好學生」每每不如「壞學生」混得好的緣由——「混社會」是門技能啊。

2.4才幹 而當一門技能被反覆地操練,就會進一步內化,成爲才幹。正如你如今打字不須要看鍵盤,正如你說話張嘴就來不用考慮發音,正如你騎單車不用想着保持平衡同樣,這些技能都由於反覆修煉,成爲你不知不覺的才幹。

而才幹一旦學會,能夠很迅速地遷移到其餘技能領域中去。就好像今天的小孩子學習個新電子產品必定比中年人快, 他們與電腦的互動,早就成爲才幹,又從新遷移到新的知識和技能領域來。高手就是這樣煉成的。

讓技能升級爲才幹,咱們就完成了最牛的一項能力修煉:才幹是自動自發的能力。

無須過腦子就可以直接使用這項技能,他彷佛成爲你的天生屬性之一。一個魔術在上臺前,須要通過大概近3千次的練習,因此當劉謙對着鏡頭變魔術的時候,他的大 腦確定不會過關於「如何拉動皮筋」這樣的事,那些動做徹底自動化,他的腦子則在想如何配合當時的機位、鏡頭、全部人的表情。時間一長,這些技能也變成「鏡 頭感」被存爲才幹。他能夠發展新的技能了。

愛好學習的寶寶們,能夠找我。v:17711692868

相關文章
相關標籤/搜索