自學編程該如何入手?


我覺得學習編程最重要的是入門!

如果你入門的時候有一個好的方法和思路,打下比較紮實的基礎,對今後的編程工作是很有益處的。即使在學習新的編程語言也無所謂,因為它們有很多相通之處,可以相互借鑒。 我認為可以先學習一下

pascal

,這個語言比較嚴謹,適合初學者。pascal它被稱為教學語言,結構嚴謹,不像

C語言

那麼靈活,易於理解和學習。 然後可以繼續學習C語言,這個語言比較靈活。有了pascal的基礎,在進行C語言編程就不會因為C語言的靈活而有問題 。後面的就可以學習VC什麼的了。 C語言的書推薦

譚浩強

的,比較好。我當時學習pascal和C語言的時候是將書後的習題都做了一遍,感覺效果很好。 當然了,學習什麼語言也要看你具體準備從事什麼行業。例如你要進行嵌入式開發,C就是很好的選擇,如果是

Windows

開發,那麼VC就不錯。還有資料庫方面的開發、網路開發等等。不同的語言適合不同的方面。要看自己的選擇的,呵呵 。 還有很多人說自己的基礎很差,甚至中學畢業什麼的。其實這個並不重要,比較說英語,在

計算機語言

里所用到的單詞量很少,而且都是常用詞,經常使用就記住了。當然,如果你要看原文資料或者幫助的話,專業辭彙比較多,不過在

金山詞霸

的幫助下,經常看,也是沒什麼大的問題的。至於數學什麼的,其實數學只是培養你一個邏輯思維能力,在初學編程的時候影響不是很大。況且,作為一個基礎編程人員來說,上面還有

系統分析師

、項目經理,他們會把需求分析、

概要設計

和詳細設計做好的,你只要按照文檔寫代碼就OK了。不過,要上更上一步的話,其他基礎知識就非常重要了,畢竟你不能寫一輩子代碼。 在你學習好C語言以後,個人建議好好學習一下數據結構和軟體工程。這兩門對你的水平提高都是很有幫助的。特別是軟體工程,它能夠使你按照科學的工程方法進行軟體開發,對今後的發展很有好處。


作為一個大部分時間都是靠自學編程的人,而且幫助過各種文科生、女孩子等傳統被認為不會編程的人學習編程,我有一些心得體會。

1.心態準備

這看起來像是離題的,但首先,你就需要一種內在的動力。激情和興趣可以幫助你在學習過程中保持一致和自律。

這不是短跑。這是一場漫長的馬拉松。不要指望一蹴而就。

不要將自己與「經驗豐富的工程師」這樣老手去比較。

2. 選擇語言

沒有一種「最好」的編程語言。 選擇可能取決於目的。 (例如,如果你想編寫一個iOS應用程序,你需要學習Swift或者object-c)。如果不知道學什麼,從python 這種有靈活性的開始學起。

3. 選擇學習平台

可以嘗試免費的在線培訓網站,如Codecademy,他將介紹編程的基本知識,同時會引導你創建一個實際項目。

當然,如果實在覺得困難,可以從一些少兒編程的項目開始。比如Scratch,都適用於所有年齡段的人。

4. 練習!練習!再練習!

練習練習再練習。成為一個偉大的程序員的最好方法就是練習

實踐不僅使你成為一個更好的程序員,而且你也通過這個獲得了很多的信心。

5.找到一個有線下見面的支持組織

編程里的坑太多了,有個支持性社群會好很多,線上交流問題,線下互相打氣。

推薦兩個

  • freecodecamp

https://www.freecodecamp.cn/ 前端技術比較多一些,是一個全球組織,不過有中文社區,有線下活動

  • Coding Girls Club

有線下的針對女性編程教學,同名公眾號可以關注。

總結來說,編程可以自學,理清目的,做好心理準備,以及找到一個支持社群。


  1. 一台電腦

  2. 選定一個語言,自學的話推薦學習順序是:Javascript 》PHP;

    為什麼先是Javascript?因為它不需要安裝任何東西,一個XX極速瀏覽器或者X哥瀏覽器即可(右鍵》查看元素》控制台即可編寫),其他任何語言都需要安裝配套的開發環境,然後為什麼是PHP,因為它上手簡單

  3. 鍛煉編程思維,這很重要,你要改變思維模式,編程就是告知計算機已知什麼、做什麼怎麼做、得到什麼

  4. 剩下的就是不斷的寫、不斷的寫、不斷的寫、不斷的寫

  5. 入門可以先寫些基礎的演算法,比如數字相加,冒泡排序,二分查找這些鍛煉基本編程能力和思維的;

  6. 先寫些小程序代碼,到一定程度後就可以開發一些功能應用


自學編程從模仿入手。

僅從我自己的經歷說說。剛開始學絕對的一腦子蒙逼,心裡總問這句是幹啥用的,那句是幹啥用的,怎麼第一句和第二句接不上了,邏輯跳躍太大,~~~等等。

1,自學肯定得看書,我推薦先看小部頭的,迅速看完,了解這門程序都有啥內容,達到一個「似是而非」的感覺。

2,找大部頭的教材,分章節看,並動手做程序,例如建立第一個工程,並寫第一個程序,最開始寫程序的時候,你都會發現,平常QQ聊天的時候那手指頭快速如飛,怎麼寫個代碼這手就跟不是自己的一樣。多寫代碼,怎麼也先積累2000行手寫代碼。

3,抄+背,代碼現在成熟的很,模塊化,現成的程序有的是,以「抄」為主,然後背下來,再分析這段代碼的邏輯結構,我自學js的時候就這麼用的,深入弄了兩段代碼就理解大概為啥要這麼編了,儘管自己還是獨立寫不出來。沒關係,背代碼,背多了也就能寫了,「久病成醫」就這個道理。

4,多上論壇交流,教材里說的程序開發,那都是保證正確條件下最沒效率的代碼,多跟其他人交流,慢慢就有感覺了,知道怎麼編高效代碼。

5,大膽實踐,不是編小APP嗎?編唄,錯了就重來,但每天都要保障時間,萬事開頭難,打基礎就是要有時間保障。

6,千萬別信10個小時保你會編程的書和視頻,那就是扯蛋。

7,高級的,就是泛型之類的,沒看過,還沒達到那個境界。

就說這麼多,C,C+,C#,如果有基礎那就更好了。


我雖然學的計算機專業,但是本質上和沒學過一樣,但是現在依然從事著編程方面的工作 是的,我就是個碼農,對此我想對有這方面想法的人幾點建議,我簡單的說一些計算機在運作過程中到底是一個神墨過程。

物理運作就是硬體上的體現,磁碟通過io把要傳遞的指令發送到內存,然後通過CPU集中處理這些數據。說白了這個過程就是把原有的信息加減的過程。這個信息可能存放的位置就是你的磁碟或者網路上。

邏輯上的體現,把怎麼給信息髮指令吶,就是機器語言的出現也就是彙編語言,他主要就是二進位語音就是零或者一我們能看懂的就是編程語言就是現在的c或者其他的一些語言,我們通過這些編程語言調用機器語言就是所說的api然後執行基本的人物,由於通用的機器語言好像就兩種,然後我們學的語言邏輯又是一樣的,這個邏輯就是演算法 所以基本上只要能夠學會一門語言,其他的語言就事半功倍了。

再者自學編程一定要堅持把最基礎的東西搞明白,多大代碼,沒有幾十萬行代碼是成不了大牛的,編程沒有你們想像的那麼難 ,只要堅持都會成功。


階段一:手把手輔導的蜜月期(Hand-Holding Honeymoon)

每個即將進入編程行業的人都滿懷期待,這很正常。

一方面,你在年輕的時候總聽流言說編程如何如何難,但它們就像老奶奶講的嚇人故事,是用來唬孩子們去學習社會科學而已。

而另一方面,「學習編程」運動已經取得了很多成就,它打破障礙並向人們展示編程其實也沒那麼可怕。 像 Codecademy、Treehouse和 Code School 這樣觸手可得的工具,它們可以確保你(甚至任何人)不僅能學會編程,還能成為一名熟練的開發者。

突然間,問題不再是對編程的恐懼,而是抱有過多希望,期望太高。

而且最重要的是,這些入門工具足以像教小孩過馬路那樣,引導你學習那些令人頭疼的變數和條件語句,以及初級編程語法。當你不斷完成遊戲般的挑戰時,你的自信會隨之大增。說不定你最後就學會了編程!學會編程並不難,基本上你已經是一名開發者了。

手把手輔導的蜜月期(The Hand-Holding Honeymoon)

現在問題來了,你正處於編程初期階段,我喜歡稱之為「手把手輔導的蜜月期」。儘管你可能感覺成功就在不遠處,但其實你才剛踏出第一步。一切才剛剛開始……

描繪未來之路

在我們一頭扎進第二階段之前,先來仔細看看整個過程。

在這篇文章中,我將介紹典型的編程之路上必須經過的四個階段,以及如何平穩渡過每個階段。你也會看到資源的豐富程度和知識範圍(各個階段必須掌握的)的廣度這兩個關鍵因素是如何在編程之路上起到決定性作用的。

旅程艱辛就為了達到找工作的水平,這個艱苦的過程可以描繪成你的自信心隨能力增長的變化曲線。

學習編程之旅

由於自信和幸福感緊密關聯,而且只有在自信和能力相匹配時,才能正式地說你可以「上崗」了,因此,上圖中的自信和競爭力是息息相關的。

隨後我們會觀察剩下的三個階段中存在的獨特挑戰,但每個階段本質上都包含了上面的這種關係:

  1. 手把手輔導的蜜月期(The Hand Holding Honeymoon),這個階段充滿了樂趣,面對看似棘手的問題,那些高質量資源的鼎力相助讓你輕鬆取勝。雖然你主要學的是基礎語法,但完成的工作會讓你很有成就感。
  2. 充滿迷惑的下滑期(The Cliff of Confusion),在這個階段你會痛苦地發現,手把手輔導的階段結束後,事情變得更困難了,實際上你沒法獨立做任何事。在你試圖重新振作時,你面對的首要挑戰不僅是要反覆調試,而且你還不懂怎麼問問題。
  3. 絕望的迷茫期(The Desert of Despair),這個階段漫長而又孤獨。在這個沙漠(充滿困惑迷茫就像身處沙漠)中幾乎沒有路,每個方向都看似正確,但你卻總是在繞圈,你極度渴望找到辦法逃出生天。警惕「狂燥中出現的海市蜃樓(Mirages of Mania)」,它們就像是沙漠的迷魂曲,將引誘你誤入歧途。
  4. 煎熬的上升期(The Upswing of Awesome),這個階段里你終於找到了一條路走出沙漠,並且總體清楚了如何創建應用程序。但你的代碼仍然很封閉,到處都是漏洞,就像紙糊的房子一樣搖搖欲墜。你的網站可以運行並且你已經掌握了幾種有效的模式,這些都讓你的信心大增,而且你的朋友們都在稱讚你的網站很酷,但實際上你知道底層連自己都不忍直視。你根本不知道該如何寫出「可發布」的成熟代碼。該如何彌補這個差距,從而找到一份真正的工作呢?

在過去這些年裡,我已經面試過成百上千的開發者,他們都心懷抱負,並且不斷給我說著相同的經歷。我寫這篇文章的目的,是希望你能夠在學習的路上擦亮雙眼,做一個詳細的計劃避開很多前人都曾掉入過的陷阱。

讓我們回到階段二吧…

階段二:迷惑的下滑期(The Cliff of Confusion)

你正處於階段一,也就是「手把手輔導的蜜月期(Hand-Holding Honeymoon)」,你正在獲取各種獎勵徽章並完成編程挑戰,同時你的自信和能力都在蹭蹭地上漲。情況也不是很糟糕…那大驚小怪些什麼呢?因為你的自信已經失去理智地膨脹到了極點。。。。。。

小心了!你即將踏出懸崖,多少英雄在此折腰淪為「編程太難」一族。這錯誤的一步發生在你第一次在鍵盤前坐下,打開文本編輯器並試圖從零開始創建一個工程,但你卻不用任何很贊的線上編輯器,也不用別人的代碼框架或尋求有用的提示。

簡直扯淡。

也許你能照著自學教程依葫蘆畫瓢,但是沒有人可以一步登天,而且從某種意義上來說,你要徒手從一個空白的文本文件開始簡直是異想天開。你才剛剛進入學習的第二個階段,接下去你的自信將跌落谷底,這也是為什麼我稱之為「困惑的下滑期(Cliff of Confusion)」。

困惑的下滑期(The Cliff of Confusion)

你開始創建工程。你抓耳撓腮卻只找到了一個勉強能用的方案,但總覺得哪裡不對。為了你的星河戰隊(也就是你的大工程)能表現不錯,你陷入了和bug的戰爭之中。似乎只有通過一鍵谷歌才能解決每一個問題,你那些過去能搞定問題的自信蕩然無存。

Buuuuuuuuuuuuuuuuuuuuug!!!

不論是作為教育者,還是作為這個行業的從業者,在大家看來這個階段都格外令人沮喪。任何人寫的程序都可能有bug,但我們還是希望你能有所進步,因為最不可能的地方也能成就最偉大的成功。

在階段一結束時,學生們被迫進入了階段二。他們必須飛躍這個階段,但太多有潛力的人卻不去掌握真正有用的技能,而是一味地停留在挫敗的情緒中。

可怕的是,你甚至還沒有遇到過真正棘手的事情。階段二的結束還早得很。當你解決掉足夠多的bug結束了大部分的痛苦,並且已經完成了幾個工程,儘管這標誌著階段二的結束,但總體來說你也仍然是剛上路而已啦。

對那些真正準備從事這個行業的人來說,他們通常會在渡過階段二以後決定是否全身心投入這個新生活。但太多的人放棄了。而不幸的是,你現在才剛到階段三(「絕望的迷茫期」)的入口。

起作用的兩個關鍵因素

那麼前兩個階段的真正區別是什麼呢?為何相比階段一(手把手輔導的蜜月期)來說階段二(困惑的下滑期)給人的感受會如此糟糕?如果你的經歷很像我們前面描述的那樣,只要理解了這兩個問題,你就能釋懷了。

從根本上來說,每個階段都有兩股關鍵力量在起作用,那就是資源的密集程度和知識面的廣度。在探索它們對階段三的影響之前,我們先來看看這兩個因素到底是什麼。

因素一:資源密集度

正如我前面所說,一開始你會感覺有遍地的資源在引導你上手編程。事實也確實如此!

搜索「如何編程」,你會得到一大堆有用的工具、文章、視頻以及自學教程。而且,老實說它們都很棒!從未有過如此多的方法指導人們學習編程。

不幸的是,後期可供使用的資源太少了。每一個從初學者成長到當前狀態的人都能體會這其中的差距之大,相比剛開始入手,當你試圖完全依靠自己創建工程時,能利用的資源就少得多。

進入階段三後需要了解的知識猛然陡增,惡化了上面的問題,這也是為什麼我把這個階段稱之為「絕望的迷茫期」。一旦你度過了這個階段,並且開始了解你需要搜索的東西,你就會找到很多資源,還能使用一些技術工具,如專業博客和視頻講座。矛盾的部分僅僅在於明白該問什麼問題。

下圖顯示了各個階段中的資源密集程度(線條越密集表示資源越多):

各階段的資源密集度

因素二:知識面的廣度

現在我們來聊聊一個相關的話題——知識面的廣度。它表示你在每個階段中必須學習的新知識的總體廣度。下圖就顯示了這個因素在每個階段中的情況:

各階段所需知識的廣度

剛開始學編程時,你需要理解的東西很少。不論你的目標是什麼,不論你用什麼編程語言,也不論你之前是做什麼的,每個人要做的都是搞清楚什麼是for循環,如何創建條件語句,以及其他一些編程語法的基礎結構。總體來看也沒多少基礎概念,因此階段一所需要的知識面廣度很窄。一旦你學完了基礎部分,就需要去了解一些更複雜的東西,比如理解錯誤以及何時使用那些你已經會用的代碼,此時你會發現需要學習的額外知識瞬間多了很多。這個時候情況變得不同了,因為一個明確的問題不一定有一個絕對正確的答案……事情開始變得棘手。

當你進入第三個階段後,所需的知識面廣度就更寬了。你需要理解該使用哪些工具,該學習什麼編程語言;學習相關的計算機科學基礎,如何寫模塊化的代碼;學習面向對象的編程,學習好的代碼風格,以及學會尋求幫助(以上僅列舉幾個例子)。每一次在Google 或 Hacker News上進行搜索都讓你大開眼界,找到的東西多得讓你喘不過氣,都是些你不知道但感覺自己應該了解的知識。

你不知道自己不懂哪些東西。

只有當你終於摸到了一些門道並結束這個「荒漠之旅」以後,所需的知識面廣度才會再次縮小。那時,你已經選擇了某種技術,並了解了它在這個行業的生態系統中所處的地位。你最終學會了那些你以前不懂的東西(可以說相當了解),也知道如何解決問題。隨著你深入學習和事業逐漸起步,你將越來越專註於自己領域的技術。

階段三:絕望的困惑期(The Desert of Despair)

理解了上面兩個因素後,你會發現階段二僅僅是個轉折點。快速提升的知識面廣度和急劇下降的資源密集度讓你在這個階段倍感痛,因此我稱它為「絕望的沙漠」(身處這個階段猶如在沙漠中一樣,迷茫得團團轉卻找不到方向)。

本質上來說,你知道這個沙漠肯定在某個地方有出口,但你就是不知道怎麼找到它。

絕望的沙漠

這個沙漠之旅路途遙遠,而且危機四伏。你會發現自己總是沉溺在虛無縹緲的東西里,許多誘人的資源看似包含了你要找的對策,實際上它們只是又一次地讓你深陷在了無邊無際的砂礫之中。

或許你已經在Coursera 、Udacity 或 edX上註冊了幾門MOOC課程,又或許你找到了一個聲稱能一路指導你的自學教程。你自以為吸取了階段一(手把手輔導的蜜月期)的經驗教訓,明白問題並不是那麼好解決,但還是忍不住去尋找幫助。你註冊的課程信誓旦旦地保證,一定能讓你達到前所未有的高度,對此你還信以為真。無論別人怎麼說,你都不可能只花一個星期或一個月的時間,也不可能就只上個學院課程就學會這些東西。因此,別再相信那些謊言!

這個階段要學的東西很多,遠超出你可能預期的那些。儘管你能讓許多app運行起來,但要成為一名真正的專業開發人員需要做的更多,在其中你很容易感到迷茫失落。你每一次進步都難以衡量,你如何知道自己該學什麼?甚至這些東西是不是你該學的呢?

就算你走對了方向,卻仍然很難衡量你取得的進步。在你能做出外形和功能都符合自己期望的東西之前,你可能會感覺很迷茫。但是只要堅持不懈,並且保持正確的方向不跑偏,終有一天你能將那幾個「貨真價實」的處女作發布出去,你終於開始上道了。一路走來確實很艱難,但你開發的這個web東東其實也沒有那麼糟。。。。。。一切都在變好!

階段四:煎熬的上升期

你已經成功穿越了荒漠,也越來越自信。你Google搜索的技能( Google-fu)越來越了得,也能理解那些細緻入微的專業博客文章和視頻講座。或許你已經深入掌握了某一種編程語言或框架,並且有自信能創建並發布一個能運行的應用。

這是「煎熬的上升期」:

煎熬的上升期(Upswing of Awesome)

表面看上去一切都OK,但你知道底下還差得遠呢。

雖然你能讓那個應用程序運轉起來,但底層都發生了什麼?你的代碼里充滿補丁,最糟糕的是,你甚至不知道哪部分很糟糕,也不知道實際上哪部分將運行無誤。你不時地取得成就,同時也犯了許多菜鳥級錯誤,更糟的是,你漸漸開始懷疑怎麼還是搞不清自己在做什麼。

這是個兩極化的階段。一邊覺得自己是個無所不能的開發者,另一邊又覺得自己是個效率極低卻深陷其中的狂熱新手。走得越遠,越是感覺惶恐不安,生怕哪天有人 「揭穿」你代碼中的詭計。

你覺得自己應該算是一名開發者了,但你現在寫的代碼和在「職業」工作環境下寫出的代碼相比,差距實在是太大了…

儘管艱難,最終你一定會成功。那時的你心情澎湃,渾身充滿力量,絕望的荒漠已經過去,而令你困惑迷茫的階段二也成了遙遠的回憶。終於,你是真的在走上坡路:你的學習速度更勝從前,也更理解如何學習編程。儘管歷盡艱難,但你會經歷足夠多的最佳實踐,把那些寶貴的知識凝結成產品級的技能集。這個可怕的上升期會比你預想的要長,也會讓你感覺看不到頭,因為你已經離終點如此之近……但你肯定會到達的。如果你在正確的道路(確定未來要做什麼)上足夠堅持,一定會有人願意付薪水給你,讓你繼續學習。工作機會是你的了!

總體來看

現在你已經看到了前方的路,也知道了為何會一路艱辛。將前面描述的四個階段和過程中對它們起作用的兩個要素結合起來,就得到了下面這個圖表:

整個過程

對這個過程的了解歸了解,去經歷又是另外一回事。你還是先邁出正確的第一步吧。

如何通過每一個階段

整個旅程看似艱難,但坦白地說,學習編程的過程通常都是這麼艱苦的。了解自己的目的很重要,尤其當你孤軍奮戰的時候。但你不會只能靠自己的,因為大部分問題都有捷徑可走。學習編程沒有人們說的那麼簡單,但也沒有你在絕望時想的那麼難。

我會在這部分介紹一些重要的策略,你能利用它們保持一個正確的方向。

你在各階段取得的進步

I:如何順利通過手把手輔導的蜜月期(Hand-Holding Honeymoon)

豐富的可用資源讓階段一充滿了樂趣。這些資源能夠在接下來的階段中,很好的培養你的邏輯思維。現在是學習編程的大好時機,記住這兩個建議,享受編程的樂趣吧!

  1. 從嘗試多種不同的學習資源入手,找到最適合自己的學習方式和最讓自己感興趣的項目類型。最適合你的可能是Khan Academy的快速挑戰、 Codecademy的在線練習,或者是Chris Pine的書《Learn to Program》和Code School里那些古怪的try Ruby 訓練。剛開始你要思維開闊,不要理會那些告訴你應該學什麼的建議。。。。。。在這個階段學什麼都是一樣的。
  2. 選擇一個,一旦發現它適合自己就要堅持下去。完整學習整個入門教程,你會從中學到寫基礎腳本和應用需要的所有基礎知識。接著,就要準備好開始獨立地創建工程。

II:如何順利通過困惑的下滑期(Cliff of Confusion)

幾乎每個人都要經歷這個階段,因為成為一名開發者的唯一途徑就是不斷去開發。你可以通過註冊一些自學教程(或那些冒充是「完美課程」的自學教程)來模擬創建工程,但最終你還是要自己動手,這麼做不過是拖延了時間。自學教程能很好地讓你從更個性化的常式中得到啟發,但是在某些情況下你必須脫離過多的輔助,獨立解決問題。

如何過渡到獨立地創建工程,下面有三個建議:

  1. 和他人一起工作,哪怕同樣是菜鳥。你會驚訝地發現,兩雙眼睛更容易調試出一個不可能的錯誤。
  2. 閱讀他人的代碼,熟悉好的模式。盡量理解為什麼作者這麼做。同樣的道理,不讀書是不會想成為一名小說家的,對吧?我將在下一篇文章里集中討論這個問題,但現在,請仔細注意其他人對任何小問題或工程提出的解決方案。
  3. 從小事做起,不斷嘗試。對於將來,你應該想過做一些有趣的大工程,但你也必須適應調試的過程,搜索一些帶有小型挑戰的學習資源。經驗是無可替代的。

III:如何順利通過絕望的困惑期(Desert of Despair)

一旦適應了調試過程,最令你頭疼的問題就是難以獲取所需知識,以及學習所有這些知識必須付出的代價…簡直就像處於令人絕望的沙漠里。這種情況下,你真正需要的是一條有效的前進路線。而Mirages of Mania代表那些吸引你的捷徑、誘惑你冒險的新世界和速成計劃,它們最終只會浪費你的時間。

因此,要逃離這個沙漠的關鍵在於:

  1. 擁有一個強烈的目標想去實現,否則,什麼有趣但沒用的東西都學的話,最終不過瞎忙活一場。如果你在學習之外還有充裕的時間,請忽略這一條。。。。。。
  2. 找到一條有效的路徑能直達你設定的目標,並且要驗證其可行性。你必須深入思考「這個方法到底能不能幫我實現目標?」,而不是光看那些課程網站或書皮上打出的營銷口號和看似真誠的笑臉。
  3. 專註,避免分心。因為你如果是個對學習編程很有興趣的人,那你肯定也會對所有美妙的事情感興趣。當編程遇到了困難,你需要進一步解決這個問題,而不是另起爐灶。

如果能確定一條路並堅持走下去,你最終一定會進入到下一個階段,而不是花費了數月或數年,最終只是徒勞。

IV:如何順利通過煎熬的上升期(Upswing of Awesome)

這個階段是最棘手的過渡階段之一。儘管你能開發出應用程序,但你實際上想成為一名web開發人員。通過這個階段並找到工作,你需要做三件事情:

  1. 為編程尋找最佳實踐,並效仿。你需要理解一個普通方案和最佳方案之間的差別。自己一味悶頭鑽研,遠遠比不上別人在真實工作環境下寫出的產品級代碼,而最佳實踐樣例很好地體現了這其中的差距。
  2. 檢驗你的假設。因為你可能迴避了一些自己知識體系中的漏洞,甚至你自己都不知道有這些漏洞的存在。你需要檢查並修復這些漏洞。
  3. 正確對待那些並不吸引人的技能。儘管它們很少被強調,但是你要過渡到一個專業環境,它們還是相當重要的。這些技能包括測試、數據建模、架構和部署,我們很容易忽略它們,但它們都是優秀開發的基礎。

要做到上面這些並通過最後階段,關鍵是要不斷獲得他人的反饋。完全自學或許富有成效,但難以寫出易讀、模塊化以及可維護的代碼,這就使自學者在職業環境中沒那麼有吸引力。你需要和和那些會懷疑你假設的人們一起工作,他們會提出尖銳的後續問題,並迫使你對自己的知識體系進行查缺補漏。

那麼……這條路能行嗎?

這些可能聽起來讓人崩潰,但我保證,在你之前已經有很多人堅持不懈地通過了這個旅程。理解前面的路,你就能有一個明確的計劃,也會知道如何獲取真正有用的幫助,這些都為你踏上這個旅程開了好頭。

很顯然,這篇文章沒有按我們想的那樣,深入挖掘旅程中的每個階段,也沒有提供詳細的建議告訴你該怎麼做。即便如此,由於我們熟知這個旅程並且對此抱有極大的熱情,因此,我們希望傾盡全力幫助大家。

我們的核心課程是專為銜接整個過程而設計的,但如果你有興趣自學這個課程,我們將在未來的博客文章中對此進行調整和深入探討。


如果自己的目標是開發一個小程序 ,可以先系統的學習Java ,然後開始進行開發, 以項目為驅動, 哪裡不會做就重點學習哪塊內容 ,一個項目做完了, 也積累了很多經驗, 再往後學習就會很順利了。

JAVA課程分為四個階段,從基礎到高級,層層深入學習,步步進階,具體安排如下。

第一階段:Java語言基礎應用

課程內容:java開發環境,基礎語法,面向對象設計,多線程編程,數組與集合,文件操作,設計模式,反射,XML解析,數據結構與排序演算法。

掌握技能:

(1)掌握java語言語法及面向對象設計;

(2)掌握java多線程並發編程技術,數組與集合數據存儲技術;

(3)掌握java文件操作技術,為Web開發做準備;

(4)掌握設計模式,反射,XML解析等技術,為後期框架開發做鋪墊;

(5)掌握數據結構與排序演算法的基礎數學知識,訓練學員邏輯能力、分析能力,為人工智慧與大數據演算法的學習做好知識儲備。

第二階段:javaWeb開發

課程內容: 關係型資料庫,web伺服器,servlet,jsp,ajax,html+div+css web前端,jQuery,BootStrap前端框架、項目實戰

掌握技能:

(1)進入web應用開發領域,掌握web應用及整個B/S結構基本概念 ;

(2)掌握資料庫開發技能進行數據持久化存儲,實現人機交互;

(3)掌握數據處理基本方法,結合實際項目實現數據可視化操作,完成數據分析應用。

第三階段:框架開發應用

課程內容:Oracle資料庫,Struts2 MVC框架,Hibernate持久化框架,spring框架,linux系統,框架整合,項目實戰

掌握技能:

(1)掌握Oracle資料庫SQL語句、函數、存儲過程 等資料庫知識;

(2)掌握MCV概念以及項目分層的基本應用;

(3)掌握持久化框架的深度應用以及數據存儲;

(4)掌握spring框架的IOC,AOP應用原理,加深面向對象設計的思想;

(5)掌握Linux操作系統的操作方式,為後期項目發布與大數據開發做準備;

(6)掌握項目實戰應用的框架整合技術,為企業應用開發做鋪墊。

第四階段:java高級階段

課程內容:springMVC框架,MyBatis持久層框架,easyui前端框架,Shiro許可權管理,Redis內存資料庫,MongDB文檔資料庫,項目實戰

掌握技能:

(1)掌握springMVC框架的基本用法;

(2)掌握MyBatis持久層框架的基本用法,結合資料庫實現數據持久化;

(3)掌握easyui前端框架的深度學習能夠搭建基本的前端交互頁面;

(4)掌握Shiro許可權管理技術,細化許可權控制的粒度;

(5)掌握Redis與MongDB等NoSql資料庫,為大數據應用做準備。


自學編程看學什麼語言了,如果是新手從沒基礎過的建議學一門簡單入門上手開的語言php網站開發,這是入門最容易的,然後去網上找一些學習編程的入門教程,多看教程等思路明白以後再通過自己多多練習多敲代碼,敲的多了思路也就多了,這是一個徐徐漸進的過程,一朝一夕,慢慢積澱下來的。希望對你有幫助!


如果你像我一樣並不指著編程吃飯,只是想看看代碼工作起來會產生什麼神奇的效果,並同時來鍛煉自己的邏輯思維能力的非科班出身(本人英語專業有很大優勢),可以參考以下內容:

1.建議從HTML和js(js就是javascript,你要說它跟java有什麼關係,嗯,就像雷鋒和雷峰塔的關係)開始,HTML非常簡單,你可以用HTML在一小時內做個不錯的靜態頁面。js提供比較簡單的交互,比如彈出一個對話框告訴你現在的時間,在屏幕上顯示時間倒計時等等好玩的效果。

最重要的是,這兩個不需要安裝伺服器環境,在你的瀏覽器里就可以運行看效果。

2.下載一個編輯器(其實就是高級的記事本),推薦sublime 3

3.兄弟連高洛峰的視頻在猿代碼網站上都附有代碼,這個非常重要,一定要找到配套代碼,照著代碼在編輯器中敲一遍,然後在自己的瀏覽器里運行看效果,如果有錯誤,看看代碼哪裡錯了,一般都是少個分號,少個括弧什麼的。

4 .這個時候即使運轉正常有些地方你也不明白,找到峰哥的配套視頻觀看理解代碼。因為峰哥也是自學出身,學習路徑跟你我類似(只看峰哥的,其他兄弟連的老師很呵呵)。

5.都學好後,找一些網上的趣味題,比如20元買啤酒,小球比重量,用js來做這些題,用HTML來顯示結果。

6.如果想進一步把自己的代碼放到網上讓別人能看到,還能有數據存取這樣的處理能力,就該學習峰哥的PHP課程,會手把手教你搭建本地伺服器,然後跟HTML同理,下載代碼,然後敲,一章敲好了看視頻理解。

7.到這個階段,你就可以做個簡單論壇玩了,雖然界面會搓的一比,但是能用啊。

8.不要試圖學會各種主流語言,比如python,ruby,go,C++, JAVA, 你會發現浪費大量時間卻還是什麼都沒學會,親測不可為。

要明白,計算機編程語言,就像英語,他就是個工具,用來表達你要表達的內容,不要在語言本身上走火入魔浪費太多精力,多找一些目的,比如上文提到的趣味題,或者做個什麼博客,什麼論壇,目的驅動,在實現的過程中學習,百度不到就谷歌,不會翻牆私信我。

9.編程跟英語一樣都是實踐科學,你不用就沒意義,必須實際試了之後你才會知道卧槽原來這樣。站在岸上你永遠學不會游泳。

10.學習編程的目的更多是鍛煉邏輯思維能力,解決問題時候的主動學習,查找能力,這點我覺得是我國教育體制下最欠缺的。我們都習慣了等著老師來喂飯,獨立解決問題的能力很弱,用一個美國碼農的話說,中國程序員需要把問題分解到很細的顆粒才能解決,就是這種習慣的體現,雖然我們在理論能力上完爆他們。現在編程已經成為美國中小學必備的科目,甚至奧巴馬對此十分關注。再看我國的教育,落後的本質還是教育上的落後。


說一下我自己,我自己,我從來沒有參加過任何的電腦專業性培訓,很多年前我自己就很喜歡電腦,自學一些電腦知識,但是興趣比較散,我現在能做到的,自己需要的一些小網頁或者小程序,現在都自己寫(大俠勿噴,我甚至沒有界面,又不想用比較臃腫的某些軟體,用完可能就扔了)談一點自己的體會。

網頁方面,php還是比較容易上手的,現在網路上大把的教程,基礎製作很容易就上手了,高級使用,得看個人了。

軟體推薦vb(如果喜歡中文易語言),大俠勿噴,你們是不知道沒有專業學習的人的苦,因為vb是可視化操作,0基礎的人理解起來就輕鬆多了,個人觀點,如果英文不行,用易語言吧,操作和vb非常相似,容易上手。

再說一句,我的觀點,進適用於新手。


推薦閱讀:

如何應對特別看重分數的父母?
躺在人流床上拍視頻「炫耀」,這些孩子是教育缺失的犧牲品
K12教育需求的生態閉環
4類小遊戲幫助「熊孩子」上課坐得住,提高注意力簡單又有效!

TAG:Java | 互聯網 | 教育 | 科技 |