我叫 Nuno,今年 16 歲,來自葡萄牙。今天我想跟大家聊聊我是如何成為一名全棧開發(fā)者的。
我一點也不覺得在我這個年紀(jì)成為一名程序員是一件很奇怪的事情。首先,我看到許多人說他們喜歡創(chuàng)造像俠盜獵車手 5 這樣的電子游戲或者是像部落沖突:皇室戰(zhàn)爭這樣的手機游戲,他們中的一些人確實在追逐這一夢想。他們學(xué)習(xí)編程,喜歡編程,然后他們開發(fā)屬于自己的獨立電子游戲。
其次,隨著市場上越來越多的 APP 出現(xiàn),年輕人用看似簡單的想法就成為了千萬富翁(比如馬克·扎克伯格和埃文·斯皮格爾),一個十幾歲的小朋友可能就會想,「為什么我不能試一試呢?」
但是也有人看到代碼就害怕。比如說,當(dāng)我向我的兄弟姐妹們展示一些我正在開發(fā)的代碼時,他們看著這些代碼會說,「我看不懂你剛才寫的都是些什么」。
再比如,我媽媽看到我用 C# 編程的時候會問我是不是在制作炸彈。哈哈,當(dāng)然了,她只是在開玩笑(因為她最后笑了),但是我必須告訴她我只是在編程。
又比如,我爸爸不知道 Python 是什么。我就給他寫了一個簡單的 Python 腳本用于一些自動化操作,但是當(dāng)我向他說明必須要點擊文件才能讓腳本跑起來的時候,他只是看著我并問我那是什么。
無論如何,盡管一堆代碼可能看起來很嚇人,但是我想年輕人也會對它感興趣的。并且代碼正在變得越來越簡單,看看網(wǎng)上可用的那些龐大的框架和庫,它們就是用于簡化一切的。代碼并不無聊,但是學(xué)習(xí)它......
我是如何開始我的開發(fā)旅程的
我一直都很喜歡互聯(lián)網(wǎng)和技術(shù)。我生于 2003 年,所以在我開始接觸電腦的第一年,我用的是 Windows XP 系統(tǒng)。天吶,我太喜歡了。說真的,這真是太棒了。我花了好幾個小時玩系統(tǒng)自帶的例如桌面彈球這種游戲,也用微軟的畫圖軟件畫了許多杰作哈哈。我也常常玩其它的游戲,比如瘋狂出租車,模擬人生,等等。我一直對技術(shù)很感興趣,總是想知道事物是如何運行的。
嗯,當(dāng)我 7 歲的時候,我拿到了只屬于我的第一臺電腦。在葡萄牙,孩子們通常會在上二年級的時候得到一臺叫作「麥哲倫」(葡萄牙探險家斐迪南·麥哲倫)的筆記本電腦,這是那個年齡的孩子最想要的東西。里面有很多教育項目,對于一個 7 歲的孩子來說真的很棒。Windows 7 系統(tǒng)運行在上面,對我來說,它是宇宙中最美妙、最珍貴的東西。
葡萄牙麥哲倫 2 - 2010/2011 年 7 歲的孩子最想要的東西
后來,這臺電腦壞了。我父親把他送去維修,但是最終還是因為運行速度太慢不能用了。(我說的能用是指玩電子游戲,當(dāng)時我很喜歡這些東西)
我又得到了另外一臺電腦,那時我記得我父親買了一臺壞的麥哲倫只是為了上面的一些零件,也許他可以通過這些零件修復(fù)我原來的那臺麥哲倫。但是這已經(jīng)沒那么重要了。因為我有了一臺臺式機,它比以前的那臺麥哲倫運行速度更快,盡管沒有那么有趣。
隨后,一個驚人且改變一生的想法出現(xiàn)在了我的腦海,既然我父親沒能修好我的麥哲倫,我覺得我能用他買的那些零件來創(chuàng)造屬于我自己的電子游戲機。
OUYA,我的開發(fā)旅程中最大的靈感
我那時是那么天真...
我了解到一個叫做 OUYA 的游戲機,它的設(shè)計方案給我留下了深刻的印象:一個全新的基于 Android 的游戲機,可以自由地修改和創(chuàng)建游戲。所以,我想要僅用麥哲倫的零件去制作這樣的一個游戲機。
毋庸置疑的是,我那時沒有足夠的知識來創(chuàng)建這樣一個大項目,而且現(xiàn)在也沒有,但我對此感到非常興奮。在閱讀了網(wǎng)上的一些文章之后,我決定我只需要學(xué)習(xí) C 語言和 Assembly 來構(gòu)建我的運行系統(tǒng)。
這很簡單,我想……
你猜怎么著?當(dāng)我看到 Assembly 的第一行代碼時,我就哭了。不是字面意思的哭,你懂的。
控制臺項目,再見 (╯°Д°)╯︵┻━┻
時間快進(jìn)到幾年以后。我和一個朋友決定,如果我們創(chuàng)辦一家像微軟或者蘋果這樣的公司就好了(那時我們只有 13 歲)。我們會開發(fā)出很多程序和應(yīng)用,會出名,能在錢堆成的海里游泳。
我們的夢有點像這樣...——照片來自 Chiara Daneluzzi, Unsplash
讓我們開始吧,我們想。創(chuàng)建一家大公司并賺取百萬歐元的第一步是什么?
沒錯——創(chuàng)建一個 Facebook 或者 Twitter 那樣的頁面。
在那之后,我們必須要開始創(chuàng)建我們的 app 和程序,但是我們都不會編程,一點都不會,連一行 Python,Java,PHP 的代碼都不會,甚至包括我的老朋友 C 語言我也不會。
那你可能會問,我們做了什么。準(zhǔn)確地來說....
我們并沒有學(xué)習(xí)如何敲代碼。相反,我們那時覺得跟著一些不太靠譜的關(guān)于如何用 Visual Basic 開發(fā) web 瀏覽器的 YouTube 視頻學(xué)習(xí)將會很好。
對我們的大公司來說真的很有創(chuàng)意,對吧?
你猜怎么著?我們開發(fā)了自己的瀏覽器!我甚至在 Weebly 上建立了一個網(wǎng)站(帶有.com 的地址——我真的不知道我是怎么成功說服我父親給我買一個的)來和全世界分享這一杰作。
也許沒有一個人在乎這件事情。
但這件小事,是我開發(fā)旅程的開始,這是今天的我成為一名開發(fā)者的原因。是和 Visual Basic 的第一次接觸(盡管我更早的時候試圖學(xué)習(xí) Java,但后來放棄了),是真正開始編程(盡管我只是把視頻里的那個家伙所講的進(jìn)行復(fù)制粘貼)。
我是如何真的開始我的開發(fā)之旅的
現(xiàn)在我們可以用正確的方式來討論編程了!
在這些愉快的經(jīng)歷之后,我意識到我必須學(xué)習(xí)如何正確地編寫代碼,而不是基于一些教我如何構(gòu)建一個可疑網(wǎng)頁瀏覽器的隨機出現(xiàn)的 YouTube 視頻。不,朋友們,我想要的不止這些!
這個網(wǎng)站對我的幫助很大: Codecademy (https://www.codecademy.com/)!
Codecademy 是迄今為止整個互聯(lián)網(wǎng)上最令人驚嘆的學(xué)習(xí)編程的網(wǎng)站之一。這讓我想到 freeCodeCamp (https://www.freecodecamp.org/)(我去年才知道它,它真的很棒),我相信在某些事情上它甚至更好。
我的第一次編程冒險是使用 Python 語言。Python 簡單、快速,學(xué)習(xí)和編程起來很有趣!它幾乎就像英語一樣(如果我從所有的英語老師那里聽到的都是真的,那么我的英語相對來說還是很好的)。
過了一段時間,我想要會得更多。出于好玩兒,我開始學(xué)習(xí) PHP(因為我甚至不想做網(wǎng)站,覺得它們太... 無聊了——看看我現(xiàn)在的樣子,真香)。我有一個朋友是 PHP 天才,我開始學(xué) PHP 也是因為他推薦我去學(xué)。
在很短的時間內(nèi),我了解了 PHP 和 Python 的基礎(chǔ)知識。但是后來我發(fā)現(xiàn)了一個 YouTube 頻道,從此永遠(yuǎn)地改變了我的開發(fā)者之路。它的名字是 Curso em Vídeo (https://www.cursoemvideo.com/),一個很棒的巴西人的頻道,有許多免費的編程課程,由一名叫做 Gustavo Guanabara 的非常好的大學(xué)老師講授。
發(fā)現(xiàn)這一頻道是發(fā)生在我身上的最好的事情(當(dāng)然,從專業(yè)角度來說)。
我參與了他們的第一門課程:算法和編程邏輯(抱歉,這是我能想到的最好的翻譯,我不確定這是不是這門課的名字)。
學(xué)習(xí)編程邏輯是我做過的最重要的事情之一;它對于我理解很多編程基礎(chǔ)的幫助很大。
然后我的開發(fā)之旅就正式開始了。
在那之后,我專心學(xué)習(xí) PHP(面向?qū)ο蟪绦蛟O(shè)計),Java(我最大的夢想,因為我一直想做 Android app),HTML/CSS,JavaScript(現(xiàn)在很重要)... 差不多就是這些。
我也嘗試學(xué)習(xí)了一點 C 語言(只是基礎(chǔ)),但是它讓我感到困惑。比如,我很難理解指針的概念。但是現(xiàn)在我覺得我已經(jīng)了解了最基本的東西,我可以寫一 個基本的 C 語言程序。
我開始學(xué)習(xí)許多編程語言并得到一份「工作」
做了這么多工作之后,我并不開心。當(dāng)我開始學(xué)習(xí)編程的時候,我最大的夢想就是能夠開發(fā)桌面和移動應(yīng)用程序。出于某種原因,我不喜歡網(wǎng)站,我不知道為什么,直到今天仍舊如此。
我的一個朋友(就是那個幫我成立大公司的那個人——他也學(xué)了 PHP),告訴我他認(rèn)識一個人,那個人有一個很大的項目,有很大的發(fā)展前景并且能夠成立一個正經(jīng)公司。
這個項目就是做一個網(wǎng)站。包括前端和后端。
但是當(dāng)你 13-14 歲的時候你是不在乎那些事情的。如果我的朋友參加了一個這么大的項目,我肯定也想加入進(jìn)來。因為即使我知道一些事情,我仍舊是個孩子。孩子們通常單純并且有點小小的嫉妒心。
我做了什么?我和我朋友的朋友談過,我以一些股份的價格(大約 10%)加入了他的項目。他們的項目,他們的提議,都給了我靈感。
所以這就是我如何得到第一份「工作」的故事:那時我 14 歲,在 PHP、HTML/CSS 還有 JavaScript 方面是個菜鳥,并且我有點嫉妒我的朋友。
現(xiàn)在怎么樣了呢?
好吧,我現(xiàn)在 16 歲了,我的旅程并沒有結(jié)束(當(dāng)然了)。在意識到 web 開發(fā)和移動端開發(fā)是我的專長之后,我開始學(xué)習(xí)更多 PHP,數(shù)據(jù)庫(MySQL 和 MongoDB)、API、JSON、HTML/CSS 和它們的框架(Bootstrap, Sass/Less...)最后還有一些 Javascript(ES6, Node.js...)
在 AngularJS, Vue.js 和 React 之間我猶豫了很久,決定先去學(xué) React。這是有史以來最好的事情,因為我能夠?qū)W習(xí)一些 React Native,實現(xiàn)我成為一個移動應(yīng)用開發(fā)者的夢想。
現(xiàn)在,我可以說我了解下面的這些技術(shù):
-
HTML/CSS(還有一些框架)
-
JavaScript (MERN stack (https://mern.io/), NodeJS, 等等)
-
PHP (不是 Laravel (https://laravel.com/) 我還有點后悔,我只用過 CodeIgniter (https://www.codeigniter.com/))
-
Databases (MySQL, MongoDB)
-
Java
-
Python
-
C# (只了解一點兒。和 Java 比較像。)
-
C (也只懂一點兒。我平常不用這個,只是在我覺得需要玩 Arduino 的時候才用。)
-
APIs (如何開發(fā)一個 REST API 并使用它)
現(xiàn)在,我不再像以前那樣專注于編程。我喜愛編程,仍舊每天編程,但是現(xiàn)在我更加關(guān)注加密貨幣,商業(yè)和人工智能這些我想了解的。
我現(xiàn)在最大的項目是一個用 Python 寫的加密貨幣投資機器人,我認(rèn)為它很有發(fā)展?jié)摿Α?/p>
我也對學(xué) UI/UX 設(shè)計給我的網(wǎng)站開發(fā)好的主題和設(shè)計感到非常興奮。
總結(jié)
我真的希望你喜歡這篇文章。對于那些和我年齡相仿并且正在考慮成為一名程序員的人來說,不要只想,而是要去做!這是迄今為止我在知識和職業(yè)方面所做的最令人驚訝的事情,你開始得越早就會做得越好。