突然想到,如果新手們像職業電競選手一樣學編程的話,即使天賦不行是不是也能超越大部分人?
突然想到,那些職業戰隊的電競選手每天要訓練至少12個小時,並且必須要強迫自己進行瞬間運算或者其他的規劃。
那如果有一個編程訓練營,然後新手抱著跟職業選手訓練一樣的態度去學習編程,等到都能夠信手捏來的時候是不是會比很多同一時間入門編程的人強很多?
為什麼沒有這樣的訓練營呢?
努力肯定是必須的,但是你怎麼學其實是一件更重要的事情。然而這種事情沒人可以教你,看你有沒有運氣發現了(逃。這就是沒有訓練營的原因,因為同一個方法當然不可能保證大家都學會,就像電競一樣,星際打了那麼多年,牛逼的還不是韓國人。
而且我想也不太有人能夠接受要滿足 Teach Yourself Programming in Ten Years 要求的訓練營的,所以GG。 畢竟編程要比電競複雜得多。雖然拿第一名都一樣很難,但是及格線卻大不一樣。
其實有的……
對的……我說的就是ACM/ICPC,訓練模式比起電競還要嚴格點兒,量也大,觀賞性還行,直接的實用性欠佳。而且就如題主所想,既有天賦又努力的人能拿個頭籌,只有天賦或者只是努力的人多少也能因此而混到一份工作,確實也在大多數情況下會比其他人強。
只不過這個裡面不少的人是自己覺得自己有天賦而且也足夠努力……很遺憾,目前我們看到的天才程序員不僅智商高,而且一個比一個學編程早。
在你那一天12小時叫努力學習,在人家那叫日常習慣。
即便是普通程序員,每天編程也近12小時(畢竟996,誤,攤手
所以靠花比別人更長的時間彎道超車在編程上比較少見,越是編程牛逼的人編程的時間越長,也許這才是所謂的天賦。沒兩個月連學員帶老師全部猝死
----------------------------------
我就看你們評論里能猝出什麼新花樣
智商不是硬傷的情況下 這種辦法能達到任何行業的下限以上 中等水平吧
同學你搞錯了
學編程更像是你在學校里學數學和英語
而不是像你在電玩上打遊戲
訓練12個小時真不算什麼
誰讀書時候沒有十幾個小時被數學外語之類的考驗過?
區別在於,電競還能樂在其中,讀書時候就更多是折磨了
學編程在起步階段,可能都需要像這種環境下去搞去
所以如果你讀書時候都沒讀清楚
你搞個編程先信手拈來,我看有難度
當然不排除有這樣的人
而且我覺得編程很像是學外語
那些基礎語法練習的時候跟學英語時候背單詞沒有太多本質上的區別
就是拼努力程度,在這個階段一點都不好玩其實
只是沒有像英語那樣要記幾千個單詞那麼變態而已
關鍵詞就那麼幾個,但還是需要投入汗水,難度跟學化學差不多吧
linux,vi不少命令也是要死記硬背的
到後面的話,脫離語言層面的話,那就完全是數學理論了
那比高中數學只會更難,遠不會更簡單
讀書讀不清楚,跟我說編程怎麼怎麼牛逼,我是不買這個賬的
尤其是說玩遊戲很牛逼,兩回事
一個招數連續訓練12小時,你可能成為競技大神。
一個函數連續使用12小時,你一定不配做程序員。
就醬。
現實中能夠日常訓練12個小時以上的,基本上已經是世界頂尖的職業選手了,按照某個1w小時理論,10000/12/365≈2.28年,大概也足夠天賦不夠的人成為行業內的中上層了吧。
但我想說的是,兩者的「學習」,區別其實還是挺大的。電競選手的日常訓練其實更接近體育項目,多數時候是為了熟練操作而非深化和擴展知識。過分一點說,很多電競選手扮演的是手,而腦的部分由其他人負責,這點在團隊遊戲中體現得更明顯。如此純粹堆積學習時間,最終得到的究竟是編程大師還是人肉印表機就不好說了。
不能。這相當於不能每個人都比平均分高。
跟電競選手匹配的應該是黑客訓練營。第一,有興趣。第二,憑本事吃飯。第三,需要天賦。
普通玩家就算玩十二個小時,強度也遠不及程序員敲十二個小時代碼。
當然,如果是跟電競選手一樣,非常枯燥的補刀,學戰術這樣的訓練強度。確實恐怕任何人都能在敲滿十萬行代碼之後成為一個比較優秀的程序員。
就像任何人通過訓練基本都可以成為一個國家一級運動員。但是成本收益比太低了吧。
因為編程的刻意練習太少了。
比如你想練習打字,你的教練告訴你,打a時候手指切入的角度力度,移動路徑的規劃,你不停的練習,掌握了所有的字母,但是還是不能成為優秀的程序員。
比如在魔方中,你通過練習,看到圖案可以不假思索的擰對應的公式,但在編程上,你看到一個數據結構能不假思索的轉換成另一種數據結構,這又有什麼用?
電競中,大家都是99分,你通過練習幫助你多了0.2分,就贏了。但在編程中,是99分和19的差距,你把q技能練的再熟練有什麼用?大神直接qwer糊你一臉同學你錯了。 如果真的不看天賦,努力訓練可行的話,那人人每天跑步,人人都是劉翔,人人都是奧運冠軍。人人都是李斯特;人人都是朗朗;人人都是李雲迪
題主好像漏掉了一條非常重要的大前提,就是
那些一天練十幾個小時的電競選手是選拔出來很會玩遊戲的人······
要定量分析,那你也得規定新手是很有編程天賦的人
然後這個問題就沒多大的討論價值了
題主這個語氣感覺是要強迫的,電競選手可是自願的
這樣發展下去······
要麼就是肯定更強,因為是一個有天賦的人比一般人更努力的練習,毫無疑問
要麼就是擼代碼擼到吐了,學編程從入門到放棄
腦力
體力機遇勤奮……每一項都是成為一流程序員的必須項。不僅僅是程序員,其他的行業也一樣。NBA頂尖人物,哪一個不是都具備?
編程頂尖人物,哪一個不是都具備?比爾蓋茨給上十年課就成首富了?ummm,我們忙起來的時候,一天不止十二個小時……
感覺兩碼事。。。有時候遇到一個問題,怎麼想也不明白,百度也沒查到(有些問題關鍵詞不好說啊),然後過幾天,突然有個想法,解決了!這不是訓練的事啊。努力無疑會提高水平,但每天十二小時這種腦力勞動,回到家累得要死躺床上就睡了,我非常不贊成,必須有一定時間做別的
說句題外話:我們寫代碼的。。為什麼要有瞬間計算能力這麼奇怪的想法?難道不應該是但凡是規範運算都交給機器嗎?
當然達到中等水平一般都是沒問題的。任何行業達到中游水平基本都是靠習慣而不是靠天賦。但是他們能在電競成功,說明他們電競有天賦,幹嘛要來學編程?閑的嗎。。
當然是這樣了,具體的做法就是在某個領域多寫不同的代碼。學習編程比起練習電競並無太多特殊地方,唯一要注意的是你需要圈定練習的範圍,別見啥學啥。圍繞一個複雜項目涉及的原理、需求去大量的寫不同代碼,就行了。
圈定範圍和領域為了專註,寫大量不同需求不同種類的代碼為了避免低水平重複而停滯不前。
所以編程這回事,牛逼人主要還是要限定在某一個特定領域,比如 miloyip是遊戲引擎,rfx是編譯和虛擬機,韋易笑是遊戲開發、服務端開發,vczh是C++和Gui。
比如你想搞資料庫領域的,實現幾種不同的資料庫,已經能完爆99%的工程師。
你想在網路編程領域比較屌,就實現個nginx。當然直接搞這些對於新手很難,那麼沒關係,你可以學習寫這些東西依賴的子技能和知識。不斷分解,直到你可以直接學習。比如寫資料庫你需要學習實現資料庫的原理,寫nginx需要學習tcp/ip和socket編程,還要理解一些特定問題的原理和解決方式,比如驚群,比如ioloop。
有的領域比較特殊,比如Web開發,沒高仿問量的項目你根本沒法練出來,而且技能也是個大雜燴,所以單獨訓練提高水平不是不行,而是沒環境和條件。但是Web所依賴的子編程能力,絕大多數也是可以單獨訓練的,只是經驗很不容易有條件訓練而已(比如類似火速修複線上問題這種)。這種情況建議你多多艹各種需求。
一開始不要或者盡量少讀代碼,同一個領域寫超過10萬行再讀,你讀代碼的能力很大程度上取決於你寫過代碼的經歷和經驗。比如你想閱讀nginx代碼提高水平,最好寫過類似領域的需求和知識,比如寫過一個高仿的Nginx。
個人觀點,完全不能相提並論你說的遊戲,其實有一個固定模板,補刀,戰術,最多練英雄,但其實不論打多少把腦子裡想的還是那些,甚至很多人還樂在其中。編程,如果你指的訓練只是不斷的訓練敲代碼,還是敲那些固定好了的書上的代碼或許可以湊合比對,但是編程是一個學習的過程,按這樣方法訓練或許基礎無敵好,但是編程最重要的是要有能解決問題的能力,意思就是給你一個新的需求你要能想辦法把他搞定了,有時候給你的是完全陌生從未接觸的領域你也要主動去學還要能學會,這才算是一個厲害的程序員。遊戲,操作和戰術最重要,但那都是死的。編程,要的是你有解決問題尤其是新問題的能力,這是活的,光用腦的量上就不是一個級別了吧,我真的每天接觸新知識學習,學幾個小時就感覺心累沒精神,不是不能集中注意力,是注意力已經難以集中_(:з」∠)_但是你讓我打遊戲,哼,只要身體沒問題,我能打到死。
首先回答答主,確實可以超過大部分人。
然後我們補個刀,現在一個普通的熟練水平的程序員,就是超過大部分人的水平了,甚至比答主的超過大部分人有過之而無不及。
推薦閱讀:
※設計一個新的編程語言後,如何實現它?
※如何解決代碼中難以重現的BUG?
※習得一種編程語言後如何高效地學習其他語言?
※一個簡單C語言編程問題?
※iOS程序員的第二門語言選什麼?