16歲的我是如何成為全棧開(kāi)發(fā)人員的?
我與計(jì)算機(jī)技術(shù)的緣分要從我七歲的時(shí)候說(shuō)起,當(dāng)時(shí)的我擁有了人生第一臺(tái)計(jì)算機(jī),這為我打開(kāi)了一個(gè)新世界,其內(nèi)置的 Win 7 系統(tǒng)對(duì)當(dāng)時(shí)的我來(lái)說(shuō)是世界上最精彩、寶貴的東西。14 歲的時(shí)候,我獲得了第一份“工作”,16 歲,我有了一個(gè)新夢(mèng)想——移動(dòng)應(yīng)用開(kāi)發(fā)夢(mèng)想。
先來(lái)解決第一個(gè)問(wèn)題:我是誰(shuí)?
我叫 Nuno,今年 16 歲,來(lái)自葡萄牙。今天,我想跟大家聊聊我是如何成為一名全棧開(kāi)發(fā)者(至少算是廣義上的全棧開(kāi)發(fā)者)的。
首先,我覺(jué)得我這個(gè)年紀(jì)的人接觸編程并不算什么新鮮事。因?yàn)槲疑磉吘陀泻芏嗤g的朋友,他們特別希望能夠開(kāi)發(fā)出像《俠盜獵車(chē)手 5》或者《皇室戰(zhàn)爭(zhēng)》這樣的游戲,而且有幾位還真的就開(kāi)始了追夢(mèng)之旅。他們學(xué)習(xí)編程、熱愛(ài)編程,如今開(kāi)始著手開(kāi)發(fā)自己的獨(dú)立游戲作品。
第二,隨著市場(chǎng)上應(yīng)用程序的數(shù)量越來(lái)越多,很多年輕人借此成了百萬(wàn)富翁(例如 Mark Zuckerberg 和 Evan Spiegel)。他們的創(chuàng)業(yè)思路看起來(lái)非常簡(jiǎn)單,所以很多年輕人會(huì)想,“我為什么不試試運(yùn)氣呢?”但也有不少人看到代碼就覺(jué)得害怕。反正每次我向兄弟姐妹展示自己的代碼時(shí),他們就連連搖頭,“看不明白你在寫(xiě)什么東西。”
我媽媽也差不多是這樣,她看到我用 C# 編程之后,關(guān)心地問(wèn)我是不是在做炸彈。當(dāng)然,她是在開(kāi)玩笑,因?yàn)樗詈笮?chǎng)了。但我確實(shí)得向她解釋,我這是在編程。
我爸爸完全不知道 Python 是什么,所以我打算幫他寫(xiě)一個(gè)簡(jiǎn)單的 Python 腳本來(lái)完成某些自動(dòng)化操作。不過(guò)在向他解釋必須單擊文件才能讓腳本運(yùn)行時(shí),他看起來(lái)一臉迷茫。
無(wú)論如何,即使面對(duì)著如此恐怖的代碼,很多年輕人仍然義無(wú)反顧地愿意投身進(jìn)來(lái)。事實(shí)上,編程本身的難度也確實(shí)在逐步下降。看看互聯(lián)網(wǎng)上那么多的框架和庫(kù)吧,儲(chǔ)量豐沛,專為簡(jiǎn)化流程而生。代碼本身雖然枯燥,但學(xué)習(xí)的過(guò)程卻豐富多彩。
我的編程之旅:起點(diǎn)
我一直很喜歡互聯(lián)網(wǎng)和信息技術(shù)。我 2003 年出生,所以我接觸的第一臺(tái)計(jì)算機(jī)上裝的就是超經(jīng)典的 Windows XP。我真的很喜歡 XP,它簡(jiǎn)直太棒了。我花了好幾個(gè)小時(shí)玩彈珠臺(tái)游戲,還用畫(huà)板應(yīng)用涂涂劃劃。另外,我還玩了一會(huì)兒《瘋狂出租車(chē)》和《模擬人生》等游戲??傊?,我對(duì)技術(shù)很感興趣,而且總想知道眼前的事物是怎樣運(yùn)作的。
大概是七歲的時(shí)候,我有了自己的第一臺(tái)電腦。在葡萄牙,家長(zhǎng)通常會(huì)在小學(xué)二年級(jí)的時(shí)候給孩子買(mǎi)臺(tái)筆記本,就是下圖里這臺(tái)。它叫“麥哲倫(Magalhães)”,紀(jì)念的當(dāng)然是葡萄牙探險(xiǎn)家麥哲倫啦,這是二年級(jí)小孩們最想要的東西了。里面預(yù)裝了不少教育課程,對(duì) 7 歲的孩子來(lái)說(shuō)就像是個(gè)全新的世界。它使用的是 Windows 7 系統(tǒng),這套系統(tǒng)對(duì)我來(lái)說(shuō)就像是宇宙里最精彩、也最寶貴的東西。
麥哲倫 2 代——2010/2011 年的時(shí)候 7 歲小朋友們最想要的禮物。
但“王權(quán)沒(méi)有永恒”,最后這臺(tái)電腦壞了。我爸爸把它送去修,雖然毛病修好了,但運(yùn)行速度變得很慢,基本沒(méi)法用。(我說(shuō)的「用」,就是拿來(lái)玩游戲。我那時(shí)候特別喜歡玩游戲。)
接下來(lái)我又有了第二臺(tái)電腦,我記得我爸爸還買(mǎi)了一臺(tái)壞的麥哲倫電腦,打算出毛病的時(shí)候拆上邊的配件來(lái)?yè)Q??赡芩X(jué)得無(wú)論我的東西出了什么問(wèn)題,他都能修好吧。但無(wú)所謂的,因?yàn)槲医K于有了一部臺(tái)式機(jī),雖然沒(méi)有麥哲倫那么有趣,但性能可要好得多啦。
就在這時(shí)候,我突然冒出了一個(gè)改變了自己人生的神奇念頭:既然我爸修不好原先那臺(tái)麥哲倫電腦,我想我可以用配件組裝一臺(tái)個(gè)人游戲機(jī)。
OUYA,這是我編程旅程中最重要的靈感來(lái)源。
當(dāng)時(shí)的我,并不知道自己的決定意味著什么……
我當(dāng)時(shí)聽(tīng)說(shuō)過(guò)一臺(tái)名叫 OUYA 的主機(jī),它給我留下了非常深刻的印象:這是一臺(tái)基于 Android 系統(tǒng)的全新主機(jī),能夠自由修改并創(chuàng)建游戲。所以,我想弄一臺(tái)只屬于自己的麥哲倫游戲主機(jī)。
相信大家肯定能想到,我當(dāng)時(shí)沒(méi)能——實(shí)際上到現(xiàn)在也不能——完成這項(xiàng)目標(biāo),其中涉及的專業(yè)知識(shí)量多得驚人。但我還是非常興奮。在閱讀了互聯(lián)網(wǎng)上的一些文章之后,我決定學(xué)習(xí) C 語(yǔ)言加匯編語(yǔ)言來(lái)構(gòu)建自己的操作系統(tǒng)。
我真的感覺(jué)這事不是很難……
然后,在看到第一行匯編代碼的時(shí)候,我就哭了。好吧,并沒(méi)有真的哭出來(lái),但大家應(yīng)該明白我的感受:一個(gè)美好的主機(jī)夢(mèng),就這樣胎死腹中。
時(shí)間快進(jìn)到幾年之后,我和朋友又打算創(chuàng)辦一家像微軟或者蘋(píng)果這樣的公司(當(dāng)時(shí)我 13 歲)。這又是個(gè)令人興奮的打算,我們會(huì)開(kāi)發(fā)眾多程序與應(yīng)用、聲名大噪,然后每天坐著數(shù)錢(qián)。
這就是我們的夢(mèng)想……
那還等什么,馬上開(kāi)始吧!那么,創(chuàng)建這家大企業(yè)、豪賺數(shù)百萬(wàn)歐元的第一步應(yīng)該是什么?
對(duì)了——先創(chuàng)建一個(gè) Facebook/Twitter 頁(yè)面。
在此之后,我們又開(kāi)始動(dòng)手創(chuàng)建應(yīng)用與程序。但那時(shí)候我和我的朋友還完全不懂編程,一點(diǎn)也不懂。我們做的事情跟 Python、Java、PHP 甚至是我的老朋友 C 語(yǔ)言一點(diǎn)關(guān)系都沒(méi)有!
那我們是在干嘛?實(shí)際上……
我們根本就沒(méi)有學(xué)習(xí)編程。相反,我們覺(jué)得可以在 YouTube 上建個(gè)頻道,專發(fā)如何使用 Visual Basic 創(chuàng)建一款網(wǎng)絡(luò)瀏覽器。
對(duì)我們的這家大公司來(lái)說(shuō),這真的很有創(chuàng)意,對(duì)吧?
而且不怕告訴各位,我們的瀏覽器真就成功了!我甚至在 Weebly 上創(chuàng)建了一個(gè)網(wǎng)站(加上.com,我設(shè)法說(shuō)服父親給我買(mǎi)了個(gè)域名,真的)將其分享給全世界。
但是,沒(méi)人關(guān)心我們的成果。
但這無(wú)所謂。首次嘗試,代表著我正式踏出了編程學(xué)習(xí)的第一步,也是我如今能夠成為開(kāi)發(fā)人員的原因所在。這是我第一次接觸 Visual Basic(之前我也試著學(xué)過(guò) Java,但放棄了)并真正開(kāi)始編程(雖然我所做的,只是復(fù)制粘貼教學(xué)視頻里的內(nèi)容)。
我的編程之旅:真正的起點(diǎn)
現(xiàn)在,我要說(shuō)說(shuō)如何正確學(xué)習(xí)編程了。在有了以上愉快的經(jīng)歷之后,我意識(shí)到自己必須認(rèn)真學(xué)習(xí)編程,而不能只靠 YouTube 視頻幫自己構(gòu)建那些實(shí)驗(yàn)性的網(wǎng)絡(luò)瀏覽器,向大家隆重介紹我的恩師:Codecademy!
Codecademy 是迄今為止我在編程學(xué)習(xí)過(guò)程中接觸到的最有用的網(wǎng)站之一。它跟 freeCodeCamp 有點(diǎn)類似(我去年才知道這個(gè)網(wǎng)站,它同樣非常出色),但我覺(jué)得 Codecademy 在某些方面做得更好。
我的第一段歷險(xiǎn)是探索 Python 世界。Python 簡(jiǎn)單、快速、有趣,是最理想的編程學(xué)習(xí)起點(diǎn)!它跟英語(yǔ)只有一點(diǎn)點(diǎn)區(qū)別(英語(yǔ)老師說(shuō)我英語(yǔ)學(xué)得不錯(cuò),可能這也是我喜歡 Python 的原因吧)。
學(xué)了一陣子之后,我的好奇心更加強(qiáng)烈。所以我開(kāi)始學(xué)習(xí) PHP,當(dāng)然只是出于興趣(我不想開(kāi)發(fā)網(wǎng)站,網(wǎng)站真的很無(wú)聊……)。我有個(gè)朋友,是 PHP 方面的天才。聽(tīng)了他的建議,我也踏上了這條學(xué)習(xí)的道路。
很快,我就掌握了 PHP 和 Python 的基礎(chǔ)知識(shí)。但是后來(lái),我發(fā)現(xiàn)了一個(gè) YouTube 頻道,它徹底改變了我的開(kāi)發(fā)思維。這是一個(gè)巴西頻道,名叫 Curso em Vídeo,里面有不少編程課程,來(lái)自一位名叫的 Gustavo Guanabara 優(yōu)秀大學(xué)老師。
這個(gè)頻道讓我真正朝著專業(yè)的方向邁進(jìn)。
我在這里上的第一門(mén)課程叫算法與編程邏輯。學(xué)習(xí)編程邏輯非常重要,有了對(duì)它的理解,我才能真正消化很多編程基礎(chǔ)知識(shí)。
在此之后,我開(kāi)始專注于學(xué)習(xí) PHP、Java(我最大的夢(mèng)想,因?yàn)槲乙恢毕腴_(kāi)發(fā) Android 應(yīng)用)、HTML/CSS 以及 JavaScript(現(xiàn)在對(duì)我來(lái)說(shuō)非常重要)。
我也嘗試過(guò)學(xué)習(xí)一點(diǎn) C 語(yǔ)言知識(shí)(只是基礎(chǔ)),并發(fā)現(xiàn)這真的是有門(mén)檻的。例如,我在理解指針的概念時(shí)就感到非常困難。但至少我已經(jīng)了解了最基礎(chǔ)的情況,能夠編寫(xiě)出簡(jiǎn)單的 C 程序了。
我的編程之旅:“海綿期”
在完成以上工作后,我感覺(jué)并不開(kāi)心。因?yàn)樵谧畛蹰_(kāi)始學(xué)習(xí)編程時(shí),我最大的夢(mèng)想就是能夠開(kāi)發(fā)出自己的桌面和移動(dòng)應(yīng)用程序。但出于某種原因,我一直不喜歡開(kāi)發(fā)網(wǎng)站,到現(xiàn)在也不喜歡——而且我也說(shuō)不出個(gè)所以然來(lái)。
我的一個(gè)朋友(就是當(dāng)初那個(gè)打算跟我一起開(kāi)大公司,而且很擅長(zhǎng) PHP 的朋友)告訴我,他認(rèn)識(shí)的一個(gè)人手頭有個(gè)大項(xiàng)目,前景光明、沒(méi)準(zhǔn)能發(fā)展成一家真正的企業(yè)。
這個(gè)項(xiàng)目是開(kāi)發(fā)網(wǎng)站,后端加前端。
但作為一個(gè) 13、14 歲的孩子,當(dāng)時(shí)的我并不關(guān)心這些。我想的是,既然朋友都參加了,那我也得參加。雖然學(xué)習(xí)的內(nèi)容多了一點(diǎn),但我畢竟也只是個(gè)普通的同齡人,那么大的時(shí)候大家都又愚蠢又容易嫉妒。反正朋友能去的,我也得去。
我跟朋友提到的那個(gè)人談過(guò)了,最終決定以股權(quán)的形式(大約是占股 10%)幫忙開(kāi)發(fā)網(wǎng)站。這個(gè)項(xiàng)目,還有他們的計(jì)劃,都讓我非常振奮。
好了,這就是我第一份“工作”的故事:我當(dāng)時(shí) 14 歲,學(xué)過(guò) PHP、HTML/CSS 和 JavaScript,而且對(duì)自己的朋友充滿嫉妒。
挺“專業(yè)”的吧~
我的編程之旅:現(xiàn)在進(jìn)行時(shí)
現(xiàn)在我 16 歲了,我的編程之旅也遠(yuǎn)沒(méi)有止步。在意識(shí)到 Web 開(kāi)發(fā)與移動(dòng)開(kāi)發(fā)將成為我的飯碗之后,我開(kāi)始學(xué)習(xí)更多關(guān)于 PHP、數(shù)據(jù)庫(kù)(MySQL 與 MongoDB)、API、JSON、HTM/CSS 及其框架(Bootstrap、Sass/Less 等)甚至是 JavaScript(ES6、Node.js 等)的專業(yè)知識(shí)。
剛開(kāi)始我打算學(xué)習(xí) React,而且在它、AngularJS 和 Vue.js 之間掙扎了很久。但事實(shí)證明我選對(duì)了,學(xué)習(xí) React 的過(guò)程中我接觸到了 React Native,這幫我一步步走近自己心中的移動(dòng)應(yīng)用開(kāi)發(fā)夢(mèng)想。
現(xiàn)在,我想我已經(jīng)掌握(至少了解)了以下技術(shù):
- HTML/CSS (及其框架)
 - JavaScript (MERN stack、NodeJS 等)
 - PHP (但我很后悔沒(méi)有學(xué)習(xí) Laravel, 目前只會(huì)用 CodeIgniter)
 - 數(shù)據(jù)庫(kù) (MySQL、MongoDB)Java
 - Python
 - C# (只會(huì)一點(diǎn)點(diǎn),好在它跟 Java 比較類似)
 - C (會(huì)一些。我用得不多,主要是用來(lái)擺弄 Arduino)
 - API (了解如何開(kāi)發(fā)并使用 REST API)
 
現(xiàn)在,我再不像以前那樣專注于編程。我喜歡編程,每天也都在做相關(guān)工作,但我更關(guān)注加密貨幣、商務(wù)以及人工智能,這些都是我接下來(lái)的學(xué)習(xí)重點(diǎn)。
我現(xiàn)在最大的項(xiàng)目就是用 Python 編寫(xiě)的加密貨幣投資機(jī)器人,我覺(jué)得它有很大的發(fā)展?jié)摿Α?/p>
另外,我很慶幸自己學(xué)習(xí)了 UI/UX 設(shè)計(jì),這些知識(shí)為我在網(wǎng)站上開(kāi)發(fā)出良好的主題與設(shè)計(jì)做出了重要貢獻(xiàn)。
總結(jié)
希望大家喜歡這篇文章。對(duì)于那些跟我同齡,而且也在考慮學(xué)習(xí)編程的朋友們,我的建議是:不要想,馬上去做!編程是我在整個(gè)人生中最難忘的一段歷程,同時(shí)也讓我有了豐富而精彩的回憶??傊@段旅程越早開(kāi)始越好!















 
 
 






 
 
 
 