真正「自學」入門編程/程序員是一種怎樣的體驗?

雖然我號稱「野生」程序員,但我的「野生」是大學本科不是計算機專業,實際上入行開發坐程序員還是進了培訓機構的。

現在自己開始做線上培訓,效果不是很理想,主要問題是大家都不動手,課堂上沒反饋,布置的作業基本上沒人做,上我的課,估計就聽相聲來了……

但這樣肯定不行啊!?

我想起我上培訓班的時候,老師每天點名,用盡各種辦法逼著,最後一個班30個同學也就5/6個能畢業找到份開發的工作,所以比較好奇:

有多少童鞋是完全通過自學(看書/看視頻)入門程序員的。入門標準:找到開發相關工作,測試運維的都算。

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

成功的童鞋,分享一下你們的學習路徑~方式啊~工作後的感覺啥的啊!


我小學上過一些電腦興趣班,之後適逢小學圖書館有些廢棄的 Apple II,就去借書自學 Applesoft Basic 和 8086 彙編。然後上中一家裡買了個二手PC AT,就讀書自學 DOS 和 GWBASIC、x86 彙編、C 語言等。中二繼續讀書自學圖形學做三維軟體,並在遊戲公司做遊戲開發,這幾年中又讀書自學了 C++,中五(即內地高二)才發行了第一個作為主程開發的遊戲《王子傳奇》。記得應該是中六(1995年左右)才第一次用到互聯網,要撥號而且逐分鐘計費。

似乎到今天我還是比較喜歡「閱讀→寫代碼」去學習編程和相關技術,所以也做了個書單給有需要的人。


初二在學校科技展上看見了C++覺得挺好玩就弄了本Accelerated C++啃,編譯器都不會下在手機上用C4Droid寫了近兩年程序,不知道知乎貼吧還能問問題,有什麼問題只能死磕或者翻各大論壇和搜索引擎。四年自學生涯讓我堅信沒有什麼東西是興趣不能攻克的。即將高考,不知道大學會發生什麼事情。


我,初三學c語言,大學憑著愛好報了計算機,但沒怎麼上過課,計算機網路啥的基礎課都是自學,大一暑假找了實習,現在大二在學校實驗室做高並發業務的架構,自認為不比工作的程序員差。 我的體會就是自學才是計算機入門的正確途徑,靠上課學是學不會的。平常做項目中會逼得你不斷回頭去看那些科班的基礎,然後更好的理解運用他們。


14年畢業,普通二本,機械專業。

14年8月入職某核電國企,15年1月離職。

15年3月來深圳跟大學室友租房子自學,15年6月23號入職深圳一家互聯網公司。

現在剛進第四家公司,雖然技術比較爛,但基本面試都不差,平均面兩三家公司就能有一個offer。

想想當初,自學三個多月找到工作,技術確實比較水,所以經理問我要多少的時候,我說5K,順利入職。

如今兩年多已經過去,技術提升了一丟丟,好在喜歡這行。

從不後悔入行,從不覺得那三個月自學有多苦。

想自學的朋友們,堅定信心,找准方向,先學點門檻低、熱門的內容,寫個demo找到一份工作吧。


搜索引擎開始能用都是我上高中的時候的事情了,那個時候的自學才是真正的「自」學。現在的人獲取知識這麼方便,一台筆記本這麼便宜,Visual Studio又不要錢。不像我以前,自學的時候的每一步都需要一堆錢才能支持。我覺得每一個人都應該至少達到我這樣的水平,不然都只能怪自己。

自學這個事情主要看你怎麼界定。很明顯,任何老師都沒有教過我怎樣能把代碼寫得更好,這些課大部分也講得不好,上大學之前也都已經能做簡單的腳本語言的模擬器了,勉強就算自學好了。但是你說上大學本身跟文憑有沒有用?那當然是有用的。起碼我去M$實習的時候,就是班主任找她老同學幫我內推的(逃

說來畢業後去了上海,排隊等戶口要先做什麼學位鑒定,大概就是花點錢然後給我個證書,說我真的是從華南皇家理工畢業的。我帶著這些證件去找工作人員的時候,本來對方還一臉嫌棄的樣子,後來翻著翻著發現我是本科畢業,馬上這個表情就變了。

這是我第一次覺得本科畢業這麼牛逼(逃


(其實我想說的是,當前真的不問出身。阿里也有漢語言文學畢業的技術專家。)

文學院本科畢業,算標準文科吧。路程大約如下:

0. 大學用linux,幫裝電腦,背得xp神key mrx3f 共 25 個數字字母

1. 畢業後技術支持工程師,09 年月薪小於 2000

2. 一年後轉為工程師

3. 畢業兩年,前往北京,運維開發工程師

4. 一年後,犯錯,被頭條KO拿美團 offer 後,延後一月入職,自學 kr c 語言

5. 入職美團工資偏低,待三個月後轉正時要求漲到入職前上一份工資,CEO特批

6. 入職六個月,沒學 java 前提下開始 java官方文檔,轉為 Java 工程師

7. 美團期間,看 spring 部分源碼,Java 部分源碼及標準,前端ecma/css/html等標準,其他工作要求什麼學什麼。美團休息室呆過三個月,也就是三個月吃住都在公司(窮)

8. 離開美團前往南京時,(由於美團工資太低),南京開和美團給我一樣的工資

9. 半年後,無錢買房,漲薪無望…離職前往北京。美團讓我重新入職,比之前加 50%+。最後去了頭條,第一天投簡歷第二天面試第三天入職。

10. 再半年後,南京公司讓我回去,按頭條薪資開…忍痛離開頭條

說了這些,再說業餘乾的事:

1. 移植過很多東西,最近發現 curl for Android 聯通客戶端居然有使用

2. 阻止運行去年轉讓,10萬加

3. 今年全新黑域,用戶捐贈(支付)超十萬

業餘代碼可以去 github 看到,工作代碼同樣力求簡單極致。


「真正」這個詞挺讓人困惑的。

難道還有假的嗎?

如果要咬文嚼字,這個問題,有三個詞能讓討論大爆炸。

一、「真正」

二、「自學」

三、「入門」

遇到問題,是不是需要查資料看文檔問人?
自己谷歌,查資料看文檔算是自學,上網提問等人回答算不算?
如果不算,這和上 overflow 搜索別人已經回答解決的問題區別是什麼?
向網友提問等回答,和在開源社區里提 issue 等回復區別是什麼?
什麼樣的編程水平才是入門?

能學會能入門就很不錯了。

希望這個行業,能提供考核入門的標準,不要又搞出來一條鄙視鏈了。

利益相關:大學開始接觸電腦,雖然CS專業, 但是畢業後才編程開竅的人。

迦倫:怎樣才算真正的在一起了?


看了些答案,是不是潛台詞就是計算機專業畢業的都不算「真正的自學」呢?我覺得大可不必這樣劃分啊?

當年學校只教了C,C艹是自學的,Java則是畢業了幾年才知道「這是什麼鬼」的,OOP的思路跟過程式對比簡直天壤之別,那時候也沒培訓班,如果不會自學那就肯定要倒下了。工作後Web興起,ASP、Servlet/JSP、PHP、Perl是自學的。上一個十年AJAX興起到現在框架盛行,JS及其若干框架是自學的。同是上一個十年還有一波動態語言熱,Ruby、Python也是自學的。這個十年新語言層出不窮,數數看新語言舊語言這幾年自學了Scala、Clojure、Go、Scheme、Kotlin、Rust、Haskell……

人生何處何時不自學?技術日新月異,總不能歲歲年年都泡培訓班裡吧?


其實只要:

&> 學夠8000小時,看夠10本書

我感覺就行了,沒有太多的技巧

努力非常非常重要,尤其是長期堅持不懈的努力。

我就是這樣,一個普通計算機本科生,沒有老師 or 學長指導,100%純自學Web前端,今年校招拿到百度的SP(special offer),現在在Mozilla實習

雖然是計算機系學生,但是大學課程與環境對我學習Web前端沒有任何幫助

但是我很努力,非常努力


985非計算機專業,入行十幾年,完全自學,沒上過培訓班。

學習方法主要是惡補基礎知識加大量的編程。

現在感覺就是選對了職業。這輩子能做自己喜歡的工作真的很爽。還有就是這行太累,昨天發版本,半夜兩點才回家......


當年沒考上大學,讀了自考。

從那以後就開始了自學生涯,第一年還乖乖的去聽課,第二年就完全放棄課堂了。

後來考本,讀研,中間穿插學點通信,畫圖什麼的,全部自己來。

仔細想想,讀研的時候第一年是老師講課,只要老師講課,我都聽不進去。。。。

高中大概就有這種情況了,最喜歡的就是老師講課45分鐘,我拿出來10分鐘左右看他講的內容。其它時間就是思考人生。

然後果斷落榜了哈哈。

但研二的時候,從寫論文開始,對自學能力的培養已經初具雛形了。

那時候導師不會教你,第一,給了十幾個方向,你自己去選一個。第二,沒了。

師兄都沒有。。。老師也不可能每一個方向都特別熟悉。

寫論文的時候最大的感覺就是,nnd,給我留條路好不好,基本上全世界都在做科研,很多問題特別細緻,根本找不到優化的空間,就算找到了,只要你認真找論文,總會發現,我靠,幾年前他們就想過這種方案了,而且比你做的更好。

這種感覺真是生無可戀。

我選的是基於agent的軟體工程,馬丹到現在agent都沒在工業領域做起來。

學校沒項目,只能要求寫論文,死要求是必須要核心期刊發表小論文。

我們是湊齊趕上一個國際會議,被SCI收錄。

所以雖然讀研,但基本都是自學。

而且,畢業之後我也是一行代碼都不會寫。

之後來北京找工作,就在自學這條路上一路狂奔了。

從JAVA語法開始,我用了一個月的時間學會了JAVA語法,spring,JSP,mysql,svn,tomcat,jdbc等等。

工作就是解決問題,百度,msn上請教別人,不敢問同事,周末看書,晚上會通宵趕進度。。。

然後換了個環境,學習memcache,maven,linux,webservice,設計模式等,也差不多花了四個月時間,現在想來,就是那個時候自己有了獨立完成項目的能力。

跟著進了搜狐,整個人都飛速成長起來了,學習架構,緩存,高並發,分散式,消息隊列,代碼規範,開發流程,介面設計等等等等。

大概一年的時間,中間又申請做演算法,自己花時間重新理解了一下分類聚類。

後來跑到了金融公司,學會了Erlang,comet,分詞,詞性標註,抓取,去重,索引,高亮,hadoop,Cassandra,es,drools,qpid等等,還會了點股票,期貨,研報等等。嗯,還有angular,thrift,bootstrap,微信公眾號開發等等。

大概5年的時間,好像學習進度放緩慢了。

跑出來之後似乎就沒再學會多少技術上的事情了,只有支付,電子簽章勉強算是新東西,說來慚愧,最近幾年應該都沒學過什麼新技術了,主要精力轉成了產品,運營和公司管理,以及各行各業的商業模式,說起來自從自己創辦公司以來,我已經接觸了100多家不同的創業團隊了,也算是半個創業導師,我不能幫助別人怎麼成功,但多數能幫助其它人不要死掉。

嗯,勉強懂點了Android和iOS。

所以,基本我全是自學,也習慣了這種學習方式。

仔細回顧一下,大概有以下幾種學習途徑。

第一,看書,博客,源碼。

第二,身邊大牛,群里大牛。

第三,項目

對的,完全不存在看視頻這種東西,看過一點實在看不下去。

我身邊的大神們也一樣,他們的快速學習能力和閱讀文檔能力特彆強。

在白社會的時候我們已經是微服務了,從框架選型到應用實踐到改寫源碼定製組件,大神們只花了一個月時間。

在他們眼裡一個新框架的學習靠看視頻?不存在的。先弄明白應用場景,再去猜測實現方案,再看源碼對比,更牛逼的事,幾乎是看完源碼就能動手去改他們覺得不爽,或者是要擴展的功能。

所謂厚積薄發,就是這樣,你能感受到這就是在討論解決問題的方案,不同人有不同理念,有不同的設計哲學,但編程這個世界對他們無秘密可言。

我只能做到可以快速理解思路,做不到看完源碼立刻改進。曾經看過一個JAVA整站抓取的源碼,名字都忘了,3天看下來看的要吐,隨便改了點東西就交差了,完全受不了3級以上繼承,根本沒有介面這種設計理念。

大概是從那裡有心理陰影了,對各種JAVA開源框架的精妙設計理念都一直不敢恭維。

乾脆就不看了只懂懂設計思路是什麼,可惜啊,自己當年還是沒人指導,放到現在一定說,必須看,你覺得不爽你可以改啊。

但人年齡大了,主要精力真不在編程上了。

總結起來,寫代碼要培養好的主動學習能力,看視頻的方式是我第一個強烈反對的。

我描述的幾種方式都比視頻高效。

很多人說我沒基礎 所有的人都是從零基礎入門的啊。

所以差別不上有沒有基礎,而是有沒有主動學習能力。

這種能力如果沒有,你轉到互聯網第一很困難,第二成長不起來。

一個更新換代如此頻繁的行業,怎麼會容納沒有主動學習能力的人呢。

所以,儘快從要別人「教」,轉換成自己去「學」。

專欄里整理了一部分,也簡單說一下。

1.查找資料的能力,要不要培養?

2.閱讀第三方文檔的能力,要不要培養?

3.快速定位問題的能力,要不要培養?

4.解決問題的能力,要不要培養?

5.歸納總結的能力,要不要培養?

6.高效嚴謹的能力,要不要培養?

都知道編程要工作經驗,某種程度上更看重這些能力。

最近一直在整理關於思維方式,學習方法的資料,試著去幫助學習慢的人改變學習方法和習慣,培養工程師思維。

嗯,還沒太成體系,希望對大家有幫助,但是無論如何,請停下來,不要再看視頻了~


06 年中專畢業,專業叫 *計算機軟體應用*

學了些打字、office 什麼的

畢業後工廠做了一年操作工,三千塊積蓄去了培訓班學攝影,沒學完就留在那兒當培訓講師,教些攝影入門、PS 基礎,之後輾轉多個城市、培訓一做就是五年

做培訓的最後一年(12 年),覺得有些膩了,加上收入也不行(哈哈,這是主要原因),決定轉行,試著學 DW,進而了解到什麼 html、css、js、php 之類的詞,亂七八糟學了一通之後,發現居然還有一個叫 *前端工程師* 的職位,一拍腦袋就決定學這個了

從12 年 7 月份開始,每天講課之餘抽出兩三個小時學習,就是網上找各種資料、視頻居多;中間因為生活瑣事斷過很多次,各種懷疑人生(^-^),直到第二年的二月份才把 demo 完成

我記得 demo 是仿一個培訓學校的官網,七八個靜態頁面,jquery 都沒用,放在 U 盤裡,面試的時候帶上

(可惜現在找不到了、很有紀念意義)

經過幾次面試失敗,在 13年 3 月初的時候拿到一個十來個人的小分公司的 offer ,開發就一個,其實做的是美工的活兒,靜態頁面寫完通過 qq 扔給總部 php 開發套程序,月工資 3500,之後...

就到了今天...

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

一直在做前端,沒有機會也沒有能力涉及其它開發領域;算不上工程師、只能叫 *寫頁面的*;典型的基礎差、不懂演算法、設計模式...

年紀大了,腦袋沒以前靈光了,主動吸收知識已經有些困難、只能靠踩坑積累經驗

回想起來,我是很幸運的,要是晚兩年(到 15 年),以我這資質,一定就沒這麼容易了

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

最後,

雞湯我也不太會說,送給那些正在自學開發的同學:

*莫在倦時退場、力量來自渴望*

-- 不知出處、就這麼一聽吧

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

最後的最後,

第一次手機打這麼多字、太累......


我絕對是,學歷 大專,機械專業,大學打LOL了,出來啥都不會,家裡窮也沒錢培訓,唯一一點就是喜歡電腦,然後包括顯示屏九百塊錢開始學,然後當時Java比較火 選擇的Java方向。

入門是最困難的時候因為學習基礎做不了任何事情,也不知道為什麼要這麼做,時刻懷疑學習這些做什麼真的能找到工作嘛,學完語言基礎後,又要選擇方向,Android和Web(後端)兩個方向,因為比較喜歡手機所以選擇的android方向,然後固定早上9點起床跟著視頻上課,晚上做聯繫,咬著牙每天兩點睡覺堅持了四個月(1一個月Java基礎 2個半月android基礎)算是挺過來並且靠跟著視頻敲的項目demo和寫了一年工作經驗(寫0經驗真是一個電話都沒有,不是鼓勵要騙人,而是覺得能力可以的能完成項目的話還是稍微裝飾下起碼過了hr這關有個面試機會吧)算是找到工作了,然後就進入了面向百度編程模式,有不會的快速學會查找應用,兩個月的加班,直到第一個版本上線,一整個項目下來成長了很多,因為當時學習的視頻比較老沒有RecycleView Okhttp Retrofit Rxjava MVP Dagger2 GreenDao RxLifecycle butterknife這些 所以這些都是在工作,路上,回家現學的,臨陣磨槍不快也光,快速學習會了這些 第一個版本技術上也沒有落後,性能也ok 算是交上了比較滿意的答卷,中間也遇到內存泄漏問題 多進程 屏幕適配 機型適配 ,自定義view 一關關的總算闖過去,然後繼續迭代一直在接觸更多的業務,需求,藍牙 直播 音頻 等等.現在再稍微大的廠沒那麼多事情,有很多的時間來看書學習.一個個仔細這些框架的源碼,知其然更要知其所以然,每個好用的框架背後有著優秀的設計,邏輯,系統源碼...

現在看的書單:

《android情景源代碼分析》

《 thinking in Java》

《effective Java》

《設計模式》

《 數據結構和演算法》

《jvm虛擬機》

《並發編程實戰》

看完的

《Android藝術探索》

《Android群英傳》

《Android源碼設計模式解析和實戰》

現在15年這個時候開始到現在整整兩年了 20k,半隻腳踏進去了吧,還不算是入門。 所以剛剛看完書 每天還要到兩點

時間線

  • 2015.10.20 開始自學
  • 2016.2.18 投簡歷海投 有一些很小的公司讓去面試
  • 2016.2.24~25 面試
  • 2016.3.02 拿到兩個offer,選擇了其中一個開始工作。

剛開始工作什麼都不懂,一個簡單問題百度搜好久也不敢去問同事,瞎寫不會了晚上趕緊看第二天寫,慢慢的看的多了懂的多了就很熟練了

我比人家cs 985 211的都差 不努力就不知道被他們超到哪裡去了,實在不敢懈怠,如果你沒一顆努力、吃苦、堅持的心就不要選擇這條路,希望在選擇這條路時考慮清楚

並不是來說自己有多成功或者裝個b就跑了,而是希望給在自學、或者要轉行的人一些迷茫路上的希望,有問題可以評論 我會一一回復的。


=======11月12=========

一上來這麼多條受寵若驚 嚇的我送外賣的手一抖差點就掉地上,評論一個一個都看了

1、有說匿名吹牛逼的,手動微笑,你每天九九六 回家再看書看視頻你試試,前幾年還是加班對自己提升最快(是真的有需求而加班,我反對為了領導加班而加班),熬過去你試試,我努力加班是為了以後不加班。。。

2、有問應該去培訓嗎 這個要看個人,我沒培訓過,我是一直都支持自學的,那個錢真的貴,而且自制力不好交了錢也沒用,看過太多貸款培訓然後一事無成天天打遊戲不學習的,最後去送外賣。學習的事情從來都是靠自己的。

3、有問學習路線的 ,我說說自己的,不一定適合所有人:

(1)語言基礎

馬士兵的Java視頻 馬老師結合基礎知識和虛擬機一起講簡直不能太棒,只看完基礎就好了,書的話瘋狂Java雖然大家都覺得沒有Thinking in Java逼格高但確實是適合入門的一本書,也是只看基礎部分。

因為我是學Java的 所以只說Java的,前端同學自己知乎

放上馬老師的教程---基礎部分 去掉了GUI 反射.

鏈接: https://pan.baidu.com/s/1pK980Hl 密碼: 2yrf

瘋狂Java pdf自己百度

知乎上有很多關於各種語言入門的帖子

Java 學習線路圖是怎樣的?

Java 初學者,如何學習 Java?

等等。。。

(2)選擇方向

選擇一個方向的 比如前端 android 後端 這種問題知乎也有很多啦

(3)入門

選擇好方向後 選擇該方向的視頻 TB 幾塊錢就能買到 剛開始可能抓不住學習方法 多試幾種 合適自己的就是最好的

(4)進階

這時候視頻已經幫不了你了,要閱讀一些有營養的書 大牛的博客 然後結合實際


本科材料 現在做碼農

材料專業非常坑 就大一學過一點C語言 對於非計算機專業而言 學C基本就等於啥也不沒學

後來搞數學建模大賽 就自學了MATLAB 但MATLAB也是沒卵用的 首先崗位非常少 很少有公司會用付費商業軟體做開發 其次 MATLAB就是個大計算器 我用了八年居然還不知道OOP 第一次接觸到OOP概念的時候驚為天人 代碼居然可以這樣寫!

後來因為項目需要 想把設備管理起來 就自學了python 一邊做項目一邊學習是最快的,因為你知道你想要什麼。然後就用python學機器學習,看了不少書和視頻,全都是自學的。書單可以參看我之前的一個回答。

霍華德:我今年 26 歲,想學習人工智慧領域的知識,如深度學習方面的。需要閱讀哪些書籍,或者找哪些人學習?

我沒參加過培訓班,但是堅持學了很多年,細水長流。現在因為工作需要又要開始學C/C++。碼農這行,知識更新很快,還是要有點活到老,學到老的精神


我,本科土木,去年十月開始自學前端,看書+視頻,今年二月份找到實習,七月份正式入職。感覺這種事,沒什麼難的,主要還是靠自覺性。


編程大部分都是自學來的吧,而且工作以後更需要自學提高


買書照著抄代碼,這是初一的事

高二出國之後就全靠 Google 了


興趣是第一老師,錢是第二老師。

對編程不感興趣又不太缺錢花的人,輪子哥手把手教學都沒用。


這樣說吧,你知乎上看得到的程序員,都是野生的……


興趣+天賦

學編程真的是悟性這一塊還是挺重要的

不過我大概是技能樹點偏了……

(不由得感慨一下……但是自己的能力還是有限,怕是自己在數學方面很難有大的提升了)

和軟工專業同屬一個學院,但是我專業就是什麼都學什麼都不精…儘管大一一開始就有C++的課程,但是我從大一下學期才能算開始正式開始學編程……

大一上學期的那點基礎確實不夠看,大一下的期末開始接觸Java,發現自己C++在OOP一塊不是很懂的地方用Java來看不知怎麼講一下子就通了……(感謝浙大的MOOC)

很開心啊→_→

然後就發現自己成績明顯下滑了╮(╯_╰)╭

還是荒廢了學業→_→

數學基礎不好真的不行的…

惡補數學基礎……然而自學數學可比自學編程的正反饋低太多了……

編程要是能解析一個表達式出來我大概都能高興一陣子→_→然而數學學一個概念還是覺得太抽象了,也不懂得怎麼運用到實踐上╮(╯_╰)╭

現在才是最尷尬的時候,不上不下。

日常語無倫次……


推薦閱讀:

程序員加班正常嗎,加班和老婆/女朋友吵架正常嗎?
26歲了漂泊在外,還沒有對象,被父母不斷催婚是一種什麼樣的體驗?
為什麼女程序員少?
非計算機相關專業學生對自身專業不看好時應該堅持本專業還是半路出家當程序員?
1024程序員節,是不是要拒絕加班?

TAG:程序員 | 編程 | 自學 | 培訓 | 自制力 |