高效開發運維2019-09-13 06:38:25
先來解決第一個問題:我是誰?
我叫 Nuno,今年 16 歲,來自葡萄牙。今天,我想跟大家聊聊我是如何成為一名全棧開發者(至少算是廣義上的全棧開發者)的。
首先,我覺得我這個年紀的人接觸程式設計並不算什麼新鮮事。因為我身邊就有很多同齡的朋友,他們特別希望能夠開發出像《俠盜獵車手 5》或者《皇室戰爭》這樣的遊戲,而且有幾位還真的就開始了追夢之旅。他們學習程式設計、熱愛程式設計,如今開始著手開發自己的獨立遊戲作品。
第二,隨著市場上應用程式的數量越來越多,很多年輕人藉此成了百萬富翁(例如 Mark Zuckerberg 和 Evan Spiegel)。他們的創業思路看起來非常簡單,所以很多年輕人會想,“我為什麼不試試運氣呢?”但也有不少人看到程式碼就覺得害怕。反正每次我向兄弟姐妹展示自己的程式碼時,他們就連連搖頭,“看不明白你在寫什麼東西。”
我媽媽也差不多是這樣,她看到我用 C# 程式設計之後,關心地問我是不是在做炸彈。當然,她是在開玩笑,因為她最後笑場了。但我確實得向她解釋,我這是在程式設計。
我爸爸完全不知道 Python 是什麼,所以我打算幫他寫一個簡單的 Python 指令碼來完成某些自動化操作。不過在向他解釋必須單擊檔案才能讓指令碼執行時,他看起來一臉迷茫。
無論如何,即使面對著如此恐怖的程式碼,很多年輕人仍然義無反顧地願意投身進來。事實上,程式設計本身的難度也確實在逐步下降。看看網際網路上那麼多的框架和庫吧,儲量豐沛,專為簡化流程而生。程式碼本身雖然枯燥,但學習的過程卻豐富多彩。
我一直很喜歡網際網路和資訊科技。我 2003 年出生,所以我接觸的第一臺計算機上裝的就是超經典的 Windows XP。我真的很喜歡 XP,它簡直太棒了。我花了好幾個小時玩彈珠檯遊戲,還用畫板應用塗塗劃劃。另外,我還玩了一會兒《瘋狂計程車》和《模擬人生》等遊戲。總之,我對技術很感興趣,而且總想知道眼前的事物是怎樣運作的。
大概是七歲的時候,我有了自己的第一臺電腦。在葡萄牙,家長通常會在小學二年級的時候給孩子買檯筆記本,就是下圖裡這臺。它叫“麥哲倫(Magalhães)”,紀念的當然是葡萄牙探險家麥哲倫啦,這是二年級小孩們最想要的東西了。裡面預裝了不少教育課程,對 7 歲的孩子來說就像是個全新的世界。它使用的是 Windows 7 系統,這套系統對我來說就像是宇宙裡最精彩、也最寶貴的東西。
麥哲倫 2 代——2010/2011 年的時候 7 歲小朋友們最想要的禮物。
但“王權沒有永恆”,最後這臺電腦壞了。我爸爸把它送去修,雖然毛病修好了,但執行速度變得很慢,基本沒法用。(我說的「用」,就是拿來玩遊戲。我那時候特別喜歡玩遊戲。)
接下來我又有了第二臺電腦,我記得我爸爸還買了一臺壞的麥哲倫電腦,打算出毛病的時候拆上邊的配件來換。可能他覺得無論我的東西出了什麼問題,他都能修好吧。但無所謂的,因為我終於有了一部桌上型電腦,雖然沒有麥哲倫那麼有趣,但效能可要好得多啦。
就在這時候,我突然冒出了一個改變了自己人生的神奇念頭:既然我爸修不好原先那臺麥哲倫電腦,我想我可以用配件組裝一臺個人遊戲機。
OUYA,這是我程式設計旅程中最重要的靈感來源。
當時的我,並不知道自己的決定意味著什麼……
我當時聽說過一臺名叫 OUYA 的主機,它給我留下了非常深刻的印象:這是一臺基於 Android 系統的全新主機,能夠自由修改並建立遊戲。所以,我想弄一臺只屬於自己的麥哲倫遊戲主機。
相信大家肯定能想到,我當時沒能——實際上到現在也不能——完成這專案標,其中涉及的專業知識量多得驚人。但我還是非常興奮。在閱讀了網際網路上的一些文章之後,我決定學習 C 語言加組合語言來構建自己的作業系統。
我真的感覺這事不是很難……
然後,在看到第一行彙編程式碼的時候,我就哭了。好吧,並沒有真的哭出來,但大家應該明白我的感受:一個美好的主機夢,就這樣胎死腹中。
時間快進到幾年之後,我和朋友又打算創辦一家像微軟或者蘋果這樣的公司(當時我 13 歲)。這又是個令人興奮的打算,我們會開發眾多程式與應用、聲名大噪,然後每天坐著數錢。
這就是我們的夢想……
那還等什麼,馬上開始吧!那麼,建立這家大企業、豪賺數百萬歐元的第一步應該是什麼?
對了——先建立一個 Facebook/Twitter 頁面。
在此之後,我們又開始動手建立應用與程式。但那時候我和我的朋友還完全不懂程式設計,一點也不懂。我們做的事情跟 Python、Java、PHP 甚至是我的老朋友 C 語言一點關係都沒有!
那我們是在幹嘛?實際上……
我們根本就沒有學習程式設計。相反,我們覺得可以在 YouTube 上建個頻道,專發如何使用 Visual Basic 建立一款網路瀏覽器。
對我們的這家大公司來說,這真的很有創意,對吧?
而且不怕告訴各位,我們的瀏覽器真就成功了!我甚至在 Weebly 上建立了一個網站(加上.com,我設法說服父親給我買了個域名,真的)將其分享給全世界。
但是,沒人關心我們的成果。
但這無所謂。首次嘗試,代表著我正式踏出了程式設計學習的第一步,也是我如今能夠成為開發人員的原因所在。這是我第一次接觸 Visual Basic(之前我也試著學過 Java,但放棄了)並真正開始程式設計(雖然我所做的,只是複製貼上教學視訊裡的內容)。
現在,我要說說如何正確學習程式設計了。在有了以上愉快的經歷之後,我意識到自己必須認真學習程式設計,而不能只靠 YouTube 視訊幫自己構建那些實驗性的網路瀏覽器,向大家隆重介紹我的恩師:Codecademy!
Codecademy 是迄今為止我在程式設計學習過程中接觸到的最有用的網站之一。它跟 freeCodeCamp 有點類似(我去年才知道這個網站,它同樣非常出色),但我覺得 Codecademy 在某些方面做得更好。
我的第一段歷險是探索 Python 世界。Python 簡單、快速、有趣,是最理想的程式設計學習起點!它跟英語只有一點點區別(英語老師說我英語學得不錯,可能這也是我喜歡 Python 的原因吧)。
學了一陣子之後,我的好奇心更加強烈。所以我開始學習 PHP,當然只是出於興趣(我不想開發網站,網站真的很無聊……)。我有個朋友,是 PHP 方面的天才。聽了他的建議,我也踏上了這條學習的道路。
很快,我就掌握了 PHP 和 Python 的基礎知識。但是後來,我發現了一個 YouTube 頻道,它徹底改變了我的開發思維。這是一個巴西頻道,名叫 Curso em Vídeo,裡面有不少程式設計課程,來自一位名叫的 Gustavo Guanabara 優秀大學老師。
這個頻道讓我真正朝著專業的方向邁進。
我在這裡上的第一門課程叫演算法與程式設計邏輯。學習程式設計邏輯非常重要,有了對它的理解,我才能真正消化很多程式設計基礎知識。
在此之後,我開始專注於學習 PHP、Java(我最大的夢想,因為我一直想開發 Android 應用)、HTML/CSS 以及 JavaScript(現在對我來說非常重要)。
我也嘗試過學習一點 C 語言知識(只是基礎),並發現這真的是有門檻的。例如,我在理解指標的概念時就感到非常困難。但至少我已經瞭解了最基礎的情況,能夠編寫出簡單的 C 程式了。
在完成以上工作後,我感覺並不開心。因為在最初開始學習程式設計時,我最大的夢想就是能夠開發出自己的桌面和移動應用程式。但出於某種原因,我一直不喜歡開發網站,到現在也不喜歡——而且我也說不出個所以然來。
我的一個朋友(就是當初那個打算跟我一起開大公司,而且很擅長 PHP 的朋友)告訴我,他認識的一個人手頭有個大專案,前景光明、沒準能發展成一家真正的企業。
這個專案是開發網站,後端加前端。
但作為一個 13、14 歲的孩子,當時的我並不關心這些。我想的是,既然朋友都參加了,那我也得參加。雖然學習的內容多了一點,但我畢竟也只是個普通的同齡人,那麼大的時候大家都又愚蠢又容易嫉妒。反正朋友能去的,我也得去。
我跟朋友提到的那個人談過了,最終決定以股權的形式(大約是佔股 10%)幫忙開發網站。這個專案,還有他們的計劃,都讓我非常振奮。
好了,這就是我第一份“工作”的故事:我當時 14 歲,學過 PHP、HTML/CSS 和 JavaScript,而且對自己的朋友充滿嫉妒。
挺“專業”的吧~
現在我 16 歲了,我的程式設計之旅也遠沒有止步。在意識到 Web 開發與移動開發將成為我的飯碗之後,我開始學習更多關於 PHP、資料庫(MySQL 與 MongoDB)、API、JSON、HTM/CSS 及其框架(Bootstrap、Sass/Less 等)甚至是 JavaScript(ES6、Node.js 等)的專業知識。
剛開始我打算學習 React,而且在它、AngularJS 和 Vue.js 之間掙扎了很久。但事實證明我選對了,學習 React 的過程中我接觸到了 React Native,這幫我一步步走近自己心中的移動應用開發夢想。
現在,我想我已經掌握(至少了解)了以下技術:
HTML/CSS (及其框架)
JavaScript (MERN stack、NodeJS 等)
PHP (但我很後悔沒有學習 Laravel, 目前只會用 CodeIgniter)
資料庫 (MySQL、MongoDB)Java
Python
C# (只會一點點,好在它跟 Java 比較類似)
C (會一些。我用得不多,主要是用來擺弄 Arduino)
API (瞭解如何開發並使用 REST API)
現在,我再不像以前那樣專注於程式設計。我喜歡程式設計,每天也都在做相關工作,但我更關注加密貨幣、商務以及人工智慧,這些都是我接下來的學習重點。
我現在最大的專案就是用 Python 編寫的加密貨幣投資機器人,我覺得它有很大的發展潛力。
另外,我很慶幸自己學習了 UI/UX 設計,這些知識為我在網站上開發出良好的主題與設計做出了重要貢獻。
希望大家喜歡這篇文章。對於那些跟我同齡,而且也在考慮學習程式設計的朋友們,我的建議是:不要想,馬上去做!程式設計是我在整個人生中最難忘的一段歷程,同時也讓我有了豐富而精彩的回憶。總之,這段旅程越早開始越好!
原文連結:
https://medium.com/better-programming/how-i-became-a-16-year-old-full-stack-developer-10af18a8f6c7
活動推薦
與無人駕駛(或輔助駕駛)技術類似,AIOps 目標是通過數值驅動手段,藉助演算法、建模、推理等方法輔助 DevOps 提升效率,把經驗問題轉變為一個算力問題。在12月6日北京ArchSummit會議上,屆時會邀請阿里等公司技術專家來分享AI探索經驗,歡迎點選“閱讀原文”瞭解細節。
朋友會在“發現-看一看”看到你“在看”的內容