自學編程需要注意什麼?

相關問題:
想自學編程怎樣下手? - 大學生
如何系統、科學地自學編程知識? - 學習方法
如何高效自學編程? - 計算機
--
題主男,今年剛滿20 初中畢業文憑
目前自考大專在讀(兩年後拿到大專文憑繼續讀專升本)
我要改變命運!!!

不想在電子廠做一輩子的普工或者是餐館做一輩子的服務員 從小就喜歡計算機(僅僅停留在遊戲 )想通過自學一門計算機編程語言進入互聯網行業 想改變自己苦逼的命運

問了達內的培訓 大概一萬多 太貴了 而且我沒文憑 不包就業 TnT
所以決定自學 那麼問題來了
我該學習哪一門編程語言呢?(C C+ Java android iOS php 這些是我知道的語言名稱 僅此而已 )
我應該怎樣進行自學呢?工作之餘每天可以學習4到6個小時(極限)
我要應該注意一些什麼呢
在三年前 17歲的時候 自學過一點編程
但是因為不知道那些專業術語變大的什麼意思 在加上當初沒有 如今這麼強烈想要通過學習改變命運的意識 導致自己放棄了 求各位大牛們推薦一些計算機相關的書籍 求各位大神指點迷津 小弟感激不盡
但願十年之後的我30歲能通過今天的努力年薪30萬
提問語序可能比較亂 標點符號都不打不好一句話
20的我。不甘平庸 想通過自己努力學習 進入IT行業 從而實現對自我命運的改變 我要怎麼做?

2016年5月6日更新
看完了所有的答案,感謝各位回答問題的知友 還有那個C/C++的資料 我確實沒有因為 網盤被綁定手機號了 我也上不去
只要想學 初步了解了行業 定下學習計劃
也不在乎那些資料 網上那麼多學習的網站方法 關鍵還是執行力吧
買了一本這個書 果斷還是看不懂 書上第一個代碼 是用printf 函數 按照書上說的下載了vc 6.0++ 卻不知道如何運行 猜測運行的結果應該是在黑框上顯示 hello world 一樣的吧 然而大家讓我用Vs 2012寫代碼 5G下載了 居然無法安裝 要軟碟機光碟刻錄還是什麼的 我連個軟體都不會裝 (大寫的哈哈哈)已經放棄C
加了一個成都的程序員交流群 和他們吹牛 了解這個行業 因為IT 很廣泛 比我想像的廣闊太多太多
目前規劃的是自己想做前端工程師(個人理解是做網站頁面 寫不是很複雜的代碼 面對對象的 我比較容易上手 容易理解的)貌似終極目標是 全棧工程師 (我都不知道是幹啥的 反正很厲害)
學習計劃是 學習 計算機的各種基礎 比如硬體 計算機發展史 編繪語言(已經學習 理解了二進位 十進位 十六進位的轉換 )這些我都想初步學習了解一下 我覺得這是特基礎的東西 我必須得知道 得理解
然後學習 html css等等的 , 還有我學會了用谷歌 (手機學會了用vpn) 電腦翻牆以前李毅吧進facebook 就會用了
反正我知道路還很長 並且也不急於求成(關鍵是存足夠的錢在 成都租房 買電腦 以及各種事情 至少需要 一年多的時間存錢 ) 計劃一年半之內可以入職一家公司吧
建了個自學程序員交流群 553835484


說點可操作的建議吧。學編程最重要的是實踐,就是寫代碼、看別人寫的代碼、再寫代碼,你看再多的書,聽再多的公開課,不寫代碼,你還是不會編程。但是寫代碼也要講究方法循序漸進,不能剛學了幾天語法,就想寫個操作系統什麼的,樹立這種不切實際的目標只會讓你的自信受到嚴重打擊。我學習一門新的語言,都有一個三步走的計劃:

  1. 學好語法以後,開始寫一些小程序。所謂小程序,我的定義就是100行以內就能解決的問題,其它答案里有人建議的TopCoder有很多這種題目,另外我推薦Problems | LeetCode OJ,還有我用Python寫的答案(RealHacker/leetcode-solutions)。做這些題目不但能夠熟悉語言的語法,而且可以操練一下數據結構和演算法,畢竟這些都是編程的基本功,另外對於要找工作的同學,這上面的題目刷一遍對於技術面試很有幫助。
  2. 然後,就可以找一些中等規模的實際問題來解決。這一階段的目標不只是語法,你還需要了解這個語言的標準庫和一些常用的第三方庫,清楚這種語言常用的編程範式(過程式、面向對象、函數式)。我推薦Github上面的這個repo:A list of practical projects that anyone can solve in any programming language. 這裡面的項目都不大,但是涉及面比較廣。比如:
  • 寫一個FTP客戶端程序,你需要了解網路編程的一些知識。
  • 寫一個帶進度條的下載器,你需要了解多線程,也許還需要圖形用戶界面編程。
  • 寫一個簡單的論壇程序,你需要了解web編程,資料庫訪問等等。
  • 寫一個給圖像添加數字水印的程序,你需要了解最基本的圖像編程。

這個也不錯:Exercism.io: Crowd-sourced code mentorship.

這些程序工作量也不大,加上學習各種庫的時間,應該最多一星期就可以完成。不要小看這些程序,很多龐大的軟體項目最開始也就是幾百行的程序而已(參見GitHub - aosabook/500lines: 500 Lines or Less)。寫好以後,不用沾沾自喜,要知道這些都是被人發明過幾百遍的輪子,找一個完成同樣功能的成熟開源程序,讀一下它的源碼,並和自己的代碼比較,看看別人的寫法好在哪裡?有哪些設計模式可以學?

3. 經過上面的歷練,你應該對這種語言的編程有些感覺了。前兩步都是Single Player Game,但是軟體是一個群體性工作。所以接下來可以參與一些實際工程:找一份用這種語言編程的工作,或者參與一個開源項目。這一階段的目標就不局限於技術本身了,你要了解軟體工程方面的很多知識,比如怎麼和別人合作開發、開發流程、代碼風格、文檔、以及軟體架構等一些宏觀的東西。


經過上面三步,你應該已經是這門語言的一個合格程序員了。

但是別指望21天就能打完這三關,10年還差不多。最後送上21天學會C++的秘籍:

插播廣告, 歡迎關注面向程序員的公眾號codergroup:

http://weixin.qq.com/r/njq-p8vEHZZirY-E92_M (二維碼自動識別)

大家一起學習進步。


和題主情況差不多。不過我比題主強的地方在於我是高中(笑

我是15年1月初開始自學的。現已入職一家創業公司。終於步入了自己嚮往的行業。
所以我結合自身的經歷來簡單說下。

當初想學編程是源於這篇文章編程入門指南 v1.4 - 蕭井陌的專欄 - 知乎專欄

最終決定選擇了前端開發(html,css,js)

歷時一年,磕磕絆絆最終實現了成為程序員這個目標(雖然很水(逃

自學中注意的事項我認為有這幾點。

0.不要在無意義的問題與爭論上浪費時間。

比如說新手應該選擇什麼編譯器,XX是最好的語言。這個不僅僅是在自學編程上適用。在日常生活中也要注意。要時刻牢記你的目標。記住最重要的事情就是要向你的目標一步步靠近

1.不要以視頻教程為主。

初期接觸編程,確實看視頻是個快速的方法。不像看書那樣枯燥乏味(相對來說。)但是,看視頻我認為是很被動的學習。你所學習的東西終究只是別人的觀點和思路。
取乎其上,得乎其中;取乎其中,得乎其下;取乎其下,則無所得矣.
看視頻久了一個通病就是你以為你會了,但實際要自己寫卻寫不出來。(別問我怎麼知道的,都是淚
所以最主要的方式還是通過書。以視頻為輔(比如說看書看累了,就換個視頻看
關於書單
相關的書單推薦知乎上有很多,可以根據自己想學的語言來選擇。在此不再贅述。
關於視頻
慕課網在這方面做得很不錯。推薦(請慕課網相關人員支付廣告費用

------------------------------------
@Dark B B 在評論區提及

每個人的學習方法都不一樣,但像題主這樣沒有任何基礎平時又沒有看書習慣(猜的)的人想直接從書上獲得知識是比較困難的。我的建議是:先找一套比較全面的視頻教程從頭到尾過一遍(花不了多少時間),能記多少算多少。然後再看書學習能吸收得更好。
這個時候就可以邊學邊敲代碼了。

我也比較贊同剛開始可通過看視頻來快速找到感覺。然後進一步逐漸以書本為主。
----------------------------------

2.coding,coding,coding


一定要多敲代碼!
一定要多敲代碼!!
一定要多敲代碼!!!


不論是看書還是看視頻,看到代碼就敲幾遍,過幾天不藉助書或者視頻看自己是否能獨立實現。總的來說就是多敲代碼別只是停留在看這裡。這個是重中之重
某個大V的一個回答中有這樣一個觀點,編程也是一項技術,所以只要是技術都是需要練習,練習再練習的。希望將來你也可以淡然的說出我亦無他,惟手熟爾
而且你敲過的代碼可以託管在github上為你將來突破學歷限制找工作做好鋪墊。你想想啊,你沒有學歷,自帶負BUFF。憑什麼別人選擇你啊,只有通過你的專業,你的技術來打動別人。

3.少加點QQ群之類的


QQ群雖然有一定的幫助,比如遇到不會的可以群里討論,但是只要保留1-2個常用的就好。別把你有限的時間浪費在聊天扯淡上。你要知道你現在唯一的財富和資本就是年輕。

4.堅持和立刻行動


Yesterday you said tomorrow


看完了答案就開始吧。當你吟誦起古老的Hello,World咒語時,你想要的未來正在降臨。而且肯定會降臨。

我可以肯定你會猶豫,會痛苦,會拖延,但是堅持下來就好了,並沒有那麼辛苦和難過。這個世界上唯一不會辜負你的就是你自己花費的時間。念念不忘,必有迴響。偶爾的頹廢和迷茫可以的,偶爾的偷懶和短暫的擱淺都是可以的,並不是罪大惡極,不要給自己太大的心理壓力。但是不能長期如此。

公主還在遠方等待,你要屠龍。

這麼好的故事,你可別演砸了。

不要只收藏不點贊啊。我想要贊QAQ


2017-9-19 此後會更新一些高質量的博客。

---------------------------------------------------------------------------------------------------------------------

大家的支持就是動力,2017-7-26 更新了一些學習資源

收藏比贊多系列~

-------------------------------------- 2017-3-5 update -------------------------------------------------------

unknown unknown,關於從本質上提升自己的能力,可以看一下cat chen的回答,裡面推薦的《高效能人士的7個習慣》很贊

大四學生,想通過兩到三年的積累去 Google 工作,應如何準備?

當看到上面的回答後,怎樣培養自己的能力?除了多思考資源、流程、優先順序和構建自己的知識脈絡外,還要多造輪子,拆輪子,多對比

什麼才算是真正的編程能力? - 劉賀的回答 - 知乎

在拆輪子,造輪子的時候,不免得要閱讀別人的源碼,什麼才是正確的閱讀源碼的姿勢?

帶著自己對這個輪子的假想,有目的性地閱讀

程序員閱讀源碼是一種什麼心態?源碼對編程意義何在?如何才能更好閱讀代碼? - 馮東的回答 - 知乎

我們少不了要學習多門語言,或工作需要,或個人進修,我們怎樣快速上手一門編程語言?

孟岩:快速掌握一個語言最常用的50%

少不了更新一些資源

前端的奇舞周刊: 奇舞周刊

OpenDigg - 挖掘優質開源項目庫

IBM developerWorks : 技術主題

《技術之瞳-阿里巴巴技術筆試心得》 http://product.dangdang.com/24057987.html

----------------------------------------------------------------------------------------------------------------------

一、各大名校的公開課

  • Coursera: https://www.coursera.org/
  • 網易雲課堂大學計算機課程: 大學計算機專業
  • 學堂在線計算機課程: 學堂在線-最大的中文慕課(MOOC)平台
  • 哈佛大學公開課-計算機科學cs50: 哈佛大學公開課:計算機科學cs50_全20集
  • 麻省理工學院公開課-計算機科學及編程導論: 麻省理工學院公開課:計算機科學及編程導論
  • 很多名校的公開課,我就不一一列舉了

二、學完上面的基礎,想學PHP,JAVA,C++等?

IT學習資源網站

  • 慕課網: http://www.imooc.com
  • 麥子學院: http://www.maiziedu.com
  • 實驗樓: http://www.shiyanlou.com
  • 掘金: http://gold.xitu.io/explore/all
  • 開源中國: https://www.oschina.net/
  • OpenDigg: http://www.opendigg.com/ ~new
  • V2EX: https://www.v2ex.com/ ~new
  • StackOverFlow Documentation: https://stackoverflow.com/documentation ~new
  • 眾成翻譯: http://zcfy.cc/ ~new
  • 牛客網: 牛客網-專業IT筆試面試備考平台,最全C++JAVA前端求職題庫,全面提升IT編程能力 ~new

學習路線和方法(安利一波蕭大的指南)

  • 編程入門指南: 編程入門指南 v1.4 - 蕭井陌的專欄 - 知乎專欄

在線練題 ~new

  • hackerrank: www.hackerrank.com
  • PKU OJ: http://poj.org/
  • leetcode: https://leetcode.com/
  • lintcode: http://www.lintcode.com
  • 牛客網: https://www.nowcoder.com

微信公眾號/訂閱號(這個是一有零碎時間就可以看的)

  • 前端大全: FrontDev
  • 前端早讀課: FeZaoDuKe
  • 演算法愛好者: AlgorithmFans
  • 奇舞周刊 ~new
  • 聊聊架構: archtime ~new
  • W3cplus: w3cplus_12
  • 新智元: AI_era ~new
  • 數據挖掘入門與實戰: datadw ~new
  • IT圈子: IT_Quan_Zi ~new

想學前端或者MEAN全棧套路的可以去看一下FCC(安利一波FCC,著實不錯)

  • FreeCodeCamp: Learn to Code and Help Nonprofits
  • FreeCodeCamp中文: Learn to Code and Help Nonprofits

三、自學的心得

1、一定要把基礎打好,也就是我上面提到的大學公開課,儘管我在一些免費的IT學習社區學得前端或者PHP比較深,也是要回過頭來打好基礎,因為深入到底層還得是數據結構,網路,操作系統那些

2、學習過程中注意總結,具體可以去看一下費曼技巧:號稱終極快速學習法的費曼技巧,究竟是什麼樣的學習方法? - 吳笛(pimgeek) 的回答

3、視頻教程可以讓你快速掌握知識,但深入的話還得看書和做項目

4、可以嘗試看英文文檔和網站,例如W3C的文檔,StackOverFlow,Quora等

5、身心要健康,因為身體是一切革命的資本啊!

6、切忌浮躁

7、給答主點個贊,從此編程路上無BUG,哈哈

8、複雜系統總是源於簡單系統的演化,不用考慮太長遠,合適現有業務就好,之後再拓展

9、雖然說給帥答主點個贊,無bug,但是bug總是難免的,要耐心去解決,最後總結出錯的原因,堅持下來就有快速排錯的能力了

10、在沒有頭緒的情況下,可以把問題闡述一遍給同事,朋友或家人,很多時候會靈光一閃

11、計算機是門應用型為主的學科,以項目為驅動,不斷地編碼與總結,從此踏上幸福快樂地生活~

12、學而不思則罔,思而不學則殆

13、博學、審問、慎思、明辨、篤行


自學編程,我有經驗。

第一,選題。就是選擇學習的主要語言。這個環節最主要的其實並不是到底哪種語言,而是選擇一門語言,就堅持學下去,不要朝秦暮楚,左右搖擺,選擇恐懼症犯了。這樣,我們的大部分時間都花在選擇比較上了。其實,任何一門語言,都會有其用武之地,不在乎語言本身,而在乎我們把專門語言用的怎麼樣。 但選擇一門最近火熱的語言,可以更容易的進入到這個行業。

第二,定製學習路線。自學最麻煩的問題,就是不知道該學什麼,感覺A要學,B也要學。因此,定製學習路線很重要。學習路線的獲取,可以聽取周圍大咖的建議。如果沒有,則可以找培訓機構的課程表來看看(PHP,前端,Python 我可以幫忙分享學習路線) 。
自學的學習路線一定要足夠精簡,因為你沒有大量的時間。一定要夠入行就可以了,更多的知識等到入行後再學習,完全可以。
學習方式通常有兩種。第一從底層學習到應用層。第二從應用層學習到底層。
第一種的好處就是紮實,可以做到處變不驚,知其所以然。但是會花費大量的時間。
第二種的優勢是,可以快速的看到學習的效果。但可能對其內部實現很迷茫。
對於小白這種自學的人員來說,更推薦第二種,先看效果,保持興趣,入行之後,再學習底層,加深了解

第三,定製學習時間計劃。業餘時間自學,與脫產全日制學習,最大的區別,就是你沒有整塊的時間投入到學習中。這對於入門的人來說還好,但是對於沒有入們的人來說,就很困難。必須要要先集中一段時間,先入個門。如果想學會,而不是了解即可,必須要堅持學習,比如每天晚上8-11點是學習時間,那麼就一定好堅持,除非地震,除非媳婦生小孩,要不一定要堅持學習。實在不行,即使稍微減少點時間也好,千萬不能停止。一旦停止,你就要花大量的時間去思考之前的進度,去銜接。就耽誤時間了。說穿了,還是積跬步才能之千里。

第四,學習資料獲取。如果有系統的學習資料就非常好了。現在有很多的免費的教程,圖書,都可以作為學習資料。但現在也面臨一個問題,就是資料太多,落花漸欲迷人眼,無從選擇。因此還是那句話,試著選擇一個大眾評論好的就可以啦,不要天天在對比資料的優劣,把你選擇學好就ok啦。(做個廣告,我的微信公眾號(小韓說理 或 xiaohanshuoli),知乎專欄,會分享一些原創的教程資料)

第五,快速入行。實際工作中學習的速度,要遠比自學的速度快。你可以經常參見初級程序員面試,如果有機會入行,立即入行,可能前期收入少些,但是你的成長會非常快的呢。

第六,別再看怎麼自學,這類的成功學的帖子了。就當我上面的都是廢話。關了網站,關了手機,去看一會你已經準備好的教程吧。該開始了,選擇時間已過...。
如果你是學習(PHP,前端, Python)的話,可以持續關注我,甚至包含個人微信公眾號(小韓說理,xiaohanshuoli)都可以。


沒了。加油!

一家之言,歡迎補充,拍磚。

搜索微信公眾號關注,web技術分享。
小韓說理,xiaohanshuoli


十年前,我大二創業期間自學過編程。

如果你想學編程的話,這12個網站可以幫助你,它們都提供了免費的課程供你學習,因此你無需擔心費用的問題。

1.Codecademy

其中,Codecademy是最受歡迎的免費編程學習網站之一。事實上,已經有超過2400萬人通過這家公司的教育模式學會了編程。Codecademy開設的課程有HTMLCSS,JavaScript,jQuery的,PHP,Python和Ruby。

2.Coursera

Coursera成立於2012年,如今已經成長為一個主要以營利為目的的技術教育公司,現提供來自119家機構的超過1000門課程。如果你想要獲得證書,可能需要為一定的課程付費,這裡也有一些來自不同大學的免費編程課程,如華盛頓大學,斯坦福大學,多倫多大學和范德比爾特大學等。

3.edX

edX是另一個領先的在線學習平台,重點是它不是以營利為目的,而是開源的。edX是由美國哈佛大學和麻省理工學院於2012年聯合創辦的,所以你將會在這裡學習到先進的技術和理論。如今,edX已涵蓋了60所學校。此外在這裡,你應該不會錯過哈佛大學的計算機科學導論的,免費的哦。

4.Udemy

Udemy成立於2010年,是一個在線學習平台,可以幫助你改善或學習工作技能。雖然有部分課程需要付費,但也有大量的免費編程學習課程,通過視頻講授。

5.aGupieWare

一個獨立APP開發者從美國的一些領先機構調查了計算機科學程序,然後基於斯坦福大學,麻省理工學院,卡耐基梅隆大學伯克利分校和哥倫比亞大學提供的免費課程,它創建了一個類似的課程。該程序分為15個課程:3個入門課程,7門核心課程和5個選修課程。

對有潛力的程序員來說,這簡直是一個完美的入門程序。(本段感覺譯的不是很好,有其他見解還請賜教~)

6.GitHub

這個我想大多數開發者都知道就不多說了,作為開源代碼庫以及版本控制系統,Github擁有140多萬開發者用戶。

7.MIT Open Courseware

如果你已經學過基礎知識,並向更深入的層次探索,比如探究背後的編碼理論等,麻省理工學院提供了包括如計算機科學導論,Java編程介紹和C語言編程等免費課件的網站,值得好好利用一下。

8.Hack.pledge()

這是一個開發者社區,其中聚集了一些知名度比較高的開發者,如Bram Cohen,BitTorrent的創始人。在那裡,你可以從一些大牛那裡學習到一些編程技巧。

9.Code Avengers

Code Avengers提供了很多有趣的和互動性的程序設計課程,教你如何編寫遊戲,應用程序,以及如何使用JavaScript,HTML和CSS創建網站。每門課程只需要12個小時即可完成,並且支持英語,俄語,荷蘭語,西班牙語,義大利語,土耳其語和葡萄牙語。

10.Khan Academy

Khan Academy由教育家薩爾曼汗創建於2006年,是其免費在線學習機構之一。這裡提供一步一步的視頻教程,你可以在這裡學習如何使用JavaScript和ProcessingJS編寫動畫,遊戲等,或者學習如何使用HTML和CSS創建網頁。

11.Free Code Camp

在這裡,你可以學習HTML5,CSS3,JavaScript,資料庫,DevTools,Node.js,Angular.js和Agile的知識。你甚至免費創建自己的應用,以鍛煉自己的編程技巧。總之,在這裡你可以學習到真正的技能,並且對你解決實際中的問題十分有幫助。

12.HTML5 Rocks

為對抗蘋果的HTML 5,谷歌於2010年推出該項目。該網站提供了大量的教程,資源以及最新的HTML5更新。它是開源的,因此開發人員可以盡情使用HTML5代碼。由於這比大多數課程都要先進,因此在這裡你肯定會比沒來之前獲得更多的知識和經驗。

學習編程常常需要看一些比較昂貴的書籍和課程,但是現在由於互聯網的發展,市場上有很多可以免費學習編程的網站,所以費用問題就不用太擔心了。

——————————————————————————————————————

看到大家對這個問題這麼感興趣,我再整理幾個自學的網站給你們吧。

1、麥子學院

麥子學院 - 專業IT職業在線教育平台|ui設計培訓|python培訓|php培訓|web前端培訓

OC課程是麥子學院站內自學課程,開發者們可以自主選擇一門感興趣的課程開始學習,OC課程包含:雲計算,用戶交互設計,網路工程,計算機安全、JAVA企業實戰、IOS7、UI設計、微信營銷、產品經理、移動互聯網營銷等一系列相關課程。

2、翼虎網 (翼狐網)

翼狐網(翼虎網)-學設計,上翼狐!

翼虎網是以視頻點播為主要特色的藝術在線學習平台。翼虎網的教程內容覆蓋了3DsMax、Maya、Photoshop、Painter、Zbrush、Bodypaint、Realflow、Houdini、After Effects、Premiere、Vray等所有主流應用軟體和插件工具,涵蓋動畫、模型、材質、渲染、特效、影視後期及2D概念設計、插畫、漫畫等所有創作主題,囊括了當今電腦時代中所有的視覺藝術創作活動,如三維動畫、影視特效、平面設計、多媒體技術、建築設計、工業造型設計等!學軟體的好去處!

3、朱峰社區

朱峰社區_3dmax教程_maya教程_3dmax視頻教程――中國最好的3dmax教程網

朱峰社區的課程方向為:遊戲、建築、動畫、影視方向。裡面擁有眾多原創作品。是社區會員作品交流的平台。大家把自己的作品上傳到這裡大家互相討論交流。並有專業老師進行評論和評級。

模型庫:提供模型展示和交流的平台。會員可以把自己手中收集的模型上傳到這裡進行交流。是很好的學習平台

4、咪咕學堂

咪咕學堂 - 學海無涯,咪咕一下

咪咕學堂的課程覆蓋職業教育、英語外語、中小學、幼兒早教四大主流垂直學習領域。他擁有強大互動平台:以即時通信為基礎,集成微博Feed功能,提供完善的好友、群組、圈子等社交互動功能。所以是學習社交兩不誤啊!

5、51CTO

51CTO.COM - 技術成就夢想 - 中國領先的IT技術網站

51CTO主要是為CTO、CIO、IT技術經理、系統工程師、網路工程師、安全工程師、資料庫工程師、開發工程師、項目管理人員、網路管理員等IT技術人員搭建全面、綜合、專業的互動媒體平台。所以你要是理工男,這個自學網站不可錯過!

6、i春秋學院

http://www.ichunqiu.com/

i春秋,是新銳的信息安全在線教育品牌。針對信息安全學習的特殊性,獨創了的線上聽課-實驗-助教-評價的實訓性學習環境。把複雜的操作系統、工具和網路環境完整的在網頁進行重現,為每節課程都提供一個完全貼近實際環境的實驗平台,學習助理小i還會記錄並指導你操作的所有步驟,同時為你的操作進行評分。安全、高效、好玩,極大的提高了學習效率,幫助IT技術從業人員或愛好者以及企業信息安全主管學習知識、磨練技藝並挑戰難題,寓教於樂中提高實戰技能。

7、網易雲課堂

網易雲課堂 - 領先的實用技能學習平台

相信大家對這個自學網站不陌生,他是由網易公司打造的在線實用技能學習平台,該平台於2012年12月底正式上線,主要為學習者提供海量、優質的課程,用戶可以根據自身的學習程度,自主安排學習進度。立足於實用性的要求,網易雲課堂與多家教育、培訓機構建立合作,課程數量已達4100+,課時總數超50000,涵蓋實用軟體、IT與互聯網、外語學習、生活家居、興趣愛好、職場技能、經融管理、考試認證、中小學、親子教育等十餘大門類。

8、慕課網

慕課網

程序員的集聚地,看到這些是不是覺得很棒咧。慕課網是垂直的互聯網IT技能免費學習網站。以獨家視頻教程、在線編程工具、學習計劃、問答社區為核心特色。在這裡,你可以找到最好的互聯網技術牛人,也可以通過免費的在線公開視頻課程學習國內領先的互聯網IT技術。

9、極客學院

極客學院IT在線教育平台-中國專業的IT職業在線教育平台

極客學院是中國android開發在線學習平台,這裡面有幾十名國內頂尖的有多年項目和實戰經驗的Android開發授課大師,精心製作了上千個高質量視頻教程,涵蓋了Android開發學習的基礎入門、中級進階,高級提升、項目實戰開發等專業的android開發課程。極客學院背後是一支瘋狂喜歡編程,狂熱開發移動app的超有活力團隊。他們希望通過最新的,高質量的,專業實戰的在線開發課程打破傳統的編程學習模式,以新一代的編程學習模式幫助開發者更快更好的學習Android開發,幫助開發者通過技術實現自己的理想。

10、開課吧

開課吧-互聯網從業者技能學習社區

開課吧是專註於泛 IT 學科的綜合在線教育服務平台,集在線課程的創意、設計、前期拍攝、後期製作、 綜合運營為一體,面向個人、高校和企事業單位提供在線產品研發諮詢服務、在線課程製作服務、MOOC 平台服務、導學服務和認證服務等綜合在線教育解決方案。

11、傳課網

學知識,上百度傳課

傳課網裡面的內容比較多,也比較雜,但是裡面還是分類的很清楚。傳課網由國內資深互聯網人士創立,骨幹創業成員出自騰訊、金山等國內頂尖的互聯網企業。是中國教育領域新興的在線教育平台,致力於用互聯網的方式來打破中國教育資源地域分布的不平衡,精心打造在線課程發布網站、直播互動教室,提供在線直播互動的一站式全方位的專業教育服務。

12、第九課堂

第九課堂-產品經理廣告文案訓練營

第九課堂專業提供互聯網產品經理、產品運營、數據分析和廣告營銷文案等新興互聯網職業培訓。課程內容包含,廣告文案訓練營、產品經理訓練營、數據分析訓練營、運營實戰訓練營。

13、我要自學網

我要自學網-視頻教程|免費教程|自學電腦|3D教程|平面教程|影視動畫教程|辦公教程|機械設計教程|網站設計教程-我要自學網

「我要自學網」是我最早接觸的一個自學網站,裡面的軟體教學很適合大學生,每節課過後還會提供原素材讓學員回去下載來重新操作。我要自學網是由來自電腦培訓學校和職業高校的老師聯手創立的一個視頻教學網,網站里的視頻教程均由經驗豐富的在職老師原創錄製,同時提供各類貼心服務,讓大家享受一站式的學習體驗。網站意在把學校的專業教育帶給更多學子,網站的目標是「做出最好的視頻教程,提高全國人民計算機水平」。

跨界學習是我們如今社會的趨勢,用老話來說就是:技多不壓身。多一個技能多一條出路,祝你在自學道路上越走越好,掌握自己的核心技能,不只是優秀,還要成為不可替代的人!


1、學習的方向。

自學,最常見的一個問題是不知道方向。所以類似問題是最有市場的:

  • 「我究竟該學什麼?」
  • 「學什麼更有前途?」
  • 「php和java哪一個更好?」

……

對初/自學者而言,這個問題非常頭痛。除了給一個我已有的回答:如何轉行(自學/培訓)到IT/編程/互聯網/軟體開發/?我只能講故事了(完整的故事在這裡:《折騰》三卷:孕育 (初稿)哪裡可以看到?)。

我和很多人不一樣,我一開始學編程的目的就很明確:學做網站。甚至連要做的網站又哪些功能哪些要求,我都心中有數(大致上)。所以這個問題對我而言,不是那麼麻煩。但和我一起學的同學們,就有很多故事啦。

我進班裡的時候,同學中間已經出現了分化,有一些同學已經搞不懂跟不走了,有一些同學能勉強跟上進度,還有少數的幾個同學比較優秀。我便努力的融入了最優秀同學的圈子。

圈子裡有一個男生,他大學本來的專業就是計算機,不知道為什麼又要來培訓班裡「回道鍋」。他自己在做「遊戲代練」(是這個詞吧?就是弄個「腳本」整很多台伺服器打遊戲,然後賣打出來的裝備),但這個「腳本」是他花錢買的,他的理想就是有一天自己能寫這種「腳本」。所以他開始忽悠我們學「windows內核」,我笑而不語,但另外一個女同學中招了。

培訓班的課開始聽不下去了。「學這些都沒前途」,「都是用別人(指微軟/甲骨文等)的東西」,「沒有一點技術含量,是個人都能學會,你知道吧?」……

那時候我只是覺得她這種說法有點不對,但只是覺得,也沒有什麼信心或者能力反駁她。我只是問了一些很淺層次的問題:「是個人都能學會?不至於吧?我學起來都還感覺有些吃力的……你會不會?」她的答覆是:「唉呀!我只是不想學了而已。這些東西都很簡單的……」

我覺得這個邏輯不能成立,你都不會了,你還說她很簡單?

然後她就在她「鑽底層」的路上一路狂奔,從c++到c再到彙編……買了一本很厚的書,《windows內核》原理之類的書,當成武林秘籍一樣的供著,剃了個光頭(真剃了),要閉關修鍊……

另外還有一個女孩子,斯斯文文的,她就沒什麼野心,跟著老師的腳步走。無非就是聽課上機,看得出來,她還是有點吃力,但她就是認真。我們這一學期的期末設計還是有點複雜的,我沒想到她還真是一行一行的把代碼給敲出來了,跑起來了(我都沒做完,呵呵)。

然後她被我忽悠,下一學期也不學了(省學費),直接去找工作。其實找工作這事,只要你一直找,要求不要太高,總是能找到的。好像她最開始一個月600塊,這樣慢慢的加,一個公司一個公司的跳,到上海的時候,她能拿到5/6K了。而前面那個要學「別人都不會」的「底層」的同學,這時候在朝天門賣衣服呢。

我並不是說學「底層」不好,就我的了解,總有一些人要靠c、彙編、操作系統之類的知識吃飯的,比如開發單片機的同學?但你一旦確立了這個方向,你就要矢志不渝的堅持下去,最後到朝天門賣衣服這事……怎麼說呢?我覺得就學習編程而言,還是一個失敗。

為什麼即使「削髮明志」,都沒有能堅持下來?我覺得還是門檻太高。

2、入門的門檻。

對自學者而言,入門的門檻不宜設得過高。我們通常都會在做事之前高估我們的意志力,而在事情完成之後低估事情的難度。所以就會造成這樣一種現象:過來人會說「這也沒有什麼難的啊」,於是新人就信心滿滿的上路了。

典型的就是英語,你去問大部分英語學得好的人,他們都會說「不難啊,我就怎麼這麼就學好了」,聽得你滿眼冒星星口水流了一地;少部分人會給你講一個激昂悲愴的勵志故事,聽得你熱血沸騰……然而,前面真的好大一個坑。

評價自學編程的難度是非常困難的,因為對個人而言,「難度」是一個很主觀的東西。但我的建議是:適當的高估總比低估好,尤其是在入門的時候。

所以我在如何自學成為程序猿?中建議不要從枯燥晦澀的「基礎」學起,而是從一些更簡單有趣的應用開始。學習的曲線不是那麼陡,爬起來要輕鬆一些,可能反而走得更遠。

我在培訓班其實學的是java,但自己鑽研學習,果斷選擇.NET,理由其實很無賴:.NET更容易上手一些。安裝一個Visual Studio就可以開始開發了,java、php配環境都不知道要搞多久。而當你達到一定的程度之後,回過頭來再了解java、php之類的,也不是那麼難了。

3、學習的方法。

我一直認為,計算機是一門「實踐」科學。意思就是:管你吹得天花亂墜,是騾子是馬,牽出來遛遛。不明白這一點,一是會被人忽悠,比如我開始應聘的那幾家公司,其實我就生了一張嘴,會吹而已;二是會走彎路,甚至走不下去。

很多同學,尤其是女同學、文科生,把學編程當成了學歷史政治一樣,一本書上畫滿了圈圈叉叉,但一學期完了,電腦都沒開過幾次。這樣是不可能學好編程的。

必須動手!

哪怕你照著書上的代碼敲一遍,也比你把代碼都背下來強。事實上,你照著書敲一遍也可能跑不起來——你的環境沒配對,上下文不匹配等等。能解決這些問題,才是你的能力。

還是以英語為例,要想學好英語,你一定要多用;要想學好編程,你也一定要多用。編程語言也就是一門語言,語言不用就不可能學好。

這也就是為什麼「上班一個月當你自己學一年」的原因之一。其實如果你自己動手能力強,自學一個月才當你上班一年。我的所有編程方面的知識,90%是自己在家學會的,因為在公司翻來覆去就那點事,沒什麼新意。

關鍵不在於有沒有教室、在不在公司,而在於你怎麼學。

++++++++++++++++++++

沒想到這麼多贊。這兩天帶團隊,又想到的兩點,補充上來。

4、對錯好壞的判讀

入門之後,大致有兩個階段:

  • 能做出來。各種需求我大致都能滿足,程序能夠跑得起來,能達到這個水平,就差不多中級了。
  • 能做得好。這個就非常難——尤其是對於自學的同學而言(其實科班的也好不到哪裡去,呵呵)。

能做出來,不一定就意味著你做得對。剛入行的程序員,尤其是腦瓜子稍微聰明一點的,有很多「天馬行空」的想法,而且你放手讓他們弄,他們說不定也真弄得出來,於是他們就沾沾自喜。這個問題非常麻煩,因為要和他們解釋清楚「明明我的代碼都跑起來了你還說我這樣不行」是一件非常痛苦的事。

下一個問題更麻煩!能做得好,首先要知道怎麼才算好。這不是開玩笑,也不是我在玩文字遊戲。這是一個業內非常嚴重,非常基本,但又被嚴重忽視的一個問題。不釐清這個問題,你的前進就沒有方向,很可能一直在原地打轉。

想來想去,也只有幾個建議:

  1. 繼續保持虛心的態度。翅膀還沒長硬呢,真的。半壺水,才響叮噹。
  2. 夯實基礎,擴大眼界。關於基礎,我推薦參加一次「軟考」(見:中國計算機技術職業資格網),一些理論性的東西,考試,有標準答案,你才能有正確反饋;擴大眼界,我推薦廣泛閱讀,尤其是看各種專業書籍。
  3. 翻來覆去的思考,有機會謝謝博客之類的,多交流吧。也只能這樣啦?好像。

(以下:著寫著發現好像跑題了,捨不得刪,就放著吧。)

可參考我的博客:架構之路(一):目標

前文說過,評價架構好壞是一個很主觀的東西。既然大家寫出來的程序都能跑,憑什麼就說你架構好,我的架構就差?拿出來大家評評理,張三說好,李四說不行,王五說將就……究竟誰說了算?現在已經不是一個迷信權威的時代了,所以不管你多少光環加持,你都得說出子丑寅卯來,都得服眾才行。
我覺得,這種現象的產生,拋開「同行相輕」和「流派之爭」之類無厘頭的東西,一個很重要的原因就是沒有明確判斷標準。所以在網上,常常就出現這樣一種很熱鬧很奇葩很無奈的現象:我和你說性能,你跟我說安全;我跟你說安全,你跟我說擴展;我跟你說擴展,你跟我說維護;我跟你說維護,你跟我說成本……

但這個(架構)問題,我覺得轉行/自學的同學更有優勢。因為他們的視野更開闊,軟體工程其實是計算機技術和工程管理相結合的一門學科(個人樸素認識),它的很多著眼點已經遠遠的超出了計算機科學範疇。很多科班出身的同學還抱著「程序等於數據結構加演算法」的老觀念不放,就是沒有認識到這一點。

舉個例子吧。航空母艦肯定是鋼鐵造的,而且我們可以假設(這幾乎是一定的)航母上的很多關鍵技術突破就卡在了材料上,那是不是冶金/材料學就是航空母艦的基礎?那發動機呢?指揮系統呢?飛機升空降落呢……

軟體開發就像造航母一樣,其實更多的是一個「拼湊」的過程,各種各樣的「零部件」,組裝起來,修修改改,磨合測試,就可以用了。但這絕不是一件簡單的事,工程學管理學,是非常複雜的。難度不亞於基礎科學的突破。

++++++++++++++++++

2017年9月11日 補充:

歡迎大家 註冊·一起幫,我自己個人開發的一個網站,開發過程全程直播並有錄像。

設立的初衷就是為了降低自學編程的難度,尤其是一些對新人來說「莫名其妙的」問題(比如配置不對、連不上資料庫之類的),問題本身沒多少技術含量,但確實新人自學過程中的攔路虎,自己瞎折騰不知道要花多少時間,但如果有人遠程桌面幫忙看看,很快就可以解決。

有興趣的同學註冊看看吧?

++++++++++++++++++

開設了:項目管理和架構之路 - 知乎專欄,歡迎光臨。

—— 2016年9月18日

++++++++++++++++++


我作為一個完全自學摸爬滾打的前端屌絲,不是技術大牛,好歹是靠自學轉行吃上了這碗飯,以前學藝術的,沒數學底子,也沒工科基礎。來跟你分享一下我的學習歷程。
講道理,一些高票答案列出了很多學習資源,雖然看起來有用,但是對題主可能沒什麼幫助。畢竟什麼演算法編譯原理數據結構這種東西讓新人去學實在有點操蛋。
順便來實名反對一下有個叫暗夜的答主的回答,像您這種二半吊子百度貼吧水平就別特么來誤人子弟指引別人了好么?打眼一看也是一萬多粉絲的人了,結果回答全是自問自答的硬廣,知乎怎麼刷粉的教教我唄,我想當網紅,假的也成。都啥時代了還在比哪個語言高大上,哪個語言low,您確定您丫會編程嗎?

說回正題,我的學習路線是,
1.最開始學的是php,寫留言板。知道了http請求。GET,POST。
2.留言板太丑了,學了css美化一下留言板。
3.簡單學了一下mysql,真正能留言了。了解了最基本的資料庫操作,還有cookie和session.發現其實很多牛逼的網站無非就是一個功能更豐富的留言板而已。
4.學一下jquery,給自己的留言板加一些特效。這時候真的是完全不懂js,只是會用jquery插件。
5.看看大網站的源碼,學習了一下簡單效果的實現,比如導航條選中變色什麼的。
6.學了一個php的mvc,算是第一次了解了一種設計模式。
7.學了易語言,學著做小遊戲的外掛。了解了內存的概念。
8.學了彙編,了解了寄存器,堆棧,可以用彙編寫一些簡單的windows程序。
9.覺得彙編寫太麻煩,學了一下c++,大概知道了用更高級的語言如何實現彙編要做的東西。
10.學了學java,學了學安卓,發現其實寫APP就是和寫windows程序是一樣的,無非是調用人家不同操作系統給你提供的各種使用方法而已,就像小時候玩變形金剛,只要照著做就行,學會了查手冊。
11.學了學ios,通過學oc進一步了解了指針,類的概念。
12.上面這個循環經歷了很多次,每次都有新的感受和知識,比如後來想知道jquery的原理,就去學了js基礎知識。
13.學習前端框架,用更時髦的方式寫留言板。
14.用java和nodejs替換以前的php
15.在前後端交互的時候學習了http協議。
16 朋友內推面試成功。
17.在工作中根據需要學習了操作系統,編譯原理和數據結構以及基本演算法。

所以題主啊,你可以借鑒一下,通過實踐學習,根據需要選擇,而不是上來就聽那些大牛的系統課程。
畢竟我們麻瓜的學習路線和人家魔法師多少有點區別。
祝你早日成功!


找了以前的舊硬碟,發現還有一部分,可能不全。上傳到網盤了。
今日起,開放一個月,一個月以後,關閉。現在是2016-08-12 13:33..
鏈接: 已經刪除
----------------不要再留郵箱了,資料沒有了,你們回答都不看清楚,就留言,最上面的,是最新的。謝謝哦,沒了。

--------------------最最最最最後一更
大家真的不要再私信我了。手機號被綁定,我也上不去。
很抱歉。
回頭有空,我翻翻我的舊電腦,看看那些視頻還在么,在的話,我盡量換個網盤上傳一次。
資料很大,上傳也會很慢。所以大家不用一直私信了。如果還有,我會來更新的。
如果資料沒有了,我只能表示,圖片上那兩位同志,你們倆贏了。
不用再留郵箱和私信了,我幫不了你們了。
--------------------------
最後一更,大家不要再找我了。
我也無力吐槽了,本來是想共享給你們一下。
你們倒好,竟然綁定手機號。。。。
這兩人,你們真6.,真的很6,太6了

---------------------------------------------------------------
手機更新一波
這不是撕逼!這不是撕逼!這不是撕逼!重要的事情說三遍!!!
我不知道大家都是什麼學歷,也不知道大家抱著怎樣的初心,也不知道大家是不是真的熱愛編程,我甚至連我自己是熱愛編程,還是為了工資而編程都不清楚。
但是我可以肯定的告訴大家,那30多G資料,我完整看過,我因為跟著例子敲同樣的代碼卻運行出不同效果而沮喪,但我也因為用不同的方法實現和例子一樣的效果而開心。
我見過很多碩士研究生,985,211很6的很多,差極了的也有。知識文化底蘊很重要,但還沒到完全否定一個人的那種地步,何況這個人一直在前進。我說這句話的意思是,永遠不要站在同一個角度去思考問題和看待你自己,yeah,you can do better.
當你想往一個方向前進,並做出努力的時候,沒有什麼可以阻擋你,唯一的坎是你自己!
做人如果沒有夢想,那和鹹魚有什麼區別。
也許那只是你想用來謀生的伎倆,但我相信你會愛上她的。
---本來只是共享下資料,卻不想走了把心,我真是該死。

--------------------------再更新一波
兄弟姐妹們呀,發了不知道多少了,也不知道有沒有漏發。現在是2016-05-05 20:03:00我把私信里的都發了。如果漏發再留一下郵箱吧。。。萬一發漏了,記住 ,不是我不發。。。
然後,真的,說真的,你們可以找找圖片上的那些人。。評論里的我也都發了。。。
-------------------------------
再更新一波
兄弟姐妹們呀,不要再私信我了,醒來就是一大波郵箱,有的朋友還沒有留郵箱。
你可也可以找找圖片上的那些同志嘛。;-)
------------------------------
更新一下,本只是想幫助一下題主。沒有想到這麼多朋友都私信然後還評論。
因為資料是在115網盤上,貌似目前沒辦法分享。只好把賬號和密碼發給大家了,
但是因為視頻是xx教學視頻,我不知道傳播是否合法。所以至此為止,我會把
賬號和密碼發給已經留言的朋友,其他朋友,不好意思了。

我只能到這了。
ps.你們這些伸手黨,竟然不點贊。。。。

----------------------------下為原回答
it行業很廣泛,你最好還是先確定一個發展方向。不要泛泛而談。
如果學c/c++,郵箱可以私給我,我有套 d a ,n e i的c/c++的培訓視頻。

拿去堅持看完,就能有些基礎,再配合一些書籍,就能編程入門了。


一定要注意坐姿。 _(:зゝ∠)_


學編程很多時候就是一個趟坑的過程,但不是每一個坑都有必要趟,寫這篇文章的目的是希望能夠幫助初學者盡量少趟一些坑。

IT世界的地圖

初學者遇到的一個典型問題是對IT世界沒有一個大的圖景。比如大多數的Java書籍,教完你基礎語法知識和秋水仙數的求法後就結束了,並沒告訴你接下來能幹什麼。我曾經為此感到非常困惑,學完Java SE後做了一個非常簡陋的GUI demo,就失去了後續的Java學習方向,帶著對Java的偏見,這成為了我一段令人沮喪的學習經歷。關於這個話題一本書可能都不夠,簡單來說,我嘗試從計算機科學知識和技術實踐兩方面來聊聊成為一名IT工程師需要具備哪些東西。

計算機科學基礎

首先初學者要具備一些非常基礎的知識,這些知識在你踏上工作崗位後能被實際的用到,比如計算機運行原理、網路的傳輸、常用數據結構和演算法等。這部分屬於計算機科學,也是應該被計算機專業本科課程涵蓋的,不要傷心錯過了大學本科的相關課程,我會分享一些有用的資源。

這裡我羅列了一些計算機專業的學生一般需要學習的課程,當然每個學校專業設計都不一樣,甚至採用的教材名字也不一樣,僅供參考。大學計算機科學課程往往包括:《高等數學》、《離線數學》、《電子電路》、《數據結構》、《程序設計》、《計算機組成原理》、《編譯原理》、《計算機網路》、《軟體工程》、《資料庫原理》等。有些學校會有一些額外的課程,例如《通信原理》、《彙編語言》、《線性代數》、《C語言》、《Java 語言》等。

圖片來源於網易計算機專業的課程體系

儘管IT行業知識更迭非常快,但是基礎知識並不容易過時,因此有大量的資料可以選擇。可以選擇從計算機經典叢書系列開始,比如佛羅贊和莫沙拉夫的《計算機科學導論》,甚至可以閱讀一些計算機科普類讀物例如《穿越計算機的迷霧》。另一種直觀的方式是觀看大學精品課和去跟慕課課程,比較推薦的有幾個:

  • 中國大學精品開放課程,高等教育出版社的精品課程項目,有全國大量的名校授課視頻和課件
  • 中國大學MOOC ,這個是中國大學MOOC和網易合作的,提供了上文附圖中計算機課程體系中所有課程
  • 果殼網的MOOC學院,主打翻譯全球名校的優秀課程,比如斯坦福的《編譯原理》和MIT的《Python》

從知識到實踐

除此之外,還需要了解實際應用於設計軟體或者開發網站中的實踐類知識,包括某個特定語言以及周邊的庫、框架和工具等。 我們可以把特定需求中用到的語言、庫和框架以及其他的工具稱為技術棧,在技術選型上通常也是被這樣考慮的,HR常常會根據技術棧來尋找需要的工程師。比如需要學習SSH 三大框架和Java的Java技術棧;為伺服器web開發而生的PHP技術棧;在移動開發領域流行的IOS、安卓技術棧等。當然這裡面有一些重合和共用的技術也需要學習,比如版本管理器Git、SVN就是每個合格的工程師需要去學習的。

換句話說,大學課程主要定位在上面說到的計算機科學基礎知識,而市面上的培訓機構主要是告訴你在怎麼在實際工作中運用,所以大學和培訓機構都有他們的價值。

想要更加詳細的了解這部分內容,這裡有一些開源的技能圖譜可以參考:

圖片來源: http://skill-map.stuq.org/

如何挑選你的兵器?

在介紹完計算機領域的大致圖景後,就需要選擇一門合適的編程語言,一個較為形象的例子是把編程語言比喻成兵器,因為我們深知編程語言對於工程師而言是實實在在的工具,我們不是為了學它而學,學編程不僅僅是學語言特性,一般來說我們也不用知道賦值語句像「茴香豆蔻」的「茴」字有四種寫法。

當然語言之爭從來沒有停止過,如果把編程語言比喻江湖武器的話十分有趣。

C語言是M1式加蘭德步槍,很老但可靠。

C++是雙截棍,揮舞起來很強悍,很吸引人,但需要多年的磨練來掌握,很多人希望改用別的武器。

Perl語言是燃燒彈,曾經在戰場上很有用,但現在很少人使用它。

Java是M240通用彈夾式自動機槍,有時它的彈夾是圓的,但有時候不是,如果不是,當你開火時,會遇到NullPointerException問題,槍會爆炸,你就會被炸死。

_JavaScript是一把寶劍,但沒有劍柄。 _

-- 來自網路

老實來講IT行業的最終目的是交付可用的軟體,編程語言也是適應市場的。這對於初學者或許有些殘酷,在工作中我們發現最好的語言是用來處理工作任務或者構建合適的應用,並不是出於愛好或者某種Geek精神。

對於初學者而言,在選擇合適的入門語言時至少需要考慮兩點:

  • 是否能適用於構建你想要的應用。如果你的目標是創建一個運行在IPhone上的APP,那麼最好選擇 Object C 或者 Swift,學習web開發可以選擇PHP 或者JAVA。實際上我們仍然可以用彙編做出網頁,但是這樣做成本高昂。
  • 是否容易學習,在滿足第一點的條件下請盡量選擇容易學習的語言。容易不僅僅指語法簡單,包括環境搭建、部署等都需要考慮在內,以及能不能容易找到好的學習資料,因此儘可能的選擇主流語言。

別忘了非常重要的一點,學習編程語言還包括平台提供的API,比如Win 32 之於C++/C#/VB,以及周邊的庫和框架(這些庫、框架和工具能在上面說的技術圖譜中找到)。IT歷史上甚至出現框架和庫引領編程語言走向的情況:JQuery 和Angular 改變了前端開發的思想; Rails搶走了Ruby的名氣;而SSH三大框架一度代表了Java世界。

最後我為初學者整理了一個流行編程語言和用途的表:

另外還需要注意的是開發工具,可以選用IDE和有代碼提示的編輯器,但盡量不要在這上喋喋不休,這就像用來盛放你鋒利兵器的架子,用著順手就行,也不推薦使用純文本編輯器,這看起來像赤手空拳。推薦一些編輯器和IDE

挑選合適的資料和有效的閱讀

對初學者而言,我仍然推薦好的視頻教程,雖然我已經聽到不下5個人聲稱是靠閱讀官方文檔或者看源碼學會編程的,而且認為觀看視頻教程見效太慢。但這個思想對初學者很危險,不得不承認閱讀文檔和源碼能更準確找到自己想要的信息,這對深入技術原理非常有用,但視頻能比文字傳達出更豐富的內容,有更直觀的演示和細緻的講解,我想沒有比這個更適合初學者了。

除了上面提到的精品課程和慕課教程,國內有像網易雲課堂,國外有http://lynda.com這種在線學習視頻網站,甚至在優酷和土豆都能找到足夠的教程資源。

如果選擇了閱讀技術類書籍,我們來聊聊怎麼有效的閱讀一本技術書籍。

讀IT類書籍和讀考試類書籍的方式不同,初學者需要選擇更接地氣、並且能告訴你最終能做出什麼案例的書籍。你不需要通讀整本書,而是需要搭建好和書中版本一致的環境,然後把書中的每行代碼敲入電腦,觀察這些代碼怎樣被運行,在遇到問題時去請教朋友或者到搜索引擎中尋找解決辦法,直到示常式序能被正確運行。

可能一個月才能讀完一本書,但慢點並沒什麼壞處,敲過一遍的代碼才能算是你的,否則永遠存在於紙上的代碼清單中。對於關鍵的概念和知識點,可以在閱讀的同時做一些筆記,去嘗試使用思維導圖來做你的筆記吧,這讓你的筆記跟上你的思考,並形成一個知識網路。

自我激勵

自學無疑是寂寞的。編程學習耗時較長,如何保證在這個階段能堅持下去?

我們知道很多人都能對遊戲產生強烈的興趣、願意為之投入時間,這其中的秘密就是遊戲的獎勵規則。殺死一個怪物就能得到一些金幣,通過完成任務獲得滿足感,通過關卡的設計產生持續吸引力,進而形成正向的反饋。

其實學習編程也一樣,實現一小段程序並運行,足以讓人感到成就感和滿足,借鑒這個簡單的心理學技巧,定期給自己設定一些有實際意義但是不太難的目標和任務。太難會讓人失去耐心,太簡單又很無聊,最好設定一個跳起來剛好摸得著的任務。每完成一個目標就給予自己獎勵,可以是完成任務的成就感,也可以是其他的物質獎勵。

這個時候一個代辦記事的清單就可以幫上忙了,可以是一個to do list的軟體,或者自己手寫一張卡片貼到牆上,關鍵在於不要忘了在任務達成後給予自己適當的獎勵。

圖片來源:https://appadvice.com

那如果真的遇到一些麻煩的任務呢,如何順利解決而不至於喪失信心?笛卡爾在《方法論》一書中告訴了我們研究複雜問題的方法和步驟:

  • 盡量將其分解為多個比較簡單的小問題,一個一個地分開解決
  • 將小問題從簡單到複雜排列,先從容易解決的問題著手
  • 子問題被解決後,進行聯調測試,看是否能協同運行

在敏捷開發這種工程思想中我們正是這樣做的,我們需要把業務需求進行拆分然後評估工作量,不僅可以直觀的看到任務進展,手上的工作也不會看起來龐大得難以完成。

最後多說幾句

非科班出身的工程師入門是有一定痛苦的,不像武俠世界裡面的名門正派弟子,也沒有機緣遇到骨骼精奇的世外高人,如何選擇合適自己的學習方式並自我管理是很重要的一方面。沒有任何Low的學習方式,只要直接而又高效,而且要能達到我們的目的就好。以我為例,從大專學校畢業並沒有機會參加本科課程,曾經也在網上攫取各種視頻教程,去別的學校蹭課,甚至帶上禮物去一個老師那裡登門拜訪補課。

另一方面是如何上桌,吃上編程這碗飯。學習的成果如果無處施展便成為屠龍之技,參加一些開源項目和一些公益活動,誰不喜歡一個熱心的人呢。也可以嘗試去實現自己的一些idea,當做一個小項目來開發,有了一些項目實踐後去找一個公司實習會容易的多。

我不知道算是有幸還是不幸經歷了這一個過程,矯情一點來說是有一些曲折,但是我知道「聰明」從來不是這個行業的門檻。引用流行於知乎的一句老話「以大多人的努力程度,還輪不到拼天賦的程度」,在Thoughtworks有大量優秀的工程師,從他們身上我能看到聰明不是學習編程成功的關鍵,堅持和勤于思考才是。

文/ThoughtWorks 林寧 來源:寫給自學者的入門指南 - ThoughtWorks洞見


7月14日更新:還有一篇引申回答:如何能在工作中獲得更多對技術的理解? - 昆吾的回答

更新:有人評論我裝逼,對啊,裝逼又不觸犯刑法裝一下不可以啊?有人覺得我說得不對全是水貨,那沒辦法,答主只有這點實力只能寫出水貨來,你有乾貨歡迎分享。如果我明明想的是某方法不正確,非要跟你說正確,那是我人品問題;現在我怎麼想就怎麼說的,一沒收學費二沒宣傳公眾號指著這篇東西掙錢,就非得為所有看了這東西的人的學習成果負責啦?那你也太看得起我了…同意就贊同,不同意就點反對,我又沒攔著,我雖說混得不算風聲水起但也不至於慘到在知乎上找自信。如果有傳說中的乾貨和好東西寫出來分享出來給新人也是好事一件,這行我幹了這麼多年雖說不是老司機但也有自己的路數,早過了別人說什麼就是什麼的階段了,不會偷師你的,儘管放心。

更新:
感謝大家的厚愛,補充一條。
6.教別人是最快的學習方法。能最快時間融會貫通變成自己的東西,如果沒人教就去寫博客~


考慮到題主的情況,我給一些自己的看法:
1.你要先認清自己和這一行的未來。搞編程確實是一個改變命運的好方法,因為這一行已經是這個社會裡相對比較公平的行業了,只要你水平夠,情商不那麼低的話就能出頭,很出頭的那種。但是你看到這句話的時候也別太開心,反過來說水平不夠就很難出頭。這一行里多的是高學歷高智商的人,大多數人也都很努力很拼,你想要改變自己的命運在這樣的環境里出頭,除了比絕大多數人更拼來彌補其他不足以外沒有別的辦法。不要覺得一天學10個小時然後被自己感動了,還得更加油。

2.在你很努力的基礎上,注意方式方法。我一直不建議初學者手上擁有太多的資料。很多初學者提問題一上來就是能不能給我列個書單啊,能不能給我推薦幾套視頻啊等等。然後初學者手上抱著一堆書和硬碟里幾百G的視頻天天啃,啃到最後還是覺得無從下手,最近很多初學者朋友私信我講述了這種困擾。我給出的解決方案是:你在學習的過程中,盡量把看資料的時間和寫代碼的時間控制在1:4(看資料1,寫代碼4),不出一個月你就能上手很多東西。為什麼這麼說?所有人都經歷過各種考試,都明白想要考出好成績,光總是看參考書是沒有用的,更多的是需要做大量的練習(天才除外),這樣簡單的道理以前都明白,為什麼到了學編程的時候就不懂了呢?你看書看視頻再多,哪怕你把所有東西都背下來了,那也是別人的東西,不是你自己的。
所以我給你個建議,對於題主這種情況,你找個簡單好就業的編程語言作為敲門磚,找一課本(這裡課本指的是又全又標準但是不是特別厚的基礎教材),翻來覆去看,把上面習題都獨立做掉。然後自己去想點子找活干,比如自己做個網站什麼的,懂的地方直接寫,不懂的地方用搜索引擎去搜,去論壇問,遇到感興趣的點就深入研究(這裡研究指的是找這個點比較深入的文檔資料專項學習)。我說實話,這種方法最省錢,但是效果最好,不信你試試。
學習編程唯一的途徑就是寫代碼和看代碼,至於書本和視頻資料只是學習過程中遇到困難後拉你一把的工具,千萬不要把看資料當成學習的本身。

3.類似題主這樣,不是搞研究搞學術,是為了成為一個能夠參與到實際工作的工程師。這個時候就不要扯什麼「紙和筆寫代碼鍛煉基本功」之類的東西了,你必須要非常精通一線開發環境中的一些開發工具的使用,比如IDE(IDEA/eclipse)、版本管理工具(git/svn)、項目構建工具(maven/sbt)等等。很多你能看到的資料里都不會深入地講解這些工具的使用,但這些工具的使用在實際工作中是核心中的核心。說實話,讓我帶一個新入行的工程師一起做項目,如果他有些基礎語法掌握得不夠好,不要緊,你可以一邊工作一邊翻資料,工作不是考試;如果連基本工具都不會用,讓他寫個Java程序直接文本編輯器開寫javac編譯,好吧你牛叉,然後你可以走了。

4.別去摻和一些瞎扯淡的事情。我在學校的時候經常會指導一些學弟學習編程,他們問的問題再初級我都會盡量回答(有些問題,不配被稱為問題,這個後面會說),不會對這個人產生不好的看法,畢竟大家都這麼過來的。但我非常反感一種人,在學習過程中代碼知識了解得不多但八卦懂得不少,比如xxx語言比xxx語言好,好在哪裡哪裡,xxx框架比xxx框架好,好在哪裡哪裡……你特么有時間去扯這些沒用的你不會多寫幾句代碼啊?你去面試的時候喊一聲xxx語言萬歲難道特么就讓你過了?
還有一種是代碼沒寫多少,高大上的名詞知道得不少。1000行以上代碼的項目都沒寫過的人跟我說要研究人工智慧,要研究數據挖掘機器學習,要研究VR……你那麼牛逼你到是寫個能賣錢的給我看看啊,看幾篇博客和營銷文章就覺得自己會了咯?我說實話就算這時候我甩一堆文獻資料給你你確定你能真正理解么?人最愚蠢的事情莫過於騙自己和在自己面前裝逼,而且可怕的是有時候騙自己騙著騙著連自己都信了,那真的救不了了。
代碼量積累起來,知識積累起來,那些酷炫的東西早晚你都有機會去碰,也早晚會站在IT技術發展的最前線,基礎不弄好,名字再屌也就只是個名字。

5.最重要的寫在最後面,你要會問問題,這是自學能夠成功的基礎。不是說在一句話後面跟個問號就算問問題了,問題有傻逼問題好問題的分法,也有難易的區別。難的問題不一定都是好問題,也有可能非常傻逼,簡單的問題不一定都很傻逼,有些問得非常精彩。比如說"Java中的繼承是什麼意思",這種問題搜索引擎里打幾個字按個回車能跳出幾頁來就不能自己先看一下?提個問題然後等別人不知道什麼時候來回答難道覺得這樣效率很高?
遇到問題一定要先自己思考,然後自己搜索答案,依然未果再進行詢問,這是在節約自己的時間以及對回答問題的人的尊重。遇到問題是好事情,說明你又要進步了,但遇到問題只會喊「XXX大神過來幫我看看吧」、「XXX運行出錯了能不能幫我改改」……這要是能進步那真是圖靈保佑了。


既然大家都需要資源,那麼我就將我收藏的分享出來吧~
(在最底下
-----------------------------------------

鏈接失效,就發送信息到我百度雲賬號GonzoPlus 看到了就會分享的,不要加好友。

群已經解散,有些人讓我噁心。為了不忘初心,你們只要百度雲就可以了,我經不住打擊。

-----------------------------------------------------------

去年開始自學Java,今年6月份找到的工作,現在上班一個多月。
多的我也不想提了,在我往期的答案也有寫過。但是看到自學的還是很想幫一把。你問的是需要注意什麼。回顧一下之前的路,我覺得最需要注意的是:
你一定要清楚你自己在做什麼,並且,尊重你現在做的事情,把他做好。

生活太對的不確定,有時候你走著走著就偏了。

送你一句話,我也一直告訴自己。

失敗只有一種,那就是半途而廢。


關於我自己的自學,其實看我往期回答的問題就知道了,從一開始的問問題,到答問題,都是一步一步的。所以相信自己,可以的,畢竟,還有很多個我就這麼走過來了。

加油~

----------------------------------------


Android--鏈接 鏈接:http://pan.baidu.com/s/1kVEqUAN 密碼:2sv9
C#--鏈接:http://pan.baidu.com/s/1o8IU5ho 密碼:r7br
Cocos2dx遊戲開發--鏈接:http://pan.baidu.com/s/1c1KuCy0 密碼:05pw
C語言--鏈接:http://pan.baidu.com/s/1jIEYTYe 密碼:9jk6
Flash,這個可能學的人比較少吧?--鏈接:http://pan.baidu.com/s/1hr3XyZU 密碼:o4qy
HTML5--鏈接:http://pan.baidu.com/s/1dE4J3Zr 密碼:hm58
IOS開發--鏈接:http://pan.baidu.com/s/1dFJmQbR 密碼:1e3m
OC開發--鏈接:http://pan.baidu.com/s/1skMBVQH 密碼:ex96
PHP開發--鏈接:http://pan.baidu.com/s/1nuFY589 密碼:25nj
Python--鏈接:http://pan.baidu.com/s/1jIFESZ0 密碼:v7um


--------------------------------
SpringMvc+MyBatis----鏈接:http://pan.baidu.com/s/1bo8RrVT 密碼:2y28
Linux--鏈接:http://pan.baidu.com/s/1hsNk32k 密碼:tk7s
SSH框架部分---鏈接:http://pan.baidu.com/s/1c4zP9c 密碼:b049
JavaSE基礎,畢姥爺的--鏈接:http://pan.baidu.com/s/1kVCUYUz 密碼:iauh
Ajax,Jquery--鏈接:http://pan.baidu.com/s/1o7QLNFc 密碼:n843
各式書籍,不一一列了,有需要的自己看吧,反正我是沒看幾本,需要的都買實體書了--鏈接:http://pan.baidu.com/s/1jH3Ts7W 密碼:94fp
Java的項目,大大小小的都有----鏈接:http://pan.baidu.com/s/1gf7D1i7 密碼:viry

坦白說,這些資源稍微用點心,網上都找得到。
自學的第一步,就是學會找資源。當然了,也順便感謝那些將教程放在網上的小夥伴,不管為何,他們在無意中幫助了很多像我這樣的,無名小卒。

謝謝。


自學編程的坑在於缺少同伴、缺少導師指導。碰到技術問題的時候能否通過主動搜尋找到解決方案就變得很關鍵了,我見過不少叫著要學編程的同學半途而廢,最主要的原因就是在開始的學習曲線中遭受了太多挫折而缺少階段性的成就感,所以沒法堅持。

另外一點需要注意的就是自學編程的同學,如果缺少好奇心和對技術問題刨根問底的熱情,特別容易變成只能實現業務邏輯,堆代碼的碼農,沒有辦法成長為懂得技術原理,可以主動進行技術優化的高級程序員或架構師。

看圖說話,優秀的程序員會按照項目的需要,往底層和周邊的技術進一步鑽研,方式包括但不限於自己寫個demo,研究Unix、Docker這類優秀項目的源碼。

刷面試題這種方式效果一般,不是特別建議,基於項目和實踐的學習,會比較紮實。很多技術專家無非就是踩坑踩的比較多的人...

工作11年的程序員,在找工作,不帶人。

工作9年的架構師,目前是技術總監,帶一個30多人的研發團隊,有多項專利。

http://weixin.qq.com/r/hXXk-BjESUU2rVyf9yCX (二維碼自動識別)


論能力我現在肯定是沒有資格回答這個問題了,被邀請了就作為反面例子無恥的聊兩句吧

想上進想改變,學習程序真的是一個好的方向,實在是……沒有學習成本啊,幾乎所有的資料、信息都能在互聯網上檢索的到,完美詮釋了互聯網精神。

自我認識與自我定位
想清楚自己是不是真的做得來這個行業,高待遇是高門檻和高競爭帶來的,天賦和智商是客觀存在的。千萬不要覺得自己遊戲打得好或者自認很會「玩」電腦就充滿幻想。如果真的想賭一把自己,那就脫產吧……僅憑工作之餘我連英語都學不好,何況是要學一門吃飯的本事。

具體學習之前一定要先對這個行業和市場有一個宏觀的認識,格局和眼界有時會比能力更重要。每天多關注點行業動態和有價值的評論,先讓自己了解這個行業,只會幹活無論從事什麼行業也都永遠只是一名工人。

說點具體的

  1. 既然規划了要做前端工程師,從JS這個腳本語言入門是個蠻好的選擇,不需要你去搭建開發環境、調試環境,應用面也足夠廣
  2. 前端
e HTML、CSS,HTML、CSS
e 編程
  3. 可以看看大學的公開課,買一本入門的教材,不要把精力放在網上的那些教程資源上,別好高騖遠,先把一項技術學好,一本書的精華絕對夠你吸收很長時間,更重要的是多寫多嘗試,HTML和CSS絕對沒有人能看會!(JS我相信有)
  4. 一定要把基礎打紮實,JS有很多庫和框架可以去用,開始學的時候一定不要依賴這些框架
  5. 一定要有自己的代碼潔癖,變數命名、縮進……我吃過好多虧
  6. 英語很重要,能極大地拓寬你的視野和學習範圍
  7. 參與到真正的程序員社區里,GitHub對你的幫助會比qq群大得多的多
  8. 程序的本質在於如何把問題抽象化,日常生活中就要刻意去訓練自己
  9. 程序的藝術在於在解決問題的基礎上如何讓方法更精簡更效率,思考如何優化一個計算器會比寫一個計算器更有價值
  10. 注意健康……眼睛、手腕、頸椎、腰甚至痔瘡……
  11. 寫程序最重要的是思維的邏輯,班裡高考比我高几十分的人大有人在,但並不妨礙我比班裡絕大多數人在程序方面學的快

20歲,現在最大的捷徑肯定還是高考吧


最後分享給自己一篇雞湯
年輕人,就該有年輕人的樣子 - 一生想做浪漫極客 - 知乎專欄

我剛才說什麼來著?

哦。年輕人,就該有年輕人的樣子。

不過熬夜寫東西,

不可取。


在一所還可以的大學學軟工。
大學四年就基本沒上過課,一直在自學,現在考研成功準備讀研,自己入了好多坑。說說自己掉進去的坑吧..(沒組織,沒有邏輯,湊合看!)
1:報班,大一的時候報了某java培訓班,當身邊的小夥伴都在學c語言的時候 ,自己寫著java感覺奇屌無比……學了一年最後只學會了做網站(很單純的那種ssh框架,其他的統統不會,連java都寫不利索)。報班真的不太合適,學完以後就和技工差不多,而一個好的程序員要懂得原理,也就是說報完班,你還是要自學。
cs或者說是編程不是一條路,走過去的人就無敵了;它更像是一張大網,你從哪裡開始都可以,只是有的時候路會顛婆一點。所以不要糾結用什麼語言作為入門。我應該是用java入門的吧。國內多數同學應該是用c。外國可能python也不少。如果條件可以我推薦oc(編寫應用比較簡單,xcode找個入門視頻就能學會怎麼用)目前來看找工作還算比較容易。條件差一點可以試試java:語法比python規範(真心覺得python太隨意了;沒有指針;容易見成效,這個真的很重要,你學了一個月連簡單的東西都做不出來多讓人灰心喪氣)。
至於學習方法..找本大家都推薦的入門書看..然後多敲(thinking in java 不算入門書,而且作者太嘮叨)
2:數據結構演算法。我們學校用的教科書...黃皮的,老師自己寫的,記得看prim演算法時對著書看了半個小時愣是沒看懂...對於新手來講入門很重要,所以推薦一下《數據結構和演算法分析 c語言描述》維斯的(也許我看書能力不強,三年看了五遍..)
如果你對c沒什麼好感,推薦你看《演算法》塞奇維克的。裡面圖例太霸氣了(是我見過最棒的插圖,色情書刊不算...)至於演算法先嘗試著刷刷leetcode easy難度,順便練練編程能力(不是說演算法不重要,而是現階段別的東西比進階演算法重要)
3:刷題,對於一個非acmer的程序員刷題真的重要嗎?
演算法基礎比較弱的我由於羨慕對面寢室的大神(acm亞洲第一),開始走上刷題的道路,大概一個多月刷了500-道題(timus)。實話實說,感覺提升了一些碼代碼的能力,但是對於項目來講似乎沒什麼幫助。個人感覺刷題可以強制一個人編程,但是會浪費大量時間,性價比並不高。反倒不如去看看演算法類的書籍做做課後習題來的容易。
4:計算機基礎c:
不知道算不算歧途:當我學完java以後,就想去擺弄框架,完全忽視了計算機基礎,最後脫離框架,我什麼也做不出來;我知道我輸入什麼會產生什麼現象,但是完全不知道為什麼(比如try……catch……finally我當時只道它是捕獲異常,但是完全不知道為什麼);至於網路,我只知道http,ftp,我會用socket,但是我tm只知道它們可以傳東西。也許有人會問,這些東西不會妨礙你把程序寫出來吧?以我的角度,我覺得只有知道原理,才能把高層和底層進行無縫的對接(比如編程語言和操作系統)。而且當一個人了解了某種原理以後觸類旁通的東西就很容易解決了,只需要一份文檔:)。
這裡推薦一下csapp,入門了以後必看。coursera上還有對應的課(不是完全對應)。課後習題,homework,還有8個lab一定要做。會花費大量時間,但是真的超值。
5:linux
linux不是簡簡單單的敲命令行!!不是背下來就結束了!!能從linux裡面學到好多好多東西,操作系統,計算機網路。
6:看書or視頻
關於某種技術應該看書還是看視頻?
計算機基礎國內沒有講的特別好的視頻,所以推薦看書(找一些經典的書,經典的!)
針對於某種技術,比如android,看書或者視頻都可以,幾年前學的android,當時用的mars入門視頻,之後看了android編程權威指南(這本書推薦一下,涉及了很多java項目方面的知識)
p.s. 千萬不要看那種cookbook,比如李剛的xxx瘋狂講義。照著做一遍,然後全忘了,到時用還要再看,不如看懂原理,用什麼查一下就好。


問題拆分:

1. 「我該學習哪一門編程語言呢?」

建議新手剛上手的時候,可以學習 java、python 等比較容易入門的語言。但是,計算機語言沒有貴賤、好壞之分,根據自己未來的開發興趣方向和工作需要去學習語言則是比較重要的。事實上,當你學會一門計算機語言後,你再學習第二門、甚至是第三門語言所需要的時間將大大地減少。因此,我會建議你扎紮實實地去學一門語言,然後有時間、有需求再去拓展其他的語言。此外,在面試過程中,如果是寫演算法題,也建議用自己最擅長的語言來寫。因為演算法面試的一個很重要的要求是」bug free」,用自己不熟悉的語言,很容易出bug,顯露自己的短板。


2. 「我應該怎樣進行自學呢?工作之餘每天可以學習4到6個小時」

1)自學貴在毅力,這是一件說起來容易做起來很難的事情,網上的的Tutorial絕對是最好的教材,自學的開始最好是刷題,遇到不會的就像查字典一樣去查tutorial。

2)多刷演算法面試題。可以在 LintCode 上刷題,從而積累代碼量。你可以每天鑽研1-2道題目,不僅要知道題目的答案,更重要的是要理解題目的解題思路,總結出解題方法和解題技巧,這會對新手能力的提高很有幫助。

3)除了刷題,新手還需要去找一些簡單的項目來做,在實戰中提升自己的能力。你可以去找認識的人幫忙推薦項目,也可以去GitHub上自己找一些簡單的項目來做,注意選擇那些你感興趣並且有想法去實現的項目。

4)如果有條件的話,可以去參加一些比較系統、規範的課程,有師傅領進門比自己瞎琢磨強多了。當然,最終的修行還是需要靠自己,即使學習了相關課程,也需要自己在課後去慢慢琢磨,理清思路。

5)最後,也是最最重要的一點就是:始終保持自信!自學過程中會碰到各種各樣的問題,這就需要自學者始終保持樂觀積極的態度,每天都給自己打打雞血。

3. 「我應該注意一些什麼呢」

自學的開始一定是要從簡單的程序入手,寫一個20-40行的小程序,慢慢的積累自信,積累興趣,積累成就感,不要想著可以一蹴而就。

如果有自己解決不了的問題要學會提問。如果在自學過程中發現了問題,你可以及時地向身邊的人或者去各種網上開放平台進行提問。比如,你可以在Stackoverflow上描述自己遇到的問題或者去搜尋相關的問題,總能找到解決問題的解答的。

4. 「求各位大牛們推薦一些計算機相關的書籍求各位大神指點迷津」

你需要根據你所感興趣的語言和內容選擇對應的書籍,盡量選擇那些簡單易懂的入門書籍。

比如,如果你要準備軟體工程師面試的話,我會推薦你這兩本書:《劍指offer》、《進軍矽谷》。lintcode上有《劍指offer》所有的演算法面試題online judge。刷題百遍,其義自見。當你通過反覆刷題得出經驗的時候,你已經邁出了一大步。

推薦閱讀:

編程新手如何提高編程能力?

歡迎關注我的微信公眾號:九章演算法(ninechapter),教你如何學習演算法知識、如何應對面試、如何成為一名優秀的程序員!


我看以上各位答主的思路等等已經回答的很好了,所以我想在這裡給大家推薦這些教程資源。如果你想學習編程,但是找不到學習路徑和資源,歡迎關注專欄:學習編程(此帖長期更新:最近一次更新:2016-07-18)

(被收藏了6731次贊了2081次,點贊的漢子找到女朋友,妹子瘦10斤)

以下所有教程目錄

  • java教程整理
  • c語言教程整理
  • html5教程整理
  • python教程整理
  • 前端開發教程整理
  • git教程整理
  • linux教程整理
  • 零基礎開發遊戲教程整理
  • php教程整理
  • Javascript教程整理
  • ios、android教程整理
  • mysql教程整理
  • 正則表達式教程整理
  • 大數據
  • 其它內容

Java教程:

如何一步一步的學Java - 學習編程 - 知乎專欄

java初學者,如何學習java? - 路人甲的回答

Java工程師面試題整理[社招篇] - 學習編程 - 知乎專欄

Java工程師筆試題整理[校招篇] - 學習編程 - 知乎專欄

C語言教程

自學c語言,有什麼好的建議或方法嗎? - 路人甲的回答

C、C++語言學習資料 - 學習編程 - 知乎專欄


html5教程:

想自學html5,應該從那些方面入手,望指教。? - 路人甲的回答

python教程:

怎麼用最短時間高效而踏實地學習 Python? - 路人甲的回答

編程零基礎應當如何開始學習 Python ? - 路人甲的回答

網易雲課堂上有哪些值得推薦的 Python 教程? - 路人甲的回答

如何學習Python爬蟲[入門篇] - 學習編程 - 知乎專欄

Python常用庫整理 - 學習編程 - 知乎專欄

學好Python的11個優秀資源 - 學習編程 - 知乎專欄

前端開發教程

本科生如何系統地學習前端開發? - 路人甲的回答

如何成為前端工程師? - 學習編程 - 知乎專欄

Front End Developer Questions(前端開發面試題) - 學習編程 - 知乎專欄

git教程

git - 入門指南 - 學習編程 - 知乎專欄

linux教程:

vim/vi命令整理 - 學習編程 - 知乎專欄

零基礎開發遊戲教程:

零基礎如何開發遊戲 - 學習編程 - 知乎專欄

php教程整理

讓php給你一個美好的晚安! - 學習編程 - 知乎專欄

Javascript教程

Javascript常伴你左右 - 學習編程 - 知乎專欄

ios、android教程

如何開發一款APP - 學習編程 - 知乎專欄

文科生13年畢業,已工作2年,想轉行做IT,自學安卓靠譜嗎?還是選擇培訓? - 路人甲的回答

新手從零開始學Android開發要點? - 路人甲的回答

mysql教程

從Mysql邁入資料庫 - 學習編程 - 知乎專欄

正則表達式教程

正則表達式 - 學習編程 - 知乎專欄

大數據相關

大數據可視化工具推薦 - 學習編程 - 知乎專欄

其它內容

編程話題實用問答整理 - 學習編程 - 知乎專欄

10個常用的代碼文本編輯器/IDE - 學習編程 - 知乎專欄

代碼編輯器的配色方案 - 學習編程 - 知乎專欄

代碼編輯器的插件推薦 - 學習編程 - 知乎專欄

更舒服的寫代碼[字體篇] - 學習編程 - 知乎專欄


學習編程專欄同步訂閱號現已上線,以後所有教程文章以及教程資源都會首發於訂閱號

學習編程訂閱號(一個程序員的日常)(或者掃描以下二維碼):smcode2016


http://weixin.qq.com/r/aDuKklbE6guVrRLx9256 (二維碼自動識別)


謝邀。

仔細看了下介紹,你沒有任何編程基礎,不過這沒有關係,學習是一輩子的事情,什麼時候開始學習都不晚。這裡給你一些建議,希望對你有所幫助:

1. 好好學習英語。推薦「賴世雄」系列(一套書也不貴),雖然是美語,但是講的很好,也能從中感悟到一些學習方法。
2. 可以從Java開始(雖然我個人不喜Java),學習Android開發,UI開發能幫助自己提升一些成就感。另外,學習Android開發,有可能幫你快速找到一份工作。以此為開端,逐漸深入學習。
3. 常去Github,看看別人的源碼怎麼寫。
4. 自學的路上肯定會碰到各種問題和阻礙,要記住,這是很正常的現象,不要浮躁,不管你有多麼渴望改變自己的命運,請保持平常心,記住,慢就是快。
5. 學習技術之餘,多學點哲學(道家或佛家),鍛煉自己的思維,提升自己的認知和自學能力。
6. 學會科學上網,學會使用Google,請不要用百度!(和百度名聲沒有關係,關鍵是百度查不出你想要的結果,尤其是技術方面的學習和查找)另外,有朋友質疑百度和Google的搜索結果,請移步這裡吧:百度和 Google 的搜索技術是一個量級嗎? - 谷歌 (Google) 不要在本答案下撕逼,否則一律拉黑。
7. 學習過程中要注意自我的總結,不斷的改進自己的學習方法,最終找到適合你自己的高效學習方法。
8. 在線教育現在發展不錯,網路上各種公開課、視頻,當然還有很多在線學習編程的網站,也是你學習的好朋友。重點學習計算機基礎相關的內容,缺啥補啥。
9. 關於如何學習,我推薦知乎巨V:采銅,寫的一系列書籍。

----------------------- 補更:

關於這個問題,我回答的問題重點不在於學習編程,而在於自學!自學能力是上完大學就有了嗎?

很多人看見題主的條件:初中畢業,就開始質疑。我想說的是,在中國這種教育環境下,哪怕你讀完了大學又能怎麼樣?很多人上大學就是混日子,玩遊戲,其實我本人在大學就是這樣,玩遊戲玩的飛起。直到畢業後才懂得努力,因為出了象牙塔,要面對殘酷的社會了。畢業了,高中和大學學過的東西真的都還給了老師,因為玩,也沒有培養好自己的自學能力,這和題主的現狀能差多少?直到畢業後的兩三年內,我猜才意識到學習並不是只能在學校中學習,學習是一輩子的事。這一秒你開悟了,下一秒開始行動並堅持學習,那你肯定會達成目標。當然,比起那些好好讀大學沒有浪費時間去玩的學霸,你會慢很多,不過沒有關係,你自己每天在進步就可以了。說再多也沒用,能否達成目標還得看自己的努力程度和悟性,別人只是給你一個可能的方向而已。

在評論區反對我建議者,你們最好另開答案,認真的去幫助題主。我回答這個問題的時候關注者只有倆人:題主和我。我只是給題主一些幫助,不是要在評論區跟你們撕逼。撕逼者一律拉黑。謝謝!


和題主文憑一樣,去年三月開始學習編程,這一年我24歲了,也是一事無成吧,也無基礎,說說自己的學習經驗,僅供參考吧。

2015年三月開始學習php,看了基礎視頻,發現看完完全不能理解怎麼用,視頻在51cto上看的,後來開始學習html和css,入門很簡單,也是從視頻開始學習,覺得基礎掌握的差不多了,就開始試著寫了,導航,動畫什麼,樂此不疲,到四月的時候,已經能簡單的寫出幾個頁面。

四月份,開始學習js、慕課網,w3school裡面自學,可惜並看不太懂,單詞都是有道翻譯的,不懂跟著視頻一行一行敲,哪怕不懂,混個臉熟,就這樣過了兩個星期。

偶然在網上看見jQuery教程,確實比js容易理解,寫效果也很直觀,能自己寫寫一般的頁面效果了,還是挺滿足的,我屬於比較笨的。

五月份,做了人生一個重要決定,辭職了,因為每天上班下班,晚上都在學習,根本無心工作,乾脆辭職了,五月正好有個朋友給了個企業網站給我做,三語言那種,2500,三天時間,我信心滿滿的答應了,真正做的時候,問題太多了,各種bug,幾乎要崩潰的內心啊。。。

一邊查資料,一邊做,三個通宵,每天睡三個小時,總算按時完成,後台套的cms,順利完成了人生第一個網站,後來開始在網上找些活,還有朋友推薦的,無論能不能做,都接了過來,一邊學習,一邊開始自己做些網站,微信公眾號,h5的開發,php還有一些框架雖說都不難,確實成長最快的時候,自己也慢慢的再回頭把jQuery的書籍,js的書重新再看了一遍,發現開始慢慢能理解了,近一年,做了近五十個網站,雖說都寫的很醜,但是確實成長很快。。。

今年三月份找了一份前端工作,月薪一萬,工作中學的東西會更多一些,慢慢技術也會越來越好。


大概有幾點希望能有幫助
1一定要堅持學習,有不懂就查,不會就學的專研心態,,從簡單的慢慢來,打好基礎太重要了,出去面試,一般的職位都是問的基礎問題

2 一定要多動手寫,寫什麼都要自己熟悉,光看,當時覺得很簡單,真做起來,會發現很多意想不到的問題
3堅持不下來的時候,想想未來還那麼長,希望答案對你們有用有用,一起加油!

5.9更新

因為我技術確實一般,所以匿了,只是希望我的學習經驗對大家有用。


對於大家關心的幾點說下吧,我從學習編程到找到第一份工作是2015-3到2016-3月,將近一年的時間。

至於接活事,可以加一些群,很多時候我都是免費幫人寫東西,有的時候一個網站才收幾百,純為了練習技術,後來幫人做多了,才有了固定的合作對象,不過確實又累,還只能維持溫飽。

學習總是辛苦而漫長的過程,特別是剛學習那會兒,出現問題的解決思路都沒有,現在依舊是個小菜鳥,但是已經學會如何去解決和學習了。想做好一件事,肯定能做成,只是看付出多少精力和時間了。

5.12日
最近天天加班到很晚,所以並沒有太多時間回答大夥的問題,不過我還是每條評論都仔細看過了,還是給點我的建議吧

1.想學習前端的,資料網上太多了,很多人都是這個看看,那個看看,結果感覺自己什麼都沒學到,我也不在這裡給大家推薦資料什麼的了,說說一些經驗吧

html和css是熟能生巧的東西,我不覺得有捷徑可走,邊學理論邊做出東西來,才有可能進步,你只需要下載Hbuild編輯器,和notepad++就可以開始寫代碼了,不用環境,用瀏覽器打開就可以看到效果,可以自己仿一些好看的網站。

2.js主要是負責一些頁面動畫,數據處理,例如滑鼠點擊返回頂部,圖片旋轉之類的,前期做網站可以多找找插件,各種效果和動畫基本上都有,先學會用,再學會寫,jQuery是js的庫,需要引入一個jQuery文件,瀏覽器才能識別jQuery的代碼,新手用起來容易上手

3.後端主要指網站後台,基本的就是增刪改查了,後端語言有很多,php,Java,node.js,選一個自己感興趣的了解和學習,基本上就可以做一些簡單的企業網站了,如果對後台沒很多要求,也可以套CMS,學習成本很低

4.網站環境新手可以使用phpstudy,安裝好就可以運行,想要自己做的東西給別人看看,也可以在阿里雲和騰訊雲買台虛擬伺服器,低配40多一個月,然後購買一個域名,域名在萬網可以購買,不過要備案,網上都有流程,基本的學習思路html,css,js(前期可先了解jQuery),php或者Java,MySQL的資料庫基本用法,h5和電腦網站的寫法會有些區別,不過是很有意思的東西,節假日可以做些小遊戲放在朋友圈,大轉盤,抽獎,恐怖遊戲之類,新手興趣應該會很大。後期提升就不說了,入了門,路要怎麼走,你會有自己的想法了,說的不對的,請各位指出,以免誤導初學者了。謝謝大家善意的鼓勵。

那些想辭職的朋友,我其實是不推薦的,雖然人不走到絕路上,不知道自己有多大毅力,但是突然從相對安逸的環境中走出來,最大的挑戰,肯定是自己的惰性和迷茫了,路都是時間堆出來的,程序這條路更加了,必須保持一直學習,最好先嘗試學習一段時間,看看自己能付出多大毅力吧。

下次更新時間,我就不知道了,敲代碼去了,各位晚安加油。


//2016.8.18 更新
現在距離題主提問也已經過去三個多月了,不知道題主的學習情況怎樣了呢?當初我回答的時候完全沒有預料到這個題目,這個答案會有這麼多人關注。有這麼多人獻計獻策,出思路出教程,不知道題主有沒有好好利用這些資源來更好地學習呢?

如果有,希望題主能再接再厲,不介意的話也可以把自己的學習過程寫出來,供後來者學習借鑒;
如果沒有,那麼實際上就驗證了本回答中關於自學起步難度的說法,自助者天助,題主不妨好好審視自己,是否真的想要選擇程序員這一條路,畢竟自己的內心是無法欺騙的。

總而言之,言而總之,不管結果如何,我都希望題主能夠現身說法,無論是成功經驗,還是失敗教訓,都是非常有價值的內容。

//以下為原答案。

實名反對樓上全部答案。
//此答案負能量溢出,請勿對號入座。

不然怎麼說知乎上985、211 不稀奇,常春藤遍地走呢,根本不管題主自身的條件就提建議。看清楚,題主是自考大專在讀!沒上過大學!敢問樓上各位有沒念過大學的么?

我念過大學,但我重視題主給出的自身的條件。沒有任何歧視大專學歷的意思,就事論事。樓上各位的答案都是好心,可以理解,但太脫離現實了。你們給出的視頻、鏈接、學習資料,試問有多少本科生能很好地掌握?走路都沒學會就要教別人怎麼飛了,是不是有點搞笑。想像一下你讓你大專畢業的表妹去自學C語言,還最好是英文教材,我都不希得說了。

題主,我不知道你現在的生活狀態是怎麼樣的,只能自己妄加揣測一下,說錯的請你見諒。你現在20出頭,又是大專學歷,不知道你是如何養活自己的。我自己也不是大富大貴之家,花了很長時間才明白一個簡單的道理:一個人最值錢的,是他擁有的時間。如果你靠的是父母給的生活費,住的是學校的宿舍,也許你會覺得每天時間多得不知道要做什麼。但等到你畢業了,走進社會,必須工作養活自己,你一定會後悔在學校里無所事事或是打遊戲浪費的時間。

何況自學最難的就是起步的那一段時間。沒有指點,沒有同伴,書上的概念看的懵懵懂懂,甚至連怎麼在網上搜索不懂的知識都不知道!這裡又要吐槽一下了,英文的學習材料固然是最好,但試想讓大專的你去聽什麼國外公開課,excuse me??? 客觀條件極端困難,題主的主觀意願在我看來也沒有多麼強烈。這內憂外患的,怎麼能自學的下去?

當然,達內是傻* ,這一點是毋庸置疑的。就是自學也千萬別去那。在我看來,題主還沒有真正想清楚自己未來的路,只是眼瞅著現在互聯網行業紅紅火火,覺得衝進來就可以賺很多錢,才會萌生這樣的想法。

最後附上我的建議:對於題主而言,起步階段有人指點是必不可少的,不要自學,不要到知乎尋求建議,可以找一找曾經和你差不多情況,但成功轉型成程序員的人,向他們請教,必要的話甚至可以有償請人家指點一二。這才是最實際的解決辦法。

//最後一擊,無償發別人學習資料是值得欽佩的。但現在網路發達,問題的重點在於選擇太多而非太少。你一發發個幾十上百兆的學習資料給別人,其他的不說,這麼多東西你自己認真看完的有多少?扔在硬碟里的學習資料和垃圾沒有區別,說不定點開的頻率還沒有A片高。正確認識學習的難度,不要陶醉在『今天我獲得了許多學習資料』這種幻覺當中。你倒是點開看啊!


推薦閱讀:

程序員大牛與菜雞分別寫音樂播放器,播放同一首歌,音質會有差別嗎?
怎樣找到 IT 界的男朋友?
男,985計算機小碩一枚,去爭取演算法崗位還是開發崗位?
工作五年以上的程序員,應該幹些什麼?
如何在debug的同時保持溫柔屬性?

TAG:程序員 | 編程語言 | 編程 | IT 行業 |