摘要:2016 年有位年輕的程序員在 Quora 上提問(wèn)求助: 我今年 17 歲纵揍,從 14 歲開始編程。我主要關(guān)注 Java 語(yǔ)言议街,并在 AP 計(jì)算機(jī)科學(xué)這門課上拿了 5 分泽谨。我相當(dāng)精通 Java(比如語(yǔ)法、主要類特漩、GUI/JFrame 等)吧雹,HTML5 和 CSS3 也不錯(cuò)。
2016 年有位年輕的程序員在 Quora 上提問(wèn)求助:
我今年 17 歲涂身,從 14 歲開始編程雄卷。我主要關(guān)注 Java 語(yǔ)言,并在 AP 計(jì)算機(jī)科學(xué)這門課上拿了 5 分蛤售。我相當(dāng)精通 Java(比如語(yǔ)法丁鹉、主要類、GUI/JFrame 等)悴能,HTML5 和 CSS3 也不錯(cuò)揣钦。我感覺(jué)自己缺乏很多有用的技能,來(lái)幫助我在人才市場(chǎng)上推銷自己(比如數(shù)據(jù)庫(kù)的工作原理漠酿,以及我應(yīng)該使用哪些工具)冯凹,我很好奇其他人是如何學(xué)習(xí)這些東西的。我打算去大學(xué)拿一個(gè)軟件開發(fā)的學(xué)位炒嘲,但我開始感到有點(diǎn)沮喪宇姚,覺(jué)得讀大學(xué)的目的就是為了工作。現(xiàn)在有哪些我應(yīng)該上的課程夫凸,或者應(yīng)該做的事情嗎浑劳?
下面是 Brain Knapp 的回答分享︰
我認(rèn)為你的看法錯(cuò)了。你覺(jué)得你需要上課夭拌,讓別人來(lái)教你呀洲,告訴你答案。從根本上講,自學(xué)的程序員能夠做不一樣的事情道逗。
自學(xué)的程序員和自學(xué)的吉他手有很多共同點(diǎn)兵罢。我不知道你是否玩過(guò)吉他,所以我將向你解釋如何自學(xué)吉他滓窍。
首先卖词,這一切的開始是由于某人與某個(gè)吉他手產(chǎn)生了共鳴。大多數(shù)突然想要自學(xué)吉他的人吏夯,是想要成為另一個(gè)吉他手此蜈。之后,他們下定決心——“我也可以成為一個(gè)吉他手 ”噪生,于是去了當(dāng)?shù)氐臉?lè)器店裆赵,買了一把二手吉他(因?yàn)槎旨阋耍埠芸幔?/p>
接下來(lái)可能會(huì)有兩種情況跺嗽,要不買一本“吉他入門”或類似的書籍開始自學(xué)战授,要不打開 YouTube,開始學(xué)習(xí)如何彈奏自己喜愛(ài)的歌桨嫁。那些嘗試學(xué)習(xí)彈奏喜歡的歌的自學(xué)者植兰,往往學(xué)得更好。
當(dāng)年輕的吉他手主動(dòng)地學(xué)習(xí)某首歌時(shí)璃吧,他們往往需要觀看視頻楣导、打印曲譜、練習(xí)和弦等等畜挨。然后筒繁,根據(jù)拿到的視頻和曲譜,他們會(huì)坐下來(lái)嘗試重新演繹歌曲巴元。
經(jīng)過(guò)數(shù)小時(shí)的練習(xí)膝晾,不斷重復(fù)和弦、獨(dú)奏务冕、節(jié)拍等血当,他們將能夠以自己的形式表演那首歌。它不再是原來(lái)那首歌禀忆,但也夠酷臊旭。
然后,他們會(huì)拿起另一首歌箩退,重復(fù)這個(gè)過(guò)程离熏。一路走來(lái),他們不斷學(xué)習(xí)節(jié)拍戴涝、技術(shù)以及其他的東西滋戳,甚至都沒(méi)有意識(shí)到學(xué)習(xí)的內(nèi)容钻蔑。在知道專業(yè)名詞和理論前,他們已經(jīng)懂得如何操作奸鸯。
最終咪笑,彈吉他變成了一種“直覺(jué)”,學(xué)習(xí)一首新歌也變得習(xí)以為常且不再痛苦娄涩。吉他的“語(yǔ)言”變得像你我說(shuō)話那樣容易窗怒。
這一切的發(fā)生,背后是數(shù)千小時(shí)的艱苦練習(xí)蓄拣。即使每天只練習(xí)一小時(shí)扬虚,也需要耗費(fèi)數(shù)年。
那么球恤,這和自學(xué)的程序員有什么關(guān)系呢辜昵?
事實(shí)上,真正成就自學(xué)的程序員的咽斧,就是他們會(huì)自己創(chuàng)建東西堪置,很多東西。要成為一個(gè)具有卓越技能的出色程序員收厨,你必須創(chuàng)建東西,寫代碼优构。
上課學(xué)習(xí)理論知識(shí)固然是好的诵叁,但很多教授不能跳出條條框框的束縛,以自己的方式編程钦椭。就算他們努力嘗試拧额,也做不出別人愿意用的應(yīng)用程序。
這并不是說(shuō)他們不了解教授的知識(shí)彪腔,而是說(shuō)侥锦,作為一名教授,他們掌握的技能是研究和理論性理解德挣,而不是寫代碼和為客戶提供價(jià)值恭垦。
你看到區(qū)別了嗎?
我合作過(guò)的最好的程序員格嗅,他們的工作方式就是做東西番挺,做很多東西,并且?guī)缀跻恢边@樣屯掖。
例如玄柏,現(xiàn)在幾乎每個(gè)人都使用 WordPress。在 WordPress 出現(xiàn)很久之前贴铜,我就用 PHP 和 MySQL 創(chuàng)建了 3 到 5 個(gè)不同的內(nèi)容管理系統(tǒng)粪摘。我寫過(guò)游戲瀑晒、移動(dòng)應(yīng)用程序、框架徘意,還有 SAAS 應(yīng)用程序苔悦。
沒(méi)人付錢讓我做這些事情。我做這些事純粹是出于好玩映砖、學(xué)習(xí)或好奇的目的间坐。
我已經(jīng)好幾年都沒(méi)有上過(guò)課了,即使上了邑退,我也不覺(jué)得這會(huì)對(duì)我的事業(yè)有任何幫助竹宋。然而,如果我決定坐下來(lái)地技,從頭開始創(chuàng)建我自己的計(jì)算機(jī)語(yǔ)言或操作系統(tǒng)蜈七,我打賭我一定能在過(guò)程中學(xué)到很多有趣的東西。
是的莫矗,我可以帶著那些想法上課飒硅,但在創(chuàng)建東西,犯下錯(cuò)誤作谚,以及真正“體會(huì)到”這一切的經(jīng)歷中三娩,相比讀一本書或聽(tīng)一次講座,我能收獲更多妹懒。
因此雀监,我給你的建議(如果你做到了,相比沒(méi)有做的那些人而言眨唬,會(huì)帶給你巨大的優(yōu)勢(shì))会前,就是:
解決一個(gè)你想解決的問(wèn)題。創(chuàng)建一個(gè)用于某件事的軟件匾竿,解決一些你本人或他人想要通過(guò)軟件解決的問(wèn)題瓦宜。每天為這個(gè)軟件寫代碼,晚上寫岭妖,周末也寫临庇,每天都寫。即使你每天只花了 15 分鐘寫代碼昵慌,也沒(méi)關(guān)系苔巨。
最終,你將得到一個(gè)能用的軟件废离,這很不錯(cuò)侄泽。