怎麼看計算機可以自學成才,坑要自己爬的說法?

導師常說現在網路這麼發達,不懂就去Google,彷彿很多東西都能從Google上學到似得。我以前也這麼覺得,可是現在才越發覺得這種想法太片面了,Google上的東西其實也非常皮毛。當然我也見過不少靠自主學習的大神,比如刷完演算法導論的以前同寢室的。但是這依然沒能改變我對自學成才這種做法的消極,負面的看法。因為最近知乎接觸比較多吧,見識了非常多世界頂尖大學的牛人,加上最近寫小論文深刻的認識到自己的局限性,外加了解到很多同學在國外實打實的動手做課後任務吧。以上種種,越發覺得好大學不是蓋的,國內教育和國外教育差距極其巨大的,看到國外很多大學的課程作業真的深度和認真程度各方面吊打天朝,見過最牛逼的是老師自己親手寫了個教學用的渲染器,然後讓學生完善。所以發覺外國大學生其實並沒有那麼散漫,反而比天朝更加嚴格刻苦。

所以想問大家這種懷著興趣愛好,抱著勤奮刻苦,自學成才的想法真的是一種實際可行的做法嗎。

我個人是持有消極的態度的,因為身邊的很多同學,包括師弟師妹都有這種不知道學什麼好,怎麼學,沒人帶,感覺啥也沒學到的迷茫困惑感吧。

希望各位不論是接受過頂尖教育的高材生,還是自學成才的大牛們,都來講講自己的計算機成長之路上的經驗看法吧。

問題有點模糊,可以從幾個方面回答吧,好大學對你的影響,國內國外教學的不同體驗?自學對你的影響,怎麼做到一個人客服各種困難,有哪些好的經驗領悟?你贊同導師強調自學的重要性嗎,或者大牛們不怎麼教說自己爬坑的重要性,這種說法做法有沒有忽視教育的作用,畢竟有很多坑是爬不過的。


反對高票 @胖胖 的答案。

對於高票答案,我有一點是贊同的——實踐非常重要,尤其是對於計算機相關專業。自學也是必須的。但是如果僅僅只是羅列那些優秀的網站,鼓吹在折騰中學習,對於理論(書本、論文)很不屑一顧,我是反對的。

知乎上對於某些問題,某些答主大篇幅羅列各種素材、資料、網站(當然,本身就是尋求這些東西的問題除外),卻沒有對此進行一些品評或者加入自己的見解,然後由於自己局限,不恰當地鼓吹一些東西,得到一干人等贊同,事後便拂袖而去,對於這種現象,我是反對的,這很可能把一些學習者帶到坑裡。

本篇回答主要針對在校學生,以及時間充裕且自認為基礎欠佳且需要學習的人;基礎紮實,經驗豐富的技術人員可以無視ヾ(≥へ≤)〃

大學或者(及)研究生階段,我們的時間非常充裕,有足夠的時間去消化吸收本專業知識,理論和實踐應當並重,這也是學習的最佳捷徑。好的書籍或者論文,如良師益友,能夠有效地指導我們的學習,培養學習習慣,快速避過一些坑。這些都是前人的經驗結晶,理論原理都清晰明了,直接獲取,消化吸收,豈不快哉。

理論和實踐並重,那麼實踐自然是必不可少。要想更為深刻以及直觀地理解,大量的實踐練習是必須的。舉個栗子,計算機專業的學生有《演算法與數據結構》這門核心專業課,首先就要有人領你進門,然後自己私下找好書繼續學習,並編程實現那些演算法和數據結構,不僅理論紮實,實踐到位,而且可以深入學習所用語言。

對於我而言,第一步做的並不好,畢竟當年年少無知。在我大四和研一時我又開始了這門課的學習,由於時間充裕,我學習了《演算法導論》(1~32章),完成了所有演算法和數據結構以及大部分的習題,耗時大概七個月吧,前不久整理完:GitHub - bravepam/CLRS: The implementation of algorithms data structures of Introduction to Algorithms 2nd

你若要問我,(基本)看完做完《演算法導論》有什麼感覺,我只能回答——沒有感覺o(*≥▽≤)ツ。

我們現在再來看高票答案的觀點,並不按順序。

1、 羅列StackOverflow,
Github, CodeTriage, TopCoder等網站。

我不知道有多少人是靠長時間混這些網站,從小白或者入門者開始學習的,但我所知我身邊是沒有這樣的人的。註冊個賬號,然後幾個月不管才是多數初學者的常態,問不出什麼問題,對於一些優秀解答也是不明其所以然,因為沒有足夠的理論基礎支撐。

其次,這些網站的大牛也不是混這些網站才牛逼的,而是本身牛逼,去混這些網站,才為人所知的。如果你去請教這些網站的大牛,我敢賭五毛,他們會讓你好好看書學習,注重實踐,不懂的再上來問,絕對不會說讓你長時間泡這些網站來學習。

再者,拋除StackOverflow這個問答網站外,CodeTriage 我不知道,其餘兩個是初學者能玩的?沒有基礎怎麼玩?Github很大可能難道不是star了或者下載下來再吃灰?
TopCoder你有基礎也不一定玩得了,而且如果不是喜歡ACM什麼的,長時間浸泡學習效果性價比實在太低,因為演算法和數據結構只是計算機科學的冰山一角。

2、 閱讀STL、chromium源碼以及其他各種優秀開源項目源碼。

先貼出我的ministl:GitHub - bravepam/MiniSTL: 10 STL containers" implementations

我首先想問, @胖胖 答主看過STL沒有,C++基礎不紮實,諸多特性不熟悉或者不了解,是準備看字母玩嘛?

閱讀chromium源碼,這個我沒讀過,但是我讀過LevelDB,也是谷歌的,C++寫的,像這樣優秀的開源項目源代碼,學習難度比STL源碼高得多,畢竟ministl可以寫,而且有書,但是優秀開源項目寫不來,同理也是準備看字母玩嗎?

3、 破除名校/名師觀念。

如果你是指破除權威,敢於提出問題和合理的質疑,我是斷然不會反對的。但是你所謂的破除就是矮化教授,鄙視學術,那我只能說你並不如你這篇答案展現出的博學,同時夾帶著浮淺和反智,這裡我贊同 @畢小鬧 。

大牛導師對於本科生而言確實重要性不高,因為他們能夠指導你的時機確實不多,但是好的學校中的你的同學以及學習氛圍對於自學重要性有多大,自不必言。

================================分割線( ⊙ o ⊙ )============================

紙上得來終覺淺,絕知此事要躬行。不鼓吹理論至上,也不宣揚實踐萬能,理論結合實踐的系統學習才是最佳學習方法,尤其是對在校學生而對於已經工作的人,相對來說更加側重於實踐當然是更有益的。

對於各方向學習的好資料和網站,知乎有很多,我就不狗尾續貂了。

再次提醒:

本篇回答主要針對在校學生,以及時間充裕且自認為基礎欠佳需要學習的人;基礎紮實,經驗豐富的可以無視o(* ̄▽ ̄*)ゞ


(01.08.2016 更新)看到一句話,分享給有志學習的人:如今這個時代,武林秘籍隨處可見,但能誠心修行的人就不多了。

(其他更新的內容在最後)

先聲明我不是大牛。母校非北大清華,也不是常青藤。我只是想分享一點自己的心得。

我覺得世界還是越來越平的。寒門出貴子可能性不大,但學業有成,自立更生還是不成問題的。

先破除一個舊觀念,「名校」一定好嗎?念過博士的都知道,越是學術大牛,越是對給本科生講課不上心(個別德藝雙馨的導師例外哈)。所謂名校最大的優勢在於聚集了一群比較「活躍」的學生。扎克伯格在宿舍里搗鼓Facebook,他的室友也不可能天天LOL吧?好學生之間的互相促進是最大動力。

再破除一個觀念,導師說的一定對嗎?說實在的,到今天信息爆炸成這樣,搞家政的,做足底按摩的都掌握著各自行業的核心技能,學校里的大多數老學究,真的跟不上時代了。經濟學院,商學院的教授,未必比一個開淘寶網店的網紅懂經濟。人家是實戰出來的,緊貼著時代的脈搏。搞計算機的教授更不用說了,教授實戰未必強。我導師雖說學術很強,但自己也是很多年不寫代碼了,都是底下小博小碩幹活。他本尊連論文都很少親自動手寫了,都是別人寫好了審閱一下,提提意見。他最重要的工作是全世界搞交際。

現在想學真本事,要靠工作積累經驗,主要是靠人帶,死啃書本是沒用了。比如你要做大法官,哈佛法學院畢業肯定沒用。但如果你是首席大法官的助理,那恭喜你,下一個法官就是你。哈佛法學院畢業只是當助理的敲門磚。

但還沒工作,沒人帶怎麼辦?

導師叫你去google那明顯是在敷衍你。要麼就是他自己水平太差。現在大多數教授也就是個百度百科的水平。不要羨慕國外大學,用維基百科當教材的老師我也不是碰到一個兩個了。所以導師教你的都是錯的。(這裡有人說我太極端,澄清一下,不是為了貶低教授,而是這個世界實在變化太快,是知識爆炸的時代。而且學術水平越高的教授,花在本科教育上的時間越少。希望不要誤解。)

關鍵是要找到行業大牛常去的地方。這也是我為什麼說世界是平的原因。尤其搞計算機,

Stack Overflow

How people build software · GitHub

上面這兩個神器起碼是要知道的。天天在上面混,多見識見識大神,想不進步都難。關於Github上怎麼找項目,有一個CodeTriage是很有用的。多找點項目上手,哪怕只是幫大神打打雜,也比閉門造車好得多。當然,有一個前提英文要好。不過這個不用擔心,多看看自然就好了,很快的。這又再次抽了以前應試教育的耳光,光死背語法是學不好英語的。

CodeTriage

另外自學敲代碼嘛,看書是一方面,最關鍵的是要多敲代碼,多讀經典源代碼。Java最簡單的就是看JDK,還不滿足的可以去翻翻google的Guava。都是google的java工程師每天都在用的核心庫。google敢開源出來的,說明代碼肯定經得起推敲的。Github上粉絲無數。

GitHub - google/guava: Google Core Libraries for Java 6+

學C++讀STL。再推薦個chromium項目的源碼,業內評價不錯,

http://dev.chromium.org/developers/how-tos/get-the-code

PHP,Javascript可以看看wordpress的源碼,寫的很漂亮。

GitHub - WordPress/WordPress: WordPress, Git-ified. Synced via SVN every 15 minutes, including branches and tags! This repository is just a mirror of the WordPress subversion repository. Please do not send pull requests. Submit patches to http://core.trac.wordpress.org/ instead.

自己寫代碼有問題怎麼辦?可以去網上的Code review網站,比如StackOverFlow的好基友,

Code Review Stack Exchange

自己寫代碼寂寞了怎麼辦?想找一群名校高材生陪你一起練習寫代碼?推薦另一個程序員必須去的的地方,叫topcoder。如果聽說過ACM,對這個一定也不陌生。不但每個月都組織大賽。而且可以到上面找項目,有錢賺

Topcoder is repeatable, on-demand crowdsourcing, done right, at scale.

最後,如果要找工作,也有專門讓我們刷演算法題,面試題的網站,LeetCode和Careercup大家都知道。不要羨慕什麼拿Google或Facebook offer的大牛,都是這裡面刷題刷出來的。

LeetCode Online Judge

https://www.careercup.com

工作以後,找准一個你認為的技術大牛,跟著他,嘴要甜,人勤快一點。有人願意教你的。

有了方法,最後就剩下下苦功夫了。坑是自己爬還是別人告訴你,都不重要。重要的是第一,要沉下心,先照著上面的方法,敲個十萬行代碼再說。第二,要熱愛自己做的事,興趣是最好的老師。大神和普通人的區別就在於下班以後的那幾個小時在幹什麼。

Python的起源

1989 年的聖誕節期間,吉多·范羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序... ...

看了上面這個故事,共勉。

======================更新14.07.2016=============

感謝各位支持,再談談我對自學的看法吧。

說到自學,大家的反應好像都是「我不是天才」,「沒有別人的天賦」。其實恰好相反,學習是一件特普通的事兒,我們每天都在接觸新的知識,這都是學習。把學習這事兒看的太神聖了,壓力就會很大,反而就畏懼,抹殺了興趣。

大學的的起源本身就是一群愛探討問題的人組成的自主社區。古希臘柏拉圖建立的雅典學院就是就是典型的例子。

世界最早的真正意義上的大學:博洛尼亞大學,起源自一群法學,邏輯學,語言學的學者,聚在一起修訂羅馬法典。屬於「法律行會(行業協會)」的性質。

所以大學的本質精神,在於聚集,交流,碰撞。最初並沒有明確的學生和老師的分工,所有人都是學生都是老師,就是為了求知。

反而是現代真正意義上的「大學」,由於競爭太激烈,大家對它的期望過高,反而形式化了。有的學生考上好大學之後,反而迷茫了,因為沒有一個對知識渴求的源動力,是被逼著考的大學。

大家也別誤會,我並不是在反大學,反教育。能考上名牌大學,享受優勢教育資源固然好。但也不要忘了那些沒有考上名牌大學,但希望學到本領的學生。社會是不是有方便他們求知的途徑。

IT行業特殊的地方就在這裡。開源的精神讓計算機自學提供了肥沃的土壤。很多語言,工具,開源項目都是起源於自發的社群。這些社區本身就可以被看成是一個天然的小大學。

很多人低估了開源的力量,以為開源就是軟體開發好了免費給大家用。其實不盡然,開源精神更大的意義在於一群有共同興趣,志向的人聚在一起,共同開發一個項目。然後把成果向全世界展示。過程中不斷地交流,思想的碰撞,共同成長,這才是最精彩的地方。這是符合大學最原始的精神的。所以之前的文章里也反覆強調交流對自學的重要性,反對閉門造車。

在國外這麼多年,一個最切身的體會,就是西方人的社區意識比我們強。現在我們用的很多語言最初都只是那麼個小腳本,都是靠社區的力量使他們發展壯大起來。不要以為那些社區成員都是白乾活。當一種技術成熟壯大起來之後,社區中的骨幹成員自然就成為了領域的專家,出書,開專欄,被大公司高薪挖走,都是常有的事。

再舉個例子,當初的stackoverflow也只是一個小圈子裡的問答系統。但就是有很多人不計成本地花時間在上面回答別人的問題。我們覺得他們很傻。但現在做大之後,你再看看,當初回答問題的人都成了大牛,教學相長啊。現在stackoverflow的reputation成了行業里硬通貨,是可以寫進簡歷里,直接拿offer的。就算現在問題已經基本飽和,基本都是在刪重複問題的情況下,隨便提個問題都是秒回。還沒來得及刷新頁面,已經有兩三個答案在下面了。相比我們也有很多做問答系統的,到現在還做不到這程度。不是技術上不如人,而在於大家的開源精神。

好像有點扯遠了,只是分享一點個人的體會。最後想對所有想要自學計算機的朋友說,在掌握了語言的一些基本知識之後,就加入到強大的開源社區里貢獻自己的力量吧。世界會因為你變得更好一點,你也會因此變得更強大!


如果學什麼都要別人帶,都要別人教,甚至要找名師、好老師,那你離開學校以後怎麼辦,你不可能一輩子都在校園裡的。到了社會後,沒了老師,沒了課堂,沒了教材,你是不是就不學習了?

你在這提問,不是懷疑自學的效率,你只是在為自己的懶惰找借口。先不說自學的效率低不低,首先本身這就是因人而異的,即使有的人自學效率低,至少他已經走在了上升的路上,而一味的排斥自學、排斥學習,誰帶你也沒用。


經濟學院,商學院的教授,未必比一個開淘寶網店的網紅懂經濟。

計算機教授未必比自學成才的程序員寫代碼實戰強。

我想說的是,用未必這個詞其實已經證明某些東西。

你可以想像下,中國80年代搞改革開放,90年代左右才開始搞市場經濟。

計算機行業更不用說,"越過長城"這第一封從我國發出去的時間是1987年。

那個時候沒有Google,沒有Git(更別說Github),然後你想想,在這種落後的教育條件下,那些如今被別人看不起的教授自學能力會比你差?難道因為時代發展了,社交軟體進步了,他們的經驗就不如知乎上某位答主?

我知道很多人看不起基礎性工作,認為只會搞學術不會用JS製作酷炫的網頁效果的教授是外強中乾。

甚至對你的學習絲毫沒有幫助。

可笑的是,他們推薦的自學教材的作者基本都是鼎鼎有名的大學教授。

僅僅從一本書,從文字,我都能獲得知識的收穫和思維的啟發。我實在無法想像,如果能親自和他們交流問題,收穫反而會不如漫無目的地去泡全世界最大的同性戀交友社區(當然,社區自有其好處)。

並且,居然有人會覺得水平越高,教學水平越低。我實在是無法理解。

單單從書籍水平而言,就完全可以反駁這種言論。你看看他們推薦的自學教材,那些傳世經典,哪一本不是出自大師之手?這些書籍給你帶來的收穫難道不比你從社區受益得多?

具體到人的評價,我是反對名校光環的,因為人是個體。

但要問我有沒有名校情懷,我是有的。

有個成語叫如沐春風。


自學成才論是相對於我等接受不到樓主說的那種世界頂尖大學教育的屌絲而言的,如果自己想學的東西有人教,傻子才自學呢。問題就是想學的東西沒人教,又沒什麼教材,只能靠自己一點點啃google啃英文。


必須來強答!!!

電腦僅限於WordExcel的水平,然而今年暑假的項目,老師一拍腦袋:我覺得你們這個項目用Java編個model很有說服力,嗯,你們去學Java吧!

手動微笑:老師,我們要學多久?

啊,兩個星期後你們用Java把這個model做出來!

手動再見,我們就去學Java了。。。

然後,到現在已經接近一個月了我們還沒有做出來。。。

就醬。。。


自學當然可以成材啦,需要討論的無非就是個效率問題。

題目:n堆石子個數分別為a0....an,alice和bob分別選擇其中任一堆中取任意石子。alice先手,問其是否有必勝策略

樣例輸入:1 2

樣歷輸出:true

標程:return( a0 xor a1 xor....xor an)&>0

請參閱標程解釋其原理。

.......

難吧?所以你需要幫助。不妨上網查一查題解

題解:SG函數

但是如何透徹的理解呢?你恐怕需要進一步的幫助。例如,需要舍友的幫助找到那本書。

然而如何融匯貫通呢?你恐怕需要一名博弈論背景的導師了。

誠然每個環節都可以被替代,每次求助都可以靠堆時間堆過去。但大家的時間都這麼多,別人效率更高,別人就自然跑在更前邊。

當然做研究並非是簡單的線性問題,但原理是一樣的:別掉進前人掉過的坑裡,特別是坑裡p都沒有時


童話里的故事。


自學不代表你不可以去問別人。


谷歌搜到的東西只是皮毛?出現這種情況一般只有兩種情況。一是你不懂怎麼搜,二是你搜的就是皮毛。


自學最大的問題是能不能堅持下來。剛開始的確很難,什麼都不懂,但是堅持半年以後就好了。題主說不知道學什麼好,我來分享一下我自學的時候看的書:

階段1:C++入門經典,WPF變成寶典,C語言入門經典(第五版),Direct3D編程,Windows程序設計,Windows核心編程,演算法導論,計算機程序設計藝術,編譯原理(龍書),彙編程序設計,C陷阱,人月神話,文件系統......

階段2:看完以上這些書再看 Web前端,資料庫(SQL Server,MySQL),Android,IOS。

階段1 的每本書看完起碼要看完五遍以上,書上的代碼每看一遍都要敲一遍。


我的大部分技能都是自學的,而且我的學習習慣不是上網搜索,而是系統學習,例如對javascript,我就深入閱讀了兩本書,《javascript高級編程》《javascript權威指南》,同時記了詳細的讀書筆記。而且讀書,記筆記只是第一步,就好像只看書是學不會游泳一樣,編程如是,一定要有足夠的練習,如果工作中剛好有項目練手那是最好的了,如果沒有也沒不用擔心,自己在github上建一個。我就長期維護了一個ms系統,不斷把我學的新技術在其中實踐練習,一者提高了技術,同時也積攢了好多成體系的代碼,無論是對當前的工作,還是未來找工作都大有幫助。

除了看書練習,閱讀別人的源代碼是提高的好方法,我閱讀過spring,log2j,tomcat的源代碼,過程挺痛苦,但收穫是巨大,可以說脫胎換骨,有「曾經滄海難為水」的感嘆。


對於涉及「學習」方面的問題都想答一下,何況還是程序員相關的。

按照題主給的大綱來回答:

1.好大學對你的影響,國內國外教學的不同體驗?

沒上過好大學,也沒出國讀過書。我讀的大學是國內二本,江西某高校,03-07年,這個學校地理偏僻,學校方圓5公里幾乎人跡罕至,所以培養了(逼得)大家一個學習的好習慣,因為你沒的選,人總會無聊的,無聊的時候想想還是去圖書館看會書吧。本來覺得這樣愛看書的我們應該很有競爭力吧,可是等我從大學出來以後我才發現,同樣是計算機專業畢業,人家在學校已經做了好幾個小項目,獨立完成了幾個遊戲、網站或APP,而我們的動手能力還停留在打遊戲、聊QQ的階段,IDE都還不熟悉。我們能靜下心來看書,但我們的實際動手能力太弱。

所以一個「好」大學,除了能讓你靜心學習,還是要有一些具有「商業氛圍」人和事作為鯰魚,為你進入社會提前做足準備,活躍你的思維,增加你的見識,推動你學習知識的同時,鍛煉自己的動手能力。國外沒去過不敢說,看過一些公開課,除了他們的教(一聲)授風格,我認為跟我們沒有太多的不同,主要還是看學生自己吧,以及自己對周邊環境的適應和反應。

2.自學對你的影響,怎麼做到一個人客服各種困難,有哪些好的經驗領悟?

這個問題問的很好,但是有個別字(應該是克服)。一個人的學習能力應該是從小培養的,如果你回想自己童年的時候的種種,你發現小時候的你總是對任何事物都充滿興趣,都想自己動手嘗試,拿到今天來看,你一定是一個學習能力超強,且動手能力超強的人。我本人就有類似這樣的經歷,所以到今天來看,我覺得自己是一個可以對事物舉一反三,融會貫通的人。對陌生的事物很敏感,有很好的理解和消化能力,並能很快的轉化成自己的理解,用在今後的各種經歷里。

現在的自學確實比以前要容易多了,現在各種搜索引擎,總能找到你想要的東西,無非是多花點時間的問題。但是即便都是用Google找東西,可能有人1分鐘找到,也有人10分鐘找到,甚至有人找不到。AlphaGO告訴我們,你每經歷的一個局,都是學習的過程。所以當你養成「汲取」的習慣的時候,你會發現,不管你在做什麼,你都能自然的適時回頭總結一下,剛剛我學到了什麼。

我從事軟體開發工作10年,演算法是我的弱項,我沒有系統的掌握任何一門語言,也不會去糾結那些語言的高級特性。我不擅長做面試題,但我擅長解決項目中的實際問題。你也可以說我是靠Google來編程的,我也並不會覺得你在嘲諷我。依賴Google我可以很短的時間內做出以前從沒接觸過的領域的東西,我認為這樣也很牛。編程語言排行前20我都能看能寫能開發項目,我確實不精通它們,但我覺得在這個互聯網的大時代,哪裡需要我就能立刻去哪裡,唯快不破,不是嗎?

所以雖然我一直期盼能進入Google,但我對能過他的筆試面試抱的希望是0。好憂傷。

3.你贊同導師強調自學的重要性嗎,或者大牛們不怎麼教說自己爬坑的重要性,這種說法做法有沒有忽視教育的作用,畢竟有很多坑是爬不過的。

贊同。導師並不是想推卸自己的責任,他確實是在教你真諦。爬坑是最好的學習機會和方式。我當年第一次買車的時候,第一次上路就是暴雨的晚上從4S店開了一路高架(杭州高架從石祥路到江南大道,手動檔)25公里回家,然後後面對駕駛再也沒有什麼懼怕了。你害怕爬坑,就說明你對自己的學習能力沒有信心,甚至說你不適合做這個行業。

另外我個人一直相信,也一直在跟人講一句話:技術上沒有解決不了的問題,別人能做到,我們肯定也能做到,別人做不到,我們也要做到。

實名反對這句話:「畢竟有很多坑是爬不過的」,其實是「沒有爬不過的坑」。

以上,請輕噴。


本人,211,本科生一枚。專業是cs。明年6月份畢業,現在在,某世界前五百強IT企業實習,我個人以為,樓主的問題其實重心不在問題,而在於描述,比如樓主問計算機是否可以自學成才,坑是否需要自己爬,那當然是這樣。但是,現在樓主的問題更像是,計算機,自學成才,和有出色的老師指導,之間的差距了。

這裡,我以我自己在大學裡三年的親身過的人事經歷,作為回答,其中,主要包括幾個我認為比較nb的同學,認為比較牛逼的老師,認為比較坑逼的老師。在我看來,這些人,大多對我的職業生涯產生了絕對的影響。儘管可能我現在並沒有完全開始自己的職業生涯。

分割線。

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

所有人都是懷著對大學的無比憧憬來到大學的,我也不例外,當初選擇計算機專業的原因,是因為,能夠,給我推薦專業的人。推薦的專業都不能夠令我滿意,在距離高考志願填報結束的前一個小時,自己將專業改到計算機,選擇的原因不是因為喜歡,而是因為覺得酷,不想讓自己做自己不喜歡的事情,以至於在後來的幾年學習中,一直開始懷疑,自己的選擇是否正確,自己是否適合干這行,甚至在與朋友聊天中都開始懷疑,就開始跟他們說。我覺得我的編碼能力不夠強,別人能夠理解的一個邏輯,一個演算法,可能我需要,兩倍甚至三倍以上的時間。這真的一度讓我感到迷茫和絕望。並且在我們專業有一個特別奇怪的現象。每年期末考試前二十名,基本都是女生,本人有幸在大一的時候,擠進了年級前三。哦,對了,我是男生,這一度成為了大一支撐著我堅持過來的動力。

基本上所有大一的計算機學生,都有一個問題,那就是非常的迷茫,非常非常迷茫。哪怕是我們專業的年級第一。都會時常表現出他的,無助,以及對專業的不確定性所表現出來非常焦慮和不安。而面對這樣的,焦慮不安,男生和女生有完全不同的一套處事方式。就我個人而言,大一基本上是在遊戲中度過了,因為,遊戲可能是男生逃避,這種焦慮不安的唯一方式,而女生,普遍選擇了在自己,對未來感到迷茫的時候,而把所有的精力全部投入到學習當中,我不敢說這是好是壞。每個人的選擇而已。而對於我來說,難能可貴的是,我還保留了部分在高中時的,學習品質,那就是無論,再怎麼,不想學習?也會將課堂上老師所教的內容進行嚴格的練習和鞏固。因此因此我的大一打下了良好的c語言基礎。

接下來需要談到我大學中遇到的第一個貴人,也是,我所認為的,我這一生中最重要的一個朋友之一基本上所有大一的計算機學生,都有一個問題,那就是非常的迷茫,非常非常迷茫。哪怕是我們專業的年級第一。都會時常表現出他的,無助,以及對專業的不確定性所表現出來非常焦慮和不安。而面對這樣的,焦慮不安,男生和女生有完全不同的一套處事方式。就我個人而言,大一基本上是在遊戲中度過了,因為,遊戲可能是男生逃避,這種焦慮不安的唯一方式,而女生,普遍選擇了在自己,對未來感到迷茫的時候,而把所有的精力全部投入到學習當中,我不敢說這是好是壞。每個人的選擇而已。而對於我來說,難能可貴的是,我還保留了部分在高中時的,學習品質,那就是無論,再怎麼,不想學習?也會將課堂上老師所教的內容進行嚴格的練習和鞏固。因此因此我的大一打下了良好的c語言基礎。

接下來需要談到我大學中遇到的第一個牛人,也是,我所認為的,我這一生中最重要的一個朋友。

我想我大概有必要介紹一下它在我們學校的成就。

一,大一參加了我們學校一個計算機工作室。本來是抱著,去學習,和景仰的態度,結果進來進去以後發現,丫的培訓的人中,教技術的人居然沒有他的能力強技術好,結果導致所有參與培訓的學生,最後全部跟著他學技術了。以至於後來成為了這個工作室裡面,的核心成員。所有的項目基本上,都要找他。當時給我們培訓的人是大二的一個學長,後來我們仨成為了很好的朋友,基本上屬於每天見面的那種,並且是在一個實驗室。學長後來保研失敗,選擇了考雅思。最後去到了香港中文大學。

二,當時他還參加了我們學校的一個志願者隊伍。大二以後,成為了這個志願者隊伍的,會長。工作內容主要是宣揚開源精神。每年舉行linux的發行版的,宣傳工作吧,並且由於這一個,只為能夠和很多大公司的,技術人員進行一些交流。比如比如像國內七牛,宏基,等等的企業,都會給我們的活動進行贊助,並且給予我們一定的技術支持。

三,他在大一的時候參加學校的科研助手選拔,成為了我們學院幾大實驗室之一的,科研助手,研究的內容大概是大數據方向。神經網路方向,等等。當然最後我也跟隨他進入了這個實驗室。不過,那是我大二時候的事情了。這裡有必要講一下實驗室的事情,他後來就仙逝以後,由於技術能力大大超過了老師的預期,預期,超過超過到了什麼程度呢!我們的導師是,不會編碼的,以至於後來我的工作內容基本是,導師會來一篇paper過來跟我們進行交流,讓我們各自去研究,然後一個禮拜以後根據paper確定一個方向,然後開始編碼工作。基本上所有的核心編碼工作演算法,都是由他來完成。嗯,小時候不懂事啊,還以為這些paper都是什麼高級的東西,自己看不懂是因為自己水平太差。後來。發展到實驗室的研究生,都會來向他請教問題。以及請求他幫助進行編碼工作,很多研究生髮的論文裡面,核心的代碼,基本上是他完成的。

四,在大二的時候,我們學校一名老師,開設了自己的公司,然後藉助輔導員的渠道對我們進行宣傳,招學生到公司去做一些小型的項目等等,然後給比較廉價的工資,那個時候,基本上會一點基礎的學生都被拉到他們公司裡面去了,美其名曰鍛煉能力,學習技術,事實上都成為了廉價的廉價勞動力。毫無意外,他當時也是被,我們輔導員哪去了這個公司,但是當時他在面試過後,告訴我,去了之後基本上學不到什麼東西,於是就放棄了,但是後來不知道為什麼,神不知鬼不覺的,那家公司的老闆,也就是後來我們的某一位老師,主動過來找他,希望他能夠,到公司做些事情,我想可能是看中他的能力吧,並且學生,很廉價這個老師也可以節約一大筆錢,事實上就是,我這個同學是個老好人,最後拿著每個月,五六百的工資,在這個公司裡面幹了兩年,乾的都是什麼活呢?從技術構架到編碼工作到運維到開發,基本上什麼都干。並且經常是我們本來約好一起去吃飯那邊一個電話馬上打過來,然後你就能想到,接下來是什麼事情了?

五,本來以為我是會和他一樣保研的。結局是由於我在大二之後,返回了很多的學業。而且又是在計算機科學這樣的一個專業裡面。每天面對的都是一群平均分在,九十分以上的女學霸,由於不堪和他們競爭的壓力,我選擇了工作,而由於他當時選擇了網路工程專業。保研壓力較小,所以他也就順利的保了研,比較可惜的是,他,保研,留本校,這是我為他感到最可惜的。

六,補充一點,大家在電視劇裡面經常看到,某計算機系牛逼人物入侵教務系統修改成績。這件事情不是子虛烏有的...大一的時候它就搞過這件事情,然後被我慫恿,我倆一起黑進去改了資料庫的成績。並且拿到了學校裡面所有的相關成績的資料庫。但是我們最後沒有備份。在學校也沒有引起別人注意(好的入侵就是這樣的.....)。據說上一屆的學長還有把教務處的女生照片拿出來選美的。就像《社交網路》Facebook里男主做的那件事,一點不奇怪。據說這位學長最後去了政府搞安全了!

寫到這裡,可能你會發現,我的所有步法基本上全部跟著他的後面。事實上也確實是這樣,在整個大學的過程中,他去哪兒?我去哪兒?以至於,在別人眼裡,我們兩可能就有點像搞基的存在。你知道最恐怖的是什麼嗎?最恐怖他媽居然是我,有時候在晚上會想我他媽是不是愛上他了?幸虧每一次有這個想法的時候。又會被噁心得想吐,好吧,我不是個gay。

說完了他,我想再說一說我的老師。總的來說,我是很感謝我的大學老師的,倒不是因為他們給了我多強的編碼能力,多少的知識,更多的是他們給我的機會以及思想。

每個老師我會用大約兩百字左右的內容作為敘述。

總的來說,我是很感謝我的大學老師的,倒不是因為他們給了我多強的編碼能力,多少的知識,更多的是他們給我的機會以及思想。

第一位,第一個在大學裡面罵我的老師,離散數學。老師。我非常深刻的記得當時在上完那節課以後。我拿著書本到講台上問他一個課後習題。然後估計是問了一個關於1+1等於2的問題吧,也就是基本上非常清楚的那種,不懂的話基本上屬於沒聽課,好吧,我也承認我沒聽課。結果被狠狠的罵了一頓。以至於,整整一年,我對這個老師都充滿了怨恨,不過現在回想起來真的覺得,非常感謝他。當時我覺得本科生普遍有一個錯誤的觀點,那就是把自己的無知駕馭到老師身上,自己聽不懂,不預習不複習,就認為是老師講的差,甚至有個學生說,這課老師他自己也不懂。這簡直就是一個笑話,越無知的人,反而越自信。這讓我越來越相信,那些罵你打你,給你提醒的人,才是真正對我有用的人。

這位老師並沒有給我的編程能力有多大提高,相反,他可能是更多的是讓我對求學的態度有了一個更嚴謹的思考吧!

第二位,我的計算機網路老師。當然下去的時候,跟隨這個老師參加了一個全國性的比賽。當日是一個自己編碼能力有所小成,但是對前途和未來感到,本來是一個沒什麼迷茫,極度需要得到老師,同學以及項目的肯定,正是這一段時間跟,他參加這樣的比賽,讓我對自己的能力得到了充分的肯定。從摸爬滾打中,終於確定了自己的方向。雖然也不是我現在的方向,但是那種踏實感,是,非常重要的。在參加這個比賽的三個月中,我們我們每個禮拜都要喝,作為老師進行會晤,交流,探討技術上,學習上的一些問題,老師已經快五十的人了吧!一般來說,作為五十的人,又是在教育部直屬的,這麼機關,通常應該是把自己的方向,像政治,或者地位上發展,但是據我所知,他不是這樣,他有自己的公司,有自己的事業,同時他也在學校裡面,教書育人,我感覺,他是屬於那種對技術執著同時對自己做的事情負責的人。我記得他跟我們聊,聊到我們現在從事這個比賽的方向,會是以後的一個大方向。我們現在所做的努力,對於以後的發展有,很大的幫助,並且在思想上和編碼上都對我們進行指導。讓我第一次感覺一個,這樣的老師真好。最後這個比賽我們取得了全國,六十來名成績吧!據說參加的學校有好幾個所,但是遺憾的是,我們距離晉級擦肩而過。但是這個過程已經,足夠了。

第三位,我的一名專選課老師。人機界面老師。如果說前面兩名老師,我,得益於,他們的鼓勵,提醒,那麼這位老師一定是因為,他的嚴格,以及對我的肯定。?在這一學期,我憑藉個人做出了一個app,做出了一個問答網站。並且做出了一個桌面程序。當然,這裡面的代碼可能,很多,都是引用了開源程序,但是,這也讓我學到了很多。他的課很有特點,基本上每學一個章節,他就會強制要求我們每個人做出一個作品,他不會詳細的告訴你,要用什麼技術,什麼編程語言,他說,我默認你們應該具有這些技能,因為你們是計算機專業的學生。以至於當時我們基本上所有人都怨聲載道,因為做安卓開發的不知道網站,做網站的也不一定會安卓開發,以及,桌面程序開發等。因此我的第一個安卓程序,是在花了一個禮拜,閱讀了安卓開發入門以後做的。我的桌面程序,是在複習了,大一完全不懂得,老掉牙的,vb。做的,我的網站是借用一個開源代碼,二是開發之後做的之後做的。我的網站是利用現成的開源代碼,搭建的,但是這裡面也加入了我不少的工作。她讓我知道了計算機是一個有機的整體,也許裡面某一個細小的分支你以後不會去做,但是如果你做了,那就是一筆財富!

第四位老師,我在實驗室導師,我想,他除了給我提供了一個,實驗室,一台我根本不用的電腦,一個五平米左右的學習環境,之外,我實在想不到還有什麼東西了。因為他從來沒有指導過我們,這其中也包括我的那位同學。但是我想,如果不是因為我能夠有機會來到他的實驗室。我是不可能接觸到,本科生以外的,人群的。然而我在實驗室的那一年,每天基本上,一沒有課的時候都會往實驗室跑,甚至我會感覺,哪怕我在實驗室看一天的視頻,看一天的電視連續劇,都會比在寢室呆著好。可以想一想,當你周圍的人每天還在接觸遊戲,每天還在和本科生,打交道的時候,而我已經在和,研究生,乃至博士生,討論深度學習,討論神經網路,討論阿爾法狗打敗李世石,到底是用的什麼演算法的時候?一般的本科生在哪兒呢。說到這裡,可能你會覺得,我的導師就是一名水導師,因為他根本不懂技術。他所做的事無非是一個禮拜給我們一張佩佩兒,讓我們去分析和學習罷了,然而有一件事讓我印象深刻。那就是研究生每周一次的周會,我記得,有一屆新來的研究生,非常的懶散,比如在實驗室裡面,基本上是,老師一走就聊天,老師一來就裝作假正經,而且聊天聊天的內容基本上是。老師給你們布置什麼樣的任務了呀去哪找代碼呀等等。有一次例會,老師終於發飆了。給出的結果是,按照你們現在這樣的狀態,我估計你們可能要延遲畢業了,你們是來讀研的,不是來荒廢時間的。儘管這樣,但我感覺其實後來並沒有效果。在實驗室裡面,大家都叫老師老闆,但是我從來沒有叫過,我尊稱他為老師。

舉了那麼多例子,你可能會認為,我的運氣真好,在大學裡面碰到那樣好的老師。但事實上不是的。大學裡的老師,有的老師真的離譜到讓你不能忍受的地步,真正我也可以舉幾個例子。比如前面我提到的,在外面開公司的那位老師,他在學校應該是屬於,嗯,副教授的級別吧!但是據說,早在,四五年前就已經不搞技術了。並且本身是屬於在學校有關係,然後留學之後,回學校任教的。它的主要課程有,軟體工程,安卓開發,遊戲開發,java!本人有幸,上了他的軟體工程,和遊戲開發。這兩門課將是我一生難以抹去的陰影。我可以大概講一下他的這兩門課上的,讓我們幹啥?根據時間順序先講遊戲開發吧,大二下期選了他的遊戲開發,本以為可以學到很多東西,然而事實上我們卻複習了一個學期的,高中物理?還是,高一,上學期的,高中物理。我們重新的學習了什麼是矢量,什麼是標量,直角坐標系,三維坐標系,加速度,自由落體運動等等等等,我想遊戲開發,老師,您是不是應該給我們講一講,遊戲引擎,遊戲行業相關,或者是,拋出理論之外的,些許的編程實踐呢?答案是不可能,因為他不會,他也不可能會,一個憑著文憑,憑著關係,在學校裡面吃老本。一個只講理論加實踐的遊戲開發老師,你能指望他幹什麼?以至於後來的軟體工程課,完全讓我們提不起興趣。不過好在由於他有管理。公司的經驗。軟體工程還不至於像遊戲開放那樣坑,終究還是學到一點東西的,但我覺得那不是他的功勞。讓我感到恐怖的是,這個人居然還會講安卓。不知道那些小學弟,小學妹們,在選他的安卓課之後,會有什麼樣的體驗?至於java,我的一個大二的學弟,現在大三,給我分享過他的上課。據說在上網他的課一個禮拜以後,他憤怒的將java,那本書給丟了,然後選擇了自學。

寫了那麼多我很感謝問主或者讀者還能讀完。文字是訊飛輸入法輸入的,可能斷句會有,較多的不流暢,還請理解。現在,實習也快結束了,雖說我周圍的人以及我自己的情況,我們這一屆,計算機專業的,有五十多人,女生成績好的基本選擇了保研。男生沒有保研,但是有一個出國的,有一個人從大一隻寫php。一開始去了盛大,但是後來發現送到一個坑。最後去了鏈家網,現在的,月薪是,一個是10k實習工資,轉正翻倍,哦,對了,在北京。另外一個是從大一開始一直做前端的,最後去了網易,年薪15萬以上。我想,像我們這樣的學校,本身就是師範院校。女多男少,即使是計算機專業,男女比例可以達到1:1,然後要求女生技術多牛逼根本不可能,因為他們的心思不在哪兒,他們選擇保研,或者出國,剩下的,二十幾個男生,技術流弊的可能,不到五個,混日子的可能不到五個,生下來可能就是十來個,中規中距的,當然他們畢業後也能找到很好的工作。但是我想他們之間的差距在哪兒呢!我想可能,很關鍵的一點就是,對技術的渴望,以及自學的能力吧。

不知道我的回答能否,解決,這個問題。這裡我還想引用一下曾經看過數學之美裡面的,部分內容,人設和名字我已記不清,大概意思是這樣的,在美國的,研究生教育裡面。老師同樣是不會去指導你的編程,指導你的技術。但是好的導師,會給你提供很好的平台,為為你爭取更好的機會。同時在她們知道的領域,他們會把自己,曾經遇到過的坑,告訴你,為你減少不必要的工作,以及探索的時間。其他的事情,應該還是靠自己吧!

最後說一下,我的感覺是,周圍的人以及我自己在本科學習和工作中使用到的知識技術,全部是自學的。


本人是計算機專業畢業的,做了幾年軟體開發後,轉行去了別的行當,因此只能根據自己十年前的感受胡扯一下。說到自學,首先是看天賦,有人讀書一目十行,有人過目就忘,這是天賦,千萬不要不承認,那隻能說明你從沒遇到過天才,當然,天才是百里無一的,所以我們只討論普遍現象。接著說些實際的,我怎麼也算在軟體公司摸爬滾打了好幾年了,學歷較低,通過自學能勝任編程工作的有不少,但他們由於缺乏系統的思維,所以基本上只能做做前台的開發,設計一些用戶界面什麼的,很難提升一個層次,不管是分工,還是因此帶來的收入。所以自學計算機,努力一些的話,養家糊口不難,但要更進一步就很難了。


答主自學物理與計算機,雖然計算機才只學了半年左右,還遠未深入,也沒有成才,但多少有些一知半解,因此勉強來答一下這道題,談談對於自學這兩者的一些看法吧。當然答主既非常青藤亦非清北科,只是個普通的985,也沒見過牛校的學生是怎麼學習的,所以說錯勿怪。

首先說一下計算機的優勢,網上是的確能google到計算機相關的大部分內容的,比如任意一個協議,網上都能找到原始文檔。但對於學物理的來說,有時候遇到了問題,或者想找某個定理以及證明過程,在網上是很難搜到的。特別是,有很多關於計算機的論壇網站,但是上網搜搜,根本就沒多少討論數學物理問題的網站,所以自學計算機相對自學數學或物理來說已經簡單不少了。

再說說導師,雖然導師讓你自己谷歌但是他沒說你遇到問題不讓你問他吧,所以谷歌了也不會就問他啊,不然要導師幹嘛。我曾經的導師基本上也不會手把手教我,只給我論文讓我自己讀,讀不懂去搜其他文獻,讀懂了就把論文中的演算法編程實現,只有實在搞不懂才去問他,那時候他就給我很詳細的講,直到把問題搞懂,我不知道別的導師怎樣,但我覺得我曾經的導師的做法是相當能鍛煉學生的解決問題的能力的。

再說說那些坑,哪門學科沒有多的數不勝數的坑,但是計算機里的坑是能靠別人帶著爬出來的,所以自學遇到坑爬不出來就去找導師就去找大牛,實在找不到還可以搜搜源代碼慢慢啃。而在數學和物理裡面,有些坑是別人帶著也爬不出來的,只能某天自己琢磨透了自己爬出來,找誰都沒用。至於為什麼導師大牛不告訴你會有這些坑怎麼爬出來,一是因為坑太多,不可能都給你指出來,二是因為有些坑可能根本就是沒法指出的!

最後說說爬坑,計算機坑沒爬過多少(主要是遇到的坑還不多),物理的坑可沒少爬,而且有時候爬的是極其幼稚的坑,比如漏掉了前面的某個概念導致後面推導的某個步驟看不懂,但是坑爬的多了,經驗就有了,爬坑的速度也快了,有時候還能避免掉入某些坑裡,所以多爬坑也是有很大好處的,一般能夠增加你對某個問題的理解,至不濟也能幫你理清思路,如果一帆風順從未掉入坑裡反而不妥。


有好老師帶自然好,但是大神之所以成為大神畢竟和他們遠超一般人的自學能力有關係

摘一段卡馬克的名言自己體會

在信息時代,一切障礙都不復存在,所謂障礙都是主觀上的。如果你想動手開發一項新的技術,你不需要幾百萬美元的資金,你只需要在冰箱里放滿比薩和可樂,再有一台廉價的計算機和為之獻身的決心。現今程序員的情況好多了,只要有一台便宜的二手電筒腦,一張 Linux 光碟和一個互聯網帳戶,你就已經擁有了把自己提升到任何級別的編程水平所需的全部工具。


認同此說法,有坑就得自己爬。

混IT,都要靠自學(自覺)

另外,光靠自學是不行的,Google那點東西確實太皮毛,所以你就得向他人請教啊啊!


師傅領進門,修行在個人,這都不懂嗎?初學者是肯定要找老師教的,不然學什麼,怎麼學都是個問題。沒老師教,你一本基礎教材看一年也吃不透,有老師教一兩個月就行。等把基礎學會了,學紮實了,就需要自己下功夫苦鑽研了。


反對高票 @胖胖的答案,也發對[反對高票 @胖胖 的用戶 @Brave Pan ]的答案。

兩個答案好像都很有道理的樣子,爭論有理有據,但是我這幾天仔細想了一下,並不是這樣。我直接給出我的答案。

計算機行業的東西有很多。入門級的東西(比如比較熱門的編程知識)完全可以自學得到,而比較前沿或者高端的(比如機器學習)則很難。往往隨著領域越前沿,自學的難度越大。

我在剛剛接觸計算機的基礎,C語言編程的時候,還沒開這門課,我自己抱著一本書在圖書館整看書思考,把裡面的例子自己全都實現了一遍。然後胸有成竹,第二個學期沒聽課卷面分也很高。包括之後的web領域也都是自學,一方面是學校不開web方面的課,一方面是好的自學方法太多。慕課網上看一看教程。知乎上問一問「學xx編程有哪些很棒的入門書籍」,或者問一問學長,工作的前輩我應該怎樣自學?你會收穫到太多自學的渠道。不停的學,不停的寫代碼,有項目做項目,沒項目就做書上給的demo,自然就入了門,入了門就有了自己的視野,就會自主選擇一些書去看,選擇一些東西去研究。

相信我,只要你想學的是[不冷門的編程向,比如web開發,安卓開發等等……],這種方法通用。

太冷門,搞這個的人少,教程也少,可能會踩坑。

然而我最近在嘗試用這種方法去了解機器學習的時候,開始慢慢的踩了很多坑。

首先,機器學習是一個比較前沿的領域,教程少,高質量的教程更少。

其次,編程是一個[懂邏輯就能搞懂]的學科。機器學習是一個[數學是基礎]的學科,所以對數學要求也比較高。我和我的學長請教的時候,學長推薦給我一本書並告訴我如果要深入這個領域。那麼考研、讀博可能是唯一的出路。

到現在為止,我覺得,如果我繼續研究機器學習,我的自學歷程可能要到頭了。

因為在這種領域,自學太痛苦了,有問題也不知道問誰。如果繼續自學,不知道要踩多少坑。


推薦閱讀:

18歲了,如何重新練習長笛?
如何制止或勸阻陌生人的小孩子的不好行為?
你做過最畜生的行為是什麼?
市面上的超輕粘土哪家品牌的比較好?
怎樣的年輕人容易走上螺絲釘式的生活?如何避免年輕人成為螺絲釘?

TAG:軟體 | 程序員 | 教育 | 計算機 |