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