很多IT大牛在我這個年齡時已經很厲害了,我該怎麼做才能變成他們那樣的人?

本人現在21歲,就讀於一個二本院校的一本計算機專業。喜歡編程,可以從早上一直編到第二天早上。
在同一專業甚至同一學院的人看來是「大神」級的人物,但是和那些真正的大神相比感覺自己就是小白。打個比方,很多人在大學期間就能參加ACM競賽,但是對於我來說想都不敢想,而且學校也從來沒有組織參加過這種競賽。
(我也知道演算法很重要,但是我卻感到學習數據結構比較枯燥,雖然書上講的我都能理解原理,但是感覺想要記住這些演算法並且隨手敲出來卻很難,而且從來沒有用到過。)
所以我的問題是
1.我這種情況是不是沒有找對自己的方向
2.是不是因為周圍的環境,使得我生活的太「安逸」?
3.學習一項新技術時我很難靜下心去看視頻或者看書,該怎麼辦?
另:因為感覺大學期間學校對於計算機的專業知識教授的太淺顯,所以最近在複習考研。
最後。。我學編程純粹是因為愛好,專業是自己選的。
希望各位前輩能給出一些建議


少年,我給你打個比方。

假設這是江湖 (我超愛這個的有沒有)

你現在還沒出師,你在羨慕那些縱橫江湖的大俠。

這些大俠裡面,有些是家學淵源, 他爸爸就是打狗十三式第五代傳人,他從小就有六根打狗棍,三片練習場;有些是3歲拜入少林,每天練功8個時辰,下山的時候揣了6張清華畢業證;有些是5歲捅了220V插座,電通了奇經八脈,看程序bug自動舉手說我在這。這些都是真大俠。

不過,我感覺你看到的更多的是,巨鯨幫的王二,鐵斧門的李三,聯邦鏢局的尼古拉四,你聽到的是他們在悅來客棧烤串部等烤腰子時候的自誇,這和上次我跟我老婆去蘇州藏書羊肉店吃羊肉鍋聽到旁邊保安大叔講他年輕的時候一人對50人還單騎衝進場捏住對方老大的蛋蛋是差不多情況。

這些都是紅樓夢大俠,姓賈。

我勸你一句,先分清楚真大俠和假大俠,別浪費時間在追逐巨鯨幫的王二,鐵斧門的李三,聯邦鏢局的尼古拉四身上。除非你也真的以成為保安隊長為職業目標。

這江湖當中,還有一種大俠,沒有顯赫的家世,沒有波斯明教的留學背景,從小到大沒有掉過懸崖,沒在街上遇到過乞丐,他們默默無聞,不太被世人知道,然而他們是真大俠,是屍山血海當中殺過來的,手刃幾千個bug,從邪教教主的thread trace到小兵的DB dump都見過。我勸你,如果你沒那些顯赫的家庭,奇妙的境遇,還是老老實實學這些真俠客吧。這些俠客你是看不見的,因為他們不會寫一篇文章,痛斥微軟的短視,也不會開一個live,讓大家知道下這個V不如那個A什麼的。

我所見的這些俠客,只會輕輕的念叨,你抓個包看看有沒有丟包?你看看eden走勢。

如是而已


我今年已經30了。我才和21歲的你一樣的水平。很大可能比你還差一些。

因為我27歲的時候才開始自學計算機專業基礎和編程。

聞道有先後。如果你的同齡人比你早接觸比你早入門,那麼在一段時間練習之後,強於你,這是很正常的。

如果你一直這樣可以從早編到晚,你在一段時間練習後,也會達到他們同樣的水平。但是要講究方法。比如你說的數據結構枯燥,其實它一點都不枯燥。你把它們想像成現實中的直觀的形象的結構,然後你面對這個結構,去思考在它們身上能做什麼操作能達到什麼目的,再借鑒他人的思路,就形成了自己的演算法思路,不用記,忘不掉的。為了說明這個方法,我把我QQ空間的一篇日誌搬到我的知乎專欄了。

有一種數據結構叫做樹 - 知乎專欄

這篇文章寫於15年底,反映了我將數據結構和現實生活結合起來思考的方法。

單談年齡沒有意義,娃哈哈創始人宗慶後40歲的時候還在給校辦工廠代銷汽水、在學生中間賣冰棍呢。但是他一旦走上了創業的路,一步步做好,就成就了當今的食品飲料行業的巨頭。

每個人的出身背景、家庭條件、成長環境、機遇都不一樣,如果現在遇到了你的熱愛,只要堅持、講究方法,就一定會成為大牛的。

把我上篇文章的一句話摘錄下來,共勉:

那就是,一定要活在當下,站在當下的節點上,面對未來,做出最符合自己內心的選擇。身後,只有一條固化的路徑,前方,還大有可為。


它會讓你了解到一個事實,為什麼那些看起來很牛的人幾乎從不提問,似乎他們一進入這個行業就是牛人了。不是的,他們也有問題,但是通常在提問之前就自己解決了;不是因為他們本來就懂得怎麼解決,而是解決問題的經歷讓他們成為牛人;最終,你只會看到網路上多了一篇文章:關於解決XXX問題的方案。」-- Rei

文中的指的是 How To Ask Questions The Smart Way(提問的智慧 - 中文版 或 提問的智慧 - 圖片版)


這個問題里我覺得讓人不安的地方有
"覺得數據結構比較枯燥 記住和敲出來很難"
學習技術很難靜心看書或視頻
覺得學校教授的計算機知識太過淺顯
認為參加ACM的是大神 自己"想都不敢想"
而題主又說編程是自己的愛好

實在讓我很難相信你愛好的編程是我理解的編程
我覺得你要把這個問題想清楚 你愛好的編程到底是做什麼

想明白這個之前讓你看書看課刷題也是做不下去的

題外話
我的學弟學妹中有一些完全沒有技術直覺(概念缺乏) 缺乏技術好奇心(不會去思考 搜索調查 功能背後的實現細節) 缺乏對技術的敬畏(對精巧的演算法 優雅的設計哲學 充滿奇技淫巧的工程實現沒有感受)
好在他們也知道自己對編程無感 不打算入這一行


其實啊,我在你那個年齡,還是自以為剛入門的渣渣

你說你喜歡編程,可以從早上一直編到第二天早上,精神是可嘉的

因為我剛從晚上編到現在,所以能理解你的心情(代碼 啤酒 花生是周末良藥,平時要工作很難放鬆,只有周末才能縱情聲色寫一些自己喜歡但是工作無關的代碼,工作日一般 3、4 點就得睡了)

我這些年見過很多像你這樣充滿熱情的人,不過慢慢的很多人就體現出葉公好龍的一面了,其中各方面的原因肯定都有,但拋開原因,客觀事實就是都失敗了

古人云「朝聞道夕死可矣」,重在喜歡和堅持,不要總想著和別人比,做好自己喜歡的事就好了

當然你問的下面幾個問題也是確實存在的問題:

1.我這種情況是不是沒有找對自己的方向
2.是不是因為周圍的環境,使得我生活的太「安逸」?
3.學習一項新技術時我很難靜下心去看視頻或者看書,該怎麼辦?
另:因為感覺大學期間學校對於計算機的專業知識教授的太淺顯,所以最近在複習考研。
最後。。我學編程純粹是因為愛好,專業是自己選的。
希望各位前輩能給出一些建議

相當於你想學鋼琴,但是只知道別人推薦給你的五線譜手冊車爾尼哈農

幹練吧又枯燥不得要領

想學別的吧根基不穩又搞不定

這些問題都是重要的問題,但是你現在是沒有能力解決的,所以先盡自己所能吧


雖然在21歲的時候,可能題主跟他們的區別在於練習了2年編程和練習了7年編程,但是到了60歲的時候,其實也就是41年和46年的區別,都是很接近的。


今年32了, 見過很多大牛, 被大牛帶過, 也帶過年輕的大牛.

其實可能就兩點

1) 熱愛.

2) 你要跟大牛在一起.

第一點是主觀的, 第二點其實是最難的. 基於你的情況 (二本院校), 要麼早點出來工作, 去個好的公司, 要麼考個好的研究生去最好的大學. 然後我可以很負責人的告訴你, 我見過很多很多大牛, 他們有一個共性, 就是學習也是一等一的, "生源比師資"重要. 不換一個池塘, 游不成大魚.


吐槽你說的一句話,

「可以從早上敲到晚上」。

這句話可以分析不少東西。

首先你有這個經歷,值得點贊,但是你應該沒有堅持這件事的計劃和實施的經歷,輪子哥說自己大學平均每天編程十小時(不管你們信不信,反正我是信了的;當然我理解是學編程十小時;我大學裡面平均6小時這個樣子,不過寒暑假每天有十小時)

其次,僅僅是寫代碼 not enough,編程大牛的成長(考研黨除外,我說的是本科畢業就想去bat的)

1. 需要有好的引導: 看大牛寫的書,博客,代碼 or 和大牛交流 or 向大牛學習寫代碼等。

2. 需要自己的堅持和努力: 本科沒有6000小時基本很難很厲害,除非天賦異稟。

3. 更需要自己的思考: 解決難題,不斷的挑戰自己,突破自己的舒適區。

我當年也是零基礎大學才開始學編程,你大學才大二,再花兩年學4000小時編程,其實還來得及畢業前成為一個小牛。

我上個月(其實去年就寫在博客上了)在專欄寫了一篇 《學編程的一些核心建議》,這裡貼過來(ps: 收藏人數是點贊人數3倍多orz)

我認為最重要的有三點

  • 熱愛
  • 努力(多做項目,每天學習編程 5小時以上)
  • 解決問題的能力

這三點保證了其次最重要的就是

  • 選好方向(深度和廣度都得保證,最好是80%時間專精保證深度,20%時間來涉獵各種知識保證廣度)
  • 學會思考

1. 熱愛

編程這麼有趣的事,竟然還有錢賺 (by c++ 之父)

這個幾乎是最重要的,我見過的所有大牛都是都編程無比熱愛。

我大一也迷茫過,「編程是我所喜愛的東西嗎?」,我花了一年時間來確認並給了肯定的答案,現在我非常喜歡寫 優雅的代碼,順便喜歡技術帶給我的 能力、自信、錢。

然後選擇方向上,最好由你的興趣決定,follow your heart

2. 努力

熱愛和努力往往決定了你在編程的路上能走多遠。

第一點做到了,這一點應該是順理成章的。

其中最重要的是,要 learn by doing。也就是做中學,多做項目,非常重要。讓你寫的程序從100行到1000行,再到萬行,就好比看著你創造的城市在一點點的擴大,當然要確保代碼的優美,時刻思考,不然那不是城市,而是垃圾堆。每碰到一個問題,解決它並思考它都可以讓你受益匪淺。

還有就是看書,仔細閱讀一本經典的書(做筆記、寫博客、思考、把理論付諸於實踐),勝過看十本普通的書,一百本爛書。所以選書很重要。練習、思考更重要。

總結一下,努力就是我後面說的 基本功 和 熟練度 的積累過程,記住 量變導致質變

3. 解決難題的能力

這個複雜一點,是程序員的 核心競爭力,我覺得解決問題的過程無外乎三點

  1. 透徹理解問題是什麼
  2. 弄清導致問題的根本原因
  3. 尋找最佳解決方案

有一種說法是面對 谷歌編程,面對 stackoverflow 編程,其實當你把這三點弄透,你就知道為啥了。你搜索之前應該弄懂前兩點,看前人的經驗來完成第三點。所以根本不是谷歌幫你編程,而是你在使用谷歌這個工具,最關鍵的還是你自己,不同人用谷歌搜索的效果是天差地別的。英文搜索質量遠高於中文搜索。

搜索的思想和谷歌技巧 SimplyY 的博客:如何用好 Google 等搜索引擎

除了搜索的技巧,基本功、熟練度、膽量 也很重要

基本功

  • 當然基本功很重要,不然你不可能真的能理解問題,比如你不會數據結構,然後面對這方面問題,肯定是一臉懵逼的。
  • 說白了,當你真的懂了一個問題,問題的答案就是呼之欲出的。而透徹的懂一個問題,需要你對這個問題的方方面面有一定的了解和思考。

熟練度

無他,為熟能爾 (by 賣油翁)

量變導致質變,當你解決了數千個問題後,谷歌了上萬次,你會發現你再用谷歌,就是一目十行,眼睛跟老鷹一樣,瞬間就鎖定到了答案。

膽量

對於新手,編程學習的路途中有個膽量問題,對於絕大多數人這個問題還很嚴重。

  1. 谷歌不會,翻牆好難
  2. 英文好多,英語好難
  3. 自學好難,代碼、編程書看不懂,編程好難
  4. 這裡出 bug 了,debug 好難
  5. 做項目好難,我不敢寫有趣的項目

我還是 qq 問一下別人吧。

於是海量的伸手黨就出現了。

其實說白了,就是,大家都沒有解決這個問題的膽量,都不敢自己一個人去解決問題,總是在自己的安逸區里活著,雖然這是共性,但是一定要有意識的克服,不然你會一直沒有進步。

記得有人說過這樣一句話,在公司上班,假如技術上的大問題來了,而你沒有膽量去解決,而是總是交給別人,ok,別人就會一直進步,最後成為你的主管,你的大主管,你的大大主管,而你原地踏步,說不定還會被新來的淘汰。

並且,沒有膽量熟練度就無從談起,做有趣的項目就無從談起,你學的所有基本功就會持續荒廢,學而不用就會怎麼樣?忘記!

所以膽量是編程入門的 基石。

方向

深度和廣度都得保證,最好是80%時間專精保證深度,20%時間來涉獵各種知識保證廣度

選擇方向上,很大一部分是取決你的興趣的,你對演算法感興趣 or 工程 or 數據 or 優美的代碼,這個要慎重選擇,我花了半年時間才選擇的,多了解、多嘗試,發現自己的興趣點,再為之努力,潛下心來學習,挖深領域。

具體怎麼學

谷歌搜。

具體怎麼學編程 也是一個 待解決的問題,我的經驗就是看書、做項目、多思考,但是對於不同方向 具體細節是不一樣的,答案知乎、論壇里很多很多,學會如何高效學習是一件很重要的事情。

最後: 總結一下非常重要的東西

  1. 熱愛
  2. 努力(學會自學)
  3. 解決難題的能力
  • 基本功
    • 編程能力:語言語法、debug 能力、寫優雅的代碼、數據結構、演算法
    • 底層知識:操作系統、計算機網路、編譯原理等
    • 各領域特定知識:根據你的方向來
  • 工具(君子生非異也,善假於物也)
    • 英語 非常重要
    • 搜索:谷歌(學會用英文搜)
    • 社區:github、stackoverflow等
    • 各類英文文檔:MDN、dash(osx 專屬,全平台文檔利器在這裡 http://devdocs.io/ )
  • 成果
  • 紮實的基本功
  • 多寫幾個有一定規模(純代碼量 3k 行以上)的有趣的項目,最好都發布在 github 上
  • 等(看完十本經典編程書?)

http://devdocs.io/ :

關於大學裡怎麼學好編程的回答我還在知乎寫過不少,詳情見,關於「如何學習編程」的我的一些回答 - 知乎專欄


認真+努力+堅持


瀉藥,我不是學IT的,不知道邀請我怎麼回答。

舉兩個例子。

我同學,我們那個年代能搞一些編程ps之類的已經很牛了,他在初中就在搞這些。大學計算機專業,給學校建網站寫教務系統。具體得過什麼獎不知道,畢業被幾個軟體公司搶,最後到金山做網遊架構還是什麼東西。當時收入同學中最高,06年能開到6k,才畢業。兩年後開始不安分,離職到遊戲學校教書,然後又到個小軟體公司跑銷售。目前在國內某大型軟體公司擔任區域老總。

我堂哥,火車司機中專畢業,長我6歲,對現狀不滿,考入電子科技大學成教本科,當時已經24歲。期間成績優秀,得獎無數,繼續讀研。讀研覺得閑,把gre考了沒錢讀。畢業30多歲了,進微軟。後來覺得壓力大沒前途,跳到另一家跨國企業,三年後調美國總部,半年後辭職,加入本地一家企業擔任股東。目前39歲。

我想說的是,題主好年輕啊,這麼年輕就取得這麼多成績,自然是一件讓人驕傲讓人羨慕的事。其實人是否成功,關鍵看你怎麼給成功定義。我自己覺得,想混出點名堂,想得到重視名利雙收,不僅僅靠學識,也要靠積累。不但是經驗的積累,也要靠人脈,解決問題的能力,思維等等,這些東西,說複雜叫閱歷,說簡單叫歲數。我23歲就覺得肛腸科手術算個屁,哪一個我做不好,哪一個我不會?甚至瞧不起師父。直到遇到一個術後大出血休克患者,我一下傻了眼,我真不是不知道該怎麼做,是真不知道按教科書做居然沒用差點把人搞死。師父來了,短短20分鐘解決問題。這時我才知道,大家都是同學,其實水平差不多,能高到哪去?職業經歷才是我們以後拉開差距的根本。

我們都衝動過,都不安分過,絕大多數都付出過代價交過學費。但既然是學費,就是我們以後領先其它人的基礎。望題主繼續勤奮學習,發揚你勤學刻苦的精神,繼續在職業道路上一路狂飆。


24,計算機系,畢業後工作半年現辭職備研中。
先回答你提到的幾個問題,再說下一些自己的感受。
第一、你說編程是你的愛好。其實這已經比很多計算機系的學生好多了。至少你喜歡去做,而不是被動去做。所以方向我不認為有錯。
第二、第三點一起回答。環境是很重要,沒錯。但是我比較傾向於你還是年輕(不是說我自己就很成熟,我還只是個小哥哥)。身邊的一些誘惑你抵制力會較弱,相對來說難以自控,心裡容易胡亂瞎想。所以怎麼安心下來才是你要做的。尤其是在備研的時候。生活過的簡單一些,事少一些才能靜心去做事。
我可以說下目前我的狀態,我生活很簡單。每天除了固定的複習,也很少出去社交(不是我宅、相反我很喜歡到處浪,只是覺得現在出去到處社交太浪費時間)。每天空閑了休息就看看新聞,微博刷刷段子或者學下PS一些有意思的軟體。每天沒太多雜亂的事干擾反而看書看的很著迷,有時候會拖到很晚叫外賣。
至於你說數據結構看著很枯燥…我只能說不要把書中的內容當任務當壓力。我剛好這幾天看數據結構(後天即將複習完第一遍),相反我覺得很有意思,看得入迷女朋友發微信都不知道。我反而樂此不疲的看書。這就是我說的不要當壓力,你才能體會樂趣。


YOU WON"T.


身邊總有一些大牛,很羨慕。但是,不要膜。


首先,每個行業都會因為當時環境的變化催生不同的崗位需求,例如前幾年的iOS和最近的前端飽和說法。

成為大牛的條件主要是做到了同行業人難以做到、或者是頂尖的事情。

在同齡人成為大牛的條件是:先學一點(很假)


回答樓主問題:

1.我這種情況是不是沒有找對自己的方向

2.是不是因為周圍的環境,使得我生活的太「安逸」?

3.學習一項新技術時我很難靜下心去看視頻或者看書,該怎麼辦?


1. 這個我也不清楚,但是你有機會換,可以選擇不換。能認真踏實的學下去之後是考慮是不是方向正確的基本條件,不然啥方向都覺得不對。現實來講,市場恰好需求某個方向的情況下比較好就業,資料多的方向方便成為厲害的人。

2. 這個也不清楚,我也不知道你周圍環境。但是環境的確會影響狀態,只是短期不顯著。這時你可以考慮向外求助約束,向內建立一個timelist,向內,比如最近因為一些特殊情況,我在參考Marc Andreessen 的個人效率指南 The Pmarca Guide to Personal Productivity來重建我的狀態。畢竟不能祈求周圍人怎麼教育你,離開了高中就沒有人有義務在生活上約束教導你了

3. 這個問題太普遍,我也有,我相信所有人都遇到過。參考2,藉助一個不錯的環境可以提供一些幫助,比如坐在圖書館經常被人路過的位置增加負罪感;也可以強制自己利用番茄時間的方案;也可以給自己設定一些獎勵機制之類。個人認為利用社會監督,比如在朋友圈每天發布進度,或獎勵機制比較有效。針對技術領域,可以把學習過程寫成博客,這也是我正學習做的。在整理寫作的過程能將掌握不深、模糊的地方確認和學習


其實更多的大牛在這個年齡都在積累知識,很低調,不顯山不漏水,媒體報道的只是少數


多和同齡的牛人和前輩交流,起碼多學習學習,總是好的咯~


喜歡編程,可以從早上一直編到第二天早上。

曾經我也以為我很喜歡編程,以為坐在電腦前,從早上 6 點到晚上 2 點,我就會寫反轉二叉樹了,我就能讀懂 Qemu 了,我就能在 Chrome 上面改改做出自己的產品了。後來發現 naive 了。
或許改成,從早上思考到下午,然後花一小時把代碼寫完,核心測試用例都有,才證明你真的喜歡編程。因為重點從來不在於敲了多少次鍵盤,或者坐在鍵盤前假裝敲了多少次鍵盤。
編程是為了解決問題,業務問題,演算法問題,各種問題,不在於代碼本身。之前自己一直陷入一種怪圈,用笨拙的方法,人肉 debug 解決各種問題。雖然最後可以工作,雖然一般也不會出啥大問題,雖然可以一遍一遍的點了編譯出去放個風;改了 js 刷新刷新瀏覽器。
我一直勸勉我自己,多讀讀書,多讀讀別人的代碼。但是現實是殘酷的,實際上我一樣都沒有好好完成,但是我花的時間也是很多,事倍功半。
另外,學校不組織 ACM 你就不會作死挑個冷門項目啃嘛。反正冷門嘛,你啃完了也就是大牛了……(反正別人不懂,但是不要隨便抖包袱就好了)


類似「如何成為IT技術大牛」這個問題,有太多的人提問過,按照強哥的學習經驗和成長經歷,其實非學簡單,就一個字:

每天寫它100行代碼,每天寫,當你積累了20000行代碼後,自然就有感覺了。當你積累了100000行代碼後,你就是高手了。

是的,我沒有跟大家開玩笑。就這麼簡單,都是實戰類技術,去做就好,死磕就好。不要天天看概念,不實戰。所謂的技術大牛,都是抱著對知識的無限渴求,在無數個孤獨寂靜的深夜中思考和沉澱,慢慢熬出來的!


秦始皇只比劉邦大了三歲。。。


這也是讓我很絕望的地方,我的高中同學,本科由於擦分錄取,去學了當時被認為騙錢的新興專業軟體工程,如今已經是技術大牛,C輪互聯網公司CTO了,我這輩子編程能力都趕不上了,但是小我十屆的化學專業同門師弟由於大二就進實驗室搬磚,現在實驗技能已經快超越我了!

我頓感生命快無意義了,趕緊去看了一下陳醫生,陳醫生告訴我,人總要勇敢生存,你還是重新許願,例如學會,從零開始全棧工程師。

但是既然選擇了條路,就還要走下去不是嗎,萬一我的高中同學四十歲就退休了呢?我說不定五十歲也能成為大牛!因為我想要擁有什麼,我就去追求什麼,直至死方休!


三胖也比我們大不了多少啊。


選擇 運氣 和 努力這三個裡面 努力是最沒用的


學習一項新技術確實不需要看視頻和看書,能出視頻和書說明這些技術已經不是新技術了。看視頻完全就是在浪費時間,看技術的書也差不多在浪費時間,因為現在的技術書90%的都是垃圾。不要妄想通過看視頻和看書來提高自己的水平,技術除了磨練之外別無他法。從今天早上敲到明天早上,這是笨,正常的都是要先思考(不一定要思考很清楚,但至少要有一個框架)然後才開始去敲代碼,慢慢思路才會清晰,遇上問題自己解決,如果發現不行,再結合實踐經驗重新思考問題,....。這是一個循環的過程,期間會出現任何無法預料的問題,一個個解決這些問題就是進步。不要把自己的身體不當回事,學習新東西需要清醒的大腦,不要把折磨自己的身體當磨練,那隻會適得其反,事倍功半。


推薦閱讀:

如何看待qq空間表白牆的爆火?
真正的 IT 男是什麼樣的?
怎麼判斷自己是否適合做程序員?
目前IT很火,很多人轉行,簡單培訓後進入IT行業,那麼這樣「速成」的IT從業人員發展前景如何?
21 歲才懂得努力晚嗎?

TAG:編程 | 計算機科學 | IT行業 |