如何選擇業餘學習編程的方向?

問題描述最後更新:

很感謝各位知友的分享和建議,我會在之後的學習中不斷參照和反思。

另外此問題可以終止了,除非是還有知友能做出總結性(深度和廣度都經得起考驗)回答。我在這個問題下已經得到了足夠多的適合目前,包括有益於日後的建議,無需更多的觀點,貪多嚼不爛。

另外僅個人傾向,想特別感謝@少恭@溫停眉@王川,和另一位我點過贊的匿名知友,他們的回答基於我一個普通大專生個人淺薄的理解能力下,最讓我有所悟。無論這幾位的回答是否迎合大眾的口味,我都要額外感謝一次。

還有兩位,@蕭井陌@Badger執筆和推廣的專欄,是我決定自學轉行編程行業的動力和最初支柱,謝意無以言表。只是資質愚鈍,並沒有能很好的吸取到文章中的精髓。慚愧…

再次統一感謝各位知友的熱心分享和建議,真的很感謝。真的。

======================================

已修改問題描述,希望能把我自己的意思表達到位

*************************************************

題主,21歲,男,大專學歷,目前任職某美廠技術員。

工作沒有晉陞空間,沒有技術含量,且薪水漲幅有限。

不甘心自己就是這樣的一個生活(工作)狀態,於是決定自學編程轉行,看過幾遍編程入門指南 v1.4 - 蕭井陌的專欄 - 知乎專欄後自學了四五個月。

可是並無可見成效(做不出實際的東西,只能理解某些語言的基本語法)....同時對於編程入門指南中自頂向下的學習方式無法把握,總結為執行力太差或是懶散,又不知如何解決。

在知乎等社區或者朋友口中聽過很多關於編程行業中所謂的方向性言論,但是聽得太多讓自己失去辨別能力。

最終決定報培訓班來暫時解決自學能力差的問題,先學會某一方向的某一技術,而後再補回更為重要的基礎知識。

知乎上似乎對培訓機構的負面言論很多,但是我想過自己自學會有什麼結果,估計連培訓機構的畢業學員都不如。所以決定先依靠培訓機構的學習,儘快進入行業內,而後在工作能慢慢完善自身並明確方向。

選了兩家,一家是線下教學C++軟體工程師方向,一家是線上教學Python的Web開發方向,想問問知友們的意見。(個人傾向於C++軟體工程師方向,因為不想被某一個方面制約,例如安卓和IOS這種)

同時更希望有前輩能現身解惑,我在編程的學習中沒有像大部分人一樣享受到樂趣或成就感,一直讓我很迷茫,不知道錯在何處。

書是按照編程入門指南看的,

C語言編程:一本全面的C語言入門教程(第三版) (豆瓣)(已看完)

編碼的奧秘 (豆瓣)(已看完)

Python核心編程(第二版) (豆瓣)(這本因為看文中寫的是是支線所以沒看完)

Structure and Interpretation of Computer Programs(剛剛買來,並沒有開始看)

看不下去的原因是因為專欄中的這段話↓

結束啟蒙階段後,初學者積累了一定的代碼量,對編程也有了一定的了解。這時你可能想去學一門具體的技術,諸如Web開發,Android開發,iOS開發什麼的,你可以去嘗試做一些儘可能簡單的東西,給自己一些正反饋,補充自己的推動力。

但是我做不出實際的東西,無從下手。所以開始質疑,最終萌生報培訓機構的想法。

**************************************

很感謝各位知友的回答,我會看不下去的原因是不知道如何繼續下去。看過了語法,給我一段代碼我可以勉強看個七七八八,但是讓我自己做些什麼,我不知道能做什麼,我更不知道該怎麼做,網上一搜,大部分的言論都是去谷歌,或者是你就是懶。

雖然我確實比較懶散…但是我摸不著頭腦,不知道從何開始,谷歌也不能谷歌出什麼東西,要不然就是英文,大部分看不懂,用有道詞典整段翻譯之後又不是我想找的內容。

覺得自己懶,所以我努力每天背一百五十個新舊單詞,看書目中的書,數學從初中就沒有好好聽過課,我就從初中數學學起,這個月結束初中數學的複習是沒問題的,然後我再去看高中數學。每天下午三點上班,晚上十一點下班,如果要加班就是上午十一點上班。盡量每天基本保證九點起床,剩下的時間能學一些是一些。

我不是證明我在努力或者是別的什麼意思,當初沒重視學習,現在不過是想把以前吃的屎都拉出來。

我不甘心自己就只能擠在六人一間的勞務工宿舍,沒有私人空間,沒有業餘生活,同一個宿舍都是些比普通人還不如的人,我不想三十歲了像這些人一樣。

……也沒什麼好說的,自作孽。希望日後能學有所成離開這裡。再次感謝各位知友的建議和資源,也感謝@蕭井陌,三心二意沒什麼用,我好好乾就是了。


python flask web,別想別的了,三心二意發私信問我的你也不是第一個,認清自己,好好乾吧。

別想什麼成就感了,你不是說了,是為了錢嗎

你就不能直說你都看了什麼書?每本書又看了多少?為什麼看不下去嗎?

藏藏掖掖的,有什麼意思,如果你只能問我一個問題,你就希望問這種毫無誠意的低質量問題?

————————

我現在沒空,先隨便說幾句。

(建議你搞個頭像,不然都不知道該 @ 誰)

找工作的話,第一步看這本書,把裡面的東西消化理解

Flask Web開發:基於Python的Web應用開發實戰 (豆瓣)

其中遇到不懂的概念,積極使用搜索引擎,入群和人討論,知乎提問都可以(只要是你自己思考過的問題,我不回答也會有別人回答的)

可能需要補充的知識有

1,web基礎知識(HTTP,HTML等)

2,資料庫基礎知識

然後,第二步,通讀 flask 源代碼(理由、方法待補)

這樣找工作不成問題,先改變生活再改變人生吧。

其實這段話我說過好幾遍了


看了老蕭那指南和答案,雖然寫的不錯,其實很不適合自學。

作為自學者要先穩定信心。所以從高級語言開始做demo起步,哪怕用php,Java,js寫一個註冊登陸驗證功能都比一開始學編碼,計算機構造與解釋好。

有成就感後,慢慢做更複雜的功能再深入。多問自己為什麼?比如瀏覽器發個請求他為啥就到你寫的的那端後台代碼了,而不是跑去別的地方?中間經過了哪些步驟?你追根究底就會學http,IP ,TCP,socket,cdn,域名解析等等,深入一門語言,你深入下去自然會遇到很多疑惑和問題,你會學相關的知識,這時數據結構,演算法,計算機網路,基礎,你自然感興趣了,到了這裡可以找份不錯的工作了。

這時你以為懂得差不多時其實還差的遠。還有很多高峰等著去登,你還得學習下軟體工程,設計模式,設計原則。設計模式又分宏觀和微觀,宏觀以posa那套書為經典,微觀就是設計模式和其他小技巧。要想走的更遠更高其實還得深入某方面和行業,比如機器學習,推薦引擎,自然語言處理,搜索引擎,大數據處理與分析,移動開發,每個方向都不錯。

如果愛折騰想搞搞圈子,可以學學德魯克,稻盛和夫,傑克韋爾奇,多讀政治經濟人文書,這時你發現已經超脫了技術,能有一定的統御力了。江湖就是這些人的


最容易入門,需求又非常高的編程手藝,就是寫網頁。從純HTML給個別需要渲染的內容貼上常用標籤,到添加CSS來統籌渲染,再到添加JS來實現動態頁面效果,然後慢慢開始學AJAX與伺服器端的程序交流,編程的門路就摸得挺清了。

剛開始編程,最大的坎兒應該就是不會主動去構造抽象。從純HTML到AJAX這個過程,能幫你從最直白具體的技術一步步走向抽象和強大。

這個過程的一個好處是知識基本上自成一體,不需要什麼額外的傳統理論和經驗。另一個好處則是,編程反饋快;寫點東西,不需要寫完整,就可以打開瀏覽器看看效果,特有成就感:) 額外的好處還有一個,你要看到哪個網頁有你想實現的漂亮效果,在Chome,Firefox或IE下按F12功能鍵,就能看到它們是怎麼被實現的,所以可用的編程案例觸手可及。


我自學c#了兩個月勇敢地去應聘了程序員。我告訴你,只讀書沒用,把別人的項目完完整整地做,做到熟練,不懂得的地方去書上找答案。

我覺得應試教育讓很多人產生了一個非常糟糕的習慣:總要先把所有東西學會,花很多很多時間學基礎,然後再出來做事。當然,這個是正確的,也有助於你日後的發展。但是,針對不同情況要有不同的策略。

我認為,人應該是目標導向型的,特別是對於程序員。編程是一個技術更新迭代很快的工作,每天都有新的東西產生,你不可能學會所有的東西。你應該先有一個目標,然後安排需要學的東西。每種東西也不用學透,但是你一定要知道這個幹嘛用的能幫你解決什麼問題,至於為什麼,可以先不管。當你遇到疑惑的時候,和實際情況結合起來去查資料,去思考,往往事半功倍。

比如.net的頁面生命周期,不知道大家是如何,反正我光看書是根本不懂,但是它很重要因為涉及到http://asp.net的底層,可以保證你對頁面的控制(不知道我說得對不對,大家可以指正)。我也不怕你們笑我,我當時就上網找資料,然後把整個周期硬背了下來,為什麼?是面試用的。現在我工作了一段時間,才明白生命周期的意義。我發現,其實很多人幹了很多年,也不懂什麼是頁面生命周期的意義。

所以你的問題在於,你不知道自己該怎麼發展,而不是學習能力差。

你要當什麼方向的程序員呢?

前端還是後台,bs還是cs,確定一個方向,再去擴展技能樹,把技能先點一級,至少可以用。然後去網路上down項目,好的項目做個幾遍,你會明白很多東西。

然後就可以去找工作了。

你不要找那種太牛逼的公司,去找一些創業的公司,做一個初級程序員。面試的時候展現出你的熱情和對一些程序的基本了解。反正你進去也是干一些重複性的搬磚活,那些活真的用不到什麼太高深的東西。當然,不要亂開薪水,3k,4k可以試著開。

然後在工作里慢慢地磨礪自己,你會發現。

我現在常常在想,當時找工作的勇氣哪裡來?

現在我明白了,是源於「無知」。

所以,找到一份程序員工作,真的兩個月足矣。

但要成為一名優秀的程序員,要一輩子。

希望你謙虛,不浮躁。


我也不太建議題主去c++方向,蕭大神言辭犀利,我就告訴你為什麼吧。因為需要的基礎太多了,你需要好好學數據結構和演算法,操作系統,網路什麼的,就算除去這些,光一個c艹本身都是個坑。。這顯然和你的想儘快找工作的目標是不一樣的,而且也容易讓人喪失信心。

還是python方向好一點,我同學自己學了python,後面自己做了個網站玩,前後也就差不多兩個學期的時間,你有python基礎的話會更快。 至於你說能看懂但是不會寫代碼那肯定是自己寫的少了,一定要自己多寫才行,很多大神其實剛開始都是用最笨的辦法,就是把書上的代碼全部自己敲一遍。

至於資源建議看看慕課網的,比較偏實用。還有網易雲課堂,比較偏基礎理論,類似本科計算機課程。書的話就在知乎和豆瓣看看大家都推薦的,我不怎麼用python,所以不熟,還有SICP那種書太難了,並且你現在看了也沒什麼幫助,留著以後吧。

還有你說的補數學英語什麼的我覺得不用急,學編程就學編程,編到需要哪個單詞不會就去記住,需要哪些數學就再去學,其實剛入門用python寫寫網站,爬蟲什麼的用不了多少數學的。如果你先學數學,再學英語。。還沒等你從你的六人間出來自己的信心都被磨掉了。

網上有很多python爬蟲的博客教程,百度一下就好了。


過百贊了謝謝支持,似乎好些反對評論,好幾個CS專業人士的看法都是不打好理論基礎在編程這條路上只能止步於碼工,簡單回復下:

1 沒錯但是題主的目標也就是碼工/賺錢而已啊

2 世界上有多少個人可以做架構師,市場對架構師的需求又有多少呢

3 就算前面兩條我錯了,過於玄化編程這一行業只能讓題主這樣的新人對編程心生畏懼裹足不前,不如降低門檻,新人入門後再根據自身所需和興趣補充知識更有效率

4 不是說理論基礎無用,而是說對勝任編程工作這一具體目標來說,可以跳過或者以後再補

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

掃了一眼已有答案,被某幾個說一定要科班出身(或者等同訓練)的答案雷到了,決定進來給題主一點信心。

先放結論加聲明:編程根本沒某些人說的那麼高大上,尤其是在國外,自學了幾個月就上街找工作的人比比皆是。但是由於我對國內大環境不了解,並不清楚求職時一個學歷的重要性,所以我只能說自學足以讓你勝任一份編程的工作,但是並不表示一定能夠讓你找到工作。

我為什麼認為科班教學對題主來說是不必要的(對,我就是旗幟鮮明滴針對孔方兄的回復):

很簡單,親身體驗:我半路出家(大三才上了第一門計算機課),到畢業統共修了10門計算機課程,工作了這麼多年,前台後台開發都做過,最終認為上的那麼多課,對工作真正有用的不過4門。

不是說那些課不好,我上的時候真心喜歡每一門,但,拿我的第一份工作web app開發來說吧——做個網頁需要懂OS么?需要懂密碼學么?需要懂硬體么?需要懂NP vs P么?需要懂AI么?No No No No No!

也許你不想做web app,但是不管你想做什麼,需要用到的知識,都只是廣袤的CS領域中很小的一塊而已。上十幾門乃至幾十門計算機課程,其優勢在於找工作的時候有更多的選擇餘地,而並不在於實際進入工作崗位後是否能夠勝任。

所以,如果你有一個比較明確的目標,例如是做手機應用,還是做網頁,還是做別的什麼……針對該目標上一兩門課就夠了。在大部分編程工作上(即,前沿研發除外),所需要的知識,要麼是入門課程就已經涵蓋的,要麼是通過實際工作學到的,基本沒必要上更多的課。

目標要明確要具體

上面提到「如果你有一個比較明確的目標」,想想這個其實才是我認為最重要的決定你是否成功的因素,因為這個直接決定了你學什麼,怎麼學。

例如你想做 Android 開發,那就學 Java;想做網頁,那就學 HTML+Javascript+某一個應用框架。

而學習的辦法,最好就是自己動手寫一個應用或者網頁,不管看什麼書都沒這個管用。

你問題中說你不想被某一個方面制約,但是首先,如果不確定一個方向,給自己定一個要完成的小「項目」,你就沒有一個具體的練習方式,永遠只能停留在翻過幾頁書的水平。比起「不受制約」地泛泛了解過N門語言,較為深入地應用至少一種語言做出一個「產品」顯然是更好的選擇。後者的好處是:

  • 對自己選擇的具體項目,你會有更大的熱情來鑽研
  • 通過實際編程,對編程工作的優劣,是否適合自己有更直觀的體會
  • 對自己親手寫過的代碼,根據實例具體思考過的問題,你對書上學到的知識會理解得更透徹,記憶更深刻
  • 最終能夠掌握至少一門語言
  • 該項目將來或許可以成為你找工作面試時的談資

其次,我並不認為選擇一個方向是將自己「制約」在某一個小範圍之中。別看知乎或者其它網站上大家為了各種編程語言孰優孰劣吵得不可開交,其實編程語言基本上是天下大同的。所謂萬事開頭難,一旦你花功夫學會了一種語言,有了一定的經驗,將來有需要的時候再學一種新的編程語言的話可能就只需要之前幾分之一的時間(例1)。另外更重要的是,你學會了如何從程序員的角度去思考問題,如何將概念轉換為代碼,如何調試代碼,如何抓蟲……這些技能不管是什麼工作什麼語言都是相通的。

所以,一定一定一定要給自己定一個實際的目標,開始動手寫一點代碼。

例1:再次現身說法一下:我找第二份工作的時候,當時已經「接觸」過Java,於是很無恥地把Java列入簡歷,但是面試的時候在某個很基礎的概念上就露餡了。現在還記得那個面試官(後來成了我老闆 - -||||)一臉疑惑地問我「你不是說你會Java的嗎?」 好在其它問題答得不錯,還是給了我那份工作。拿到工作後第一件事就是買了一本Java教材,邊工作邊看,反正做了幾個星期後已經沒人懷疑我的 Java 水平了……當然,我自認我工作的確很勤奮很努力就是了。

講到這裡,發現我做過三份工作,每一份工作都有要求我學習一門我完全不熟悉的語言。再牛的CSer也不可能門門語言精通,所以沒必要糾結「我只學了XX語言就不能找XXX工作了」這種事情,只要腦子夠用加上願意多花點時間給自己充電就行了。

修改:評論里的 @李晟 指出在簡歷上寫上自己不擅長的技能不是正確的選擇,他是對的,大家不要學我。我舉例只是說明當時我Java有多差然而並不影響後來我勝任該工作。正確的做法是在面試的時候給出「雖然我不熟悉A技能但是我學過B,C,D...所以根據我的學習能力,我相信用不了多久就能上手」這樣的回答。

哦還要堅定反對簡歷作假,當時寫Java是因為系統有一部分是Java所以就寫了用過什麼什麼Java框架,然而並不是很熟練,但也絕不是無中生有——這一點相關做人原則不得不澄清。

Edit 1:再說點我做程序媛的經歷也許對新人有所啟發吧:

我加入新公司的時候喜歡一行一行認認真真滴把項目相關的代碼都看完,而且還會對重要的部分做筆記。一般大公司里任何一個項目的代碼量都巨大,而且很多程序員都有不愛寫注釋的臭毛病,所以如果寫代碼的人走了,那段代碼萬一出問題,剩下的人就悲催了。於是我看代碼啊看代碼,看著看著就發現,咦,某些東西好像就我懂了啊,要修bug或者加新功能什麼的話,我比其他人都更熟悉這塊代碼幹起來更有效率啊~~ ^o^

這真的是因為我比其他同事更聰明、學歷更高嗎?No again~ 他們中還有CS博士,我只是半個CS的小本,我認為主要區別就是他們很多人都沒有像我那樣看代碼記筆記啊!工作態度很重要!

當然,這個是我很後來才悟出來的……實際上在此之前很長一段時間我都處於一種惶惶不可終日的狀態中,因為我發現一旦做熟,編程這工作真的太容易了,所以我總覺得老闆隨時可以從大街上拉一個更加廉價的新人來頂替我的位置,於是我決定先下手為強——跳槽了。然後……辭了職才發現,其實我完全是杞人憂天了,老闆其實挺捨不得我走的啊。&>_&<

所以對題主來說,好消息是編程工作的門檻的確不是很高,只要稍微有點邏輯思維,細心耐心加吃苦耐勞,是人都該會做……但是也有壞消息:這個「細心耐心加吃苦耐勞」其實已經可以刷掉一大批人了;比如樓主若是做我原來那份工作的話,會願意像我那樣慢慢啃代碼記筆記嗎?當然,其他同事也未必每個都像我做法一樣,但是我相信他們各人有各人的努力方式。所以雖然我前面說了編程沒那麼難,要學的東西沒那麼多,但是實際上要做好一份工作,懶散都是不能成事的。相信不但編程如此,其它工作也是如此。

Edit 2:想起來啥沒寫完了:引用下孔方兄的某段詰問

我且問你,你看了C,你C用的是什麼編譯器、你的開發環境是什麼;你看了python,你python學的是哪個版本;並且這兩個貨都可以適應windows和Linux,你倒是在哪個環境下跑的代碼?代碼是你從書上抄的還是你自己默寫的?

這些問題看似很重要,也的確很重要,但是在工作中都不是問題好嘛?!

除非題主的野心是自己開公司了,或者是去應聘小公司CTO,否則哪個公司需要招一個新人來從零開始建設整個開發框架?用的什麼開發環境什麼編譯器這些早就是公司前人定好的好嘛?Python 2 和 3 的區別,兩種語言 Windows 和 Linux 的區別,這些我統統答不上來又怎樣?我會google會上stackoverflow求助就夠了啊!哪個公司會要求程序員寫代碼不能上網求助的(我工作的時候開上五六個窗口就為了查詢編程問題那是常態啊!)?同理代碼需要會默寫么?演算法自有各種演算法庫隨你調用需要重造輪子么?

所以這些問題看似一針見血,實際就是一個完全沒工作經驗的人在秀科班出身的優越感啊!

哎,作為一個不是純CS出身的土鱉,我就是看著這種優越感不爽就是要拍磚呢~~


專訪張慧華:廚師、程序員到J-UI聯合創始人-CSDN.NET

J-UI的三位創始人,都沒讀過大學,在當程序員前做的都是廚師、服務員、保安這類的工作,起點比你還要低,就是憑藉興趣和堅持,現在在各自領域都成了大牛。

他們最大的成長就是在第一份程序員的工作中,沒有什麼學習能比實戰更有效果,被需求虐個千百遍,自然就成長了。

給你個建議:

儘快找到一份程序員的工作!

儘快找到一份程序員的工作!

儘快找到一份程序員的工作!

重要的事情說三遍,如果你不能實戰,進入不了這個行業,學的再好戰鬥力也是渣渣。

強烈建議不要學C++,C和C++的門檻都太高,不是科班出身的很不好找工作,寧願java、PHP、android,這些都能很快給出一個可以展示的成果,增加你得到工作的機會。現在不是考慮你更喜歡哪門語言的時候,而是要看哪個語言能夠讓你得到工作,首先你得成為一個程序員。


JAVA,C#,PHP,Python任選其一就行。C不容易有成就感,C++過於難了。

JAVA有Android可以依託,C#有桌面軟體和windows phone 應用可依託,至於Python和PHP都是學習起來比較順暢的語言。

請相信我,想要快速入行,他們推薦的那些書目前對你都沒什麼卵用。最快入門的方法當屬看視頻,看比較全面的入門視頻。現在網上能搜到的教學視頻太多了。不要問我怎麼搜資源,如果你連這點搜索水平都沒有,那就別想做程序員了。

學安卓開發:MSDN李興華JAVA視頻(或者馬士兵的JAVA)+黑馬Android4.0開發教程

學習周期定位4個月,邊看邊做筆記邊練,以後再花兩個月大量練習,之後就可以找工資一般的工作先幹了。(都是全脫產學習,也就是一天至少能學8小時的那種)

學C# .net 開發,可先看傳智播客的C#基礎視頻教程,然後看C#的wpf 教程,然後找.net視頻教程看。

至於看書,剛開始啥也不懂看書純屬浪費時間,效率太低。以後視頻的內容已經不能滿足你了,這時候看書提高內功則很有必要。

至於什麼演算法,什麼acm 對你來說沒什麼卵用。先成為一個新手碼農先入行最重要。你要是沉迷於造輪子(研究底層基本原理和演算法),以你目前的水平恐怕在造出輪子之前就餓死了。


自學c++是一項極具挑戰的事情, 自學可能你可以很快能掌握C++的語法. 不過C++畢竟是目前為止最博大精深的編程工具了, 難學難精.

Python是一個動態語言, 腳本. 學這個比較容易入門,容易上手. 只是C++就業面更加廣闊而已,同時,C++程序員現在非常多呀, 出頭不容易, 倒不如Python.

如果你要報培訓班, 倒不如去爆Java了, 或者學學Android, 目前來看,從培訓班這兩個方向不需要掌握太多技能即可就業,而且android薪資不低


作為半路出家的非業餘程序員來說。

1. 我從買第一本書,到開始真正理解什麼是編程,花了6個月時間。

2. 需要大量的閱讀。在開始幾年,我購買了大量的編程相關書籍,花了絕大部分業餘時間去閱讀和理解。

3. 不停的寫程序。這也佔有了我幾乎全部的業餘時間。

4. 即使如此。8年後的今天,我很多東西也是不會的,水平只能算一般般。

所以,我認為你才剛剛接觸,什麼都不懂是非常正常的,你欠缺的知識是太多的。並沒有什麼捷徑可以幫助你,無非是大量的閱讀理解和編碼。

所以我認為,如果不是真愛,不太可能一個人會成為一個真正的程序員。這是一條枯燥的道路,需要不斷的學習,那些見錢眼開轉行學編程的,我估計大多數在學會之前就放棄了。

**************

順便吐槽下,你看中國人寫的guide、指南什麼學了6個月什麼也明白是正常的。買本老外寫的入門書看看比什麼都強。


既然大家都推薦題主寫Web,而題主又無從下手的話,跟著我這個練習做起就好了:

簡單建模練習:任務管理(task management)

算起來,如果每天都有兩個小時的時間的話,就算是新手也能用一個月左右搞定吧。

Rails/Flask隨便你來定,可以的話在Github上搭建一個repo,順便跟大家分享你的進度和成果。

不知道怎麼做的話可以先跟著官方的tutorial走一段,熟悉一下概念,有問題多去搜索,實在不行的發到知乎上來討論也可以。

利益相關:科班出身(然而並沒有什麼卵用。


=====以下回答假設題主是普通人====

在這裡很多人是危言聳聽。很明確的告訴題主,想在碼農行業找份相對靠譜的工作,學什麼都無所謂,因為現在的很多工作要得就是碼農而已,科班本科生畢業大多數也都是碼農。

而想成為一個碼農很容易,根本不要擔心你學的是什麼語言什麼技術,那些人說你學c++要掌握多少東西,學web又怎樣怎樣的,你完全不必理會,因為這些東西就算你不掌握也照樣可以干實際項目,遇到的時候只要你智力正常也可以很快學會,所以你根本沒必考慮這些問題,也不必去系統學習。現在的計算機領域的知識,都是寫的明明白白在書上的,你只需要去讀就ok了,需要的只是你的耐心和毅力。

但是這並不意味這這一切都很容易,三心二意很明顯不行,患得患失也很難學成。

看完你的問題,我覺得你現在最需要做的是找准興趣點,然後耐心地學習。興趣點是很重要的,沒有興趣點,我覺得你脫離了輔導班是不可能學成的。你現在之所以迷茫主要原因還是你沒有目標,你做不出東西是因為你壓根不知道自己要做什麼。如果你確實沒有目標,你可以看書定製一個,比如照書開發個小軟體之類的,死磕直到嗑出來為止。到時候你就不會有現在這些疑問了。

另外,我看了你的書單,我認為,你缺一本數據結構,而sicp應該放到等你入門以後自學閱讀。

最後我覺得你可能會很討厭碼農設個東西,覺得很低端,但是很遺憾這個行業相當一部分人就是這麼低端,包括我。如果你無法接受,請遠離這個行業,否則你進來之後也只會想著轉行而已。

=====以下回答假設題主不是普通人====

不過題主現在還年輕,如果耐得住寂寞,從最基礎開始系統學習個幾年,也不是不行,不過我覺得不太可能,首先你沒有興趣,你只是為了爭口氣,其次這個幾年起碼也得3,4年吧,現代社會耐得住寂寞的人太少了。

但如果真能這樣,題主必成大器。

=====以下回答假設題主是天才====

題主我們都幫不了你。


我覺得學這三個方向比較靠譜,Ruby(Rails),Javascript(Node.js),IOS(Swfit)


如果幾年前問學什麼。答案肯定是百花齊放。

但是在今天,學什麼最有用,肯定是html,css,js


…不知道誰告訴你要看這麼多書的…入門其實只要看一本,但是要看至少十遍…勝過你看十本…走馬觀花看一百本也是枉然,現在的書寫的都一個樣…還有…吃飽沒事這樣突擊複習數學有用嗎?數學的真正意義在於邏輯思維的鍛煉而不在於知識點,做程序開發也是在用編程語言闡述表達我們解決需求問題時的腦海中梳理好的邏輯思路…甚至可以說,我們真正花在掌握語言本身的時間成本是很短的,真正需要提升培養的是邏輯業務能力,就我們所在的層次,編程不是一門學問,是一門比較新鮮的手藝,和所有的手藝一樣,唯手熟爾……最後要說的一點是,不要有這麼多為什麼,入門和初期編碼遇到的所有問題如果你靠百度谷歌都解決不了,以後的問題你問誰都不知道…


當年我看了很多NBA雜誌也沒當上職業球員。。。


這麼懶還想當程序員??你真以為這行業是誰都能做的么?


題主你就是寫的少,沒別的了,編程編程,得靠大量的編,不是靠看書。你看許多書,每本書估計都光看個目錄,有個鳥用了?比如你說打算從事C++,你把C++Primer的習題全部做一遍,和答案對照,實在不懂的,就把原題貼上來問,也會有很多熱心人給你長答案的。加油!


業餘自學編程然後想出來找到工作,有點難,非毅力頑強者不可為,其實科班出身的在學校不努力學習出來後還是找不到開發的工作,我們班同學很多就是如此,跟你說更實際的情況是,他們有些人是培訓過4-5個月的(在蘇州的培訓機構,不怎麼出名),大部分找到工作了,工資最高6k,一個5k的天天加班累成狗,一個5k的在杭州做外包,晚上一般干到11點以後,目前還有幾個人沒有找到工作,因為他們那一期班老師比較坑。

培訓班什麼的,在哪都坑!但是除此之外你無路可走。想儘快踏進這一行的話,這就是一個你觸手可及的途徑。要找就找行業內排名前幾的培訓機構去培訓,師資還是比較強的,自己上網搜,免得人說我打廣告,某馬還行。錢是要花的,出來一段時間就掙回來了,這是用金錢換時間的一種做法,從此就靠你自己在這個行業打拚了。

不得不說培訓班裡面還是很辛苦的,每天晚上都要學習到很晚,每天如此堅持四五個月。在班上一起學習氛圍比較好,同學可以互相交流研究,可以問老師。我班裡幾個同學目前正在北京的兩家培訓機構裡面上課。我隔壁班的幾個人是去年就在上海培訓的,(一個機構,總部在北京,上海是分校)培訓出來的三個人,一個拿9k,做外包比較累,換了個7k輕鬆點的工作了。一個拿8k,一個拿10k。雖然沒官網吹的那麼多,但是真的不能算少了,畢竟應屆生,工作經驗肯定是編造的,唉,誰也不想造假,可是沒辦法,工作後能勝任工作就好吧,不能勝任肯定會被辭退了。

關於語言的選擇,我想說的是,C++太難了,不適合你這樣的,選個Java或者php入門吧簡單點,以後工作後慢慢學。你現在需要的是入門!不是成為大牛!不管你選什麼好好去學,別還沒學就想著以後前景怎麼樣,以後路越走越窄遇到瓶頸,這行裡面太多人離瓶頸還遠著呢。我以前也是糾結要學什麼語言,現在想通了。

我是一個什麼都會點的渣渣,考研花了一年時間,然後沒考上,導致我現在求職也達不到公司要求標準,我也沒辦法只能去培訓。原來我想著是去學Android儘快多掙錢,儘快讓自己成長起來,升職加薪,出任CEO,迎娶白富美。今年畢業,我心愛的人離我而去,對我打擊太大,如今心灰意冷,我不再需要急於成功,不再需要變得那麼厲害。我只想挑一個技術切入點入門,找個還算可以的工作干著,然後慢慢再學習。

不好意思說多了,可能沒幫上你什麼,我不想刪了,還是匿了吧


我覺得題主被知乎大牛的精英成長路線搞糊塗了,大牛們的確厲害,然而我們大部分人都只是凡人,根本沒那麼強的毅力和智力。入門編程只需要找准一門語言,再找一套入門教學視頻或者書籍,從語法開始一步步跟著節奏走,到能做出一兩個有規模項目的時候就可以去找工作了。覺得自學吃力經濟條件又允許還可以去報個培訓班,帶你進入這個行業是沒問題的。題主你浪費一大堆時間去補高中數學實在沒必要,那些東西以你一個新人的水平根本用不上,會加減乘除四捨五入就ok了。至於英語的確是比較重要,但也不是現在就得惡補,不會還有翻譯機嘛,給類命名先用拼音也可以啊,新人不就是要培養學習興趣嘛。總之先入了門再說,總不能要求別人出山得把各路門派武功都先精通了吧,那估計還沒入門,就已經被這些繁雜的東西搞得信心全無了。

上了知乎後我就發現只要有外行想學習計算機的問題出現,下面清一色一堆讓你看數據結構高等數學操作系統等等,一上來就對一個小白列了這麼多,這哪是指導,明明是勸(zhuang)退(bi)。知乎的確是個很好的知識社交平台,然而到處充滿著精英文化的優越感,有些時候實在是在誤導人。


推薦閱讀:

你們是如何成為編程大牛的?
一個合格的 Python 程序員應該具備怎樣的基本能力?包括哪些具體方面?
C++ 有哪些缺點?
if嵌套的代碼風格哪種好?
你有哪些想要分享的 PyCharm 使用技巧?

TAG:程序員 | Python | 編程 | C |