今天,講一個老外學習編程的故事……

今天,在 Quora 上閒逛,看到一篇不錯的文章,作者講述了他是如何一步一步踏上編程這條不歸路的。因此,我便用我這撇腳的英語水平給大家翻譯一下,希望你能從他的故事中有所啟發。

原文大意如下:

當我很小的時候,我便開始學習如何編寫網站,到如今我已經編寫並創建了許多網站。下面的篇幅我將主要回顧我建立的一系列網站,我還記得在我11歲時,便建立了自己的第一個網站。我希望讀者朋友能夠理解一點,如果你想學好編程,那麼做大量的輔助項目是很有必要的。

其實,學習新技能的最佳方式是練習,練習,再練習;就我所接觸的優秀程序員都有一個特點——樂此不彼的喜歡編程,而且很努力。一般來說,學習編程很簡單,並不需要你有什麼超人的能力,他只需要你不斷的動手實踐。

你只需要選擇什麼時候開始,跟你到底想做什麼沒有關係。我認識的很多優秀的程序員每個人都有各自不同的理由來開始學習編程。有的為了學習製作視頻遊戲而開始;有的為了解決計算機問題「或者更有效的為了工作」而開始;有的為了製造有趣的產品而開始。甚至有些「黑客」是為了打破芸芸眾生口中的不可能而開始,因為他們想深入瞭解機器,解決困難問題。

這些「優秀的程序員」都有一個共同的特點:他們在生活中的某個階段沉迷於編程,隨後花了很長實踐,並做了很多很多項目。

我的第一個網站——Feross 的網站

今天,講一個老外學習編程的故事……

當我十一二歲時,我想建一個自己的網站。我現在不記得當時為什麼想要建這麼一個網站,目前只記得做過這麼一個網站。為了做它,我在網上搜索相關網頁,瀏覽器以及 HTML 如何工作的信息。我發現的很多信息都是過時的,完全錯誤的或不提倡的做法,但它真的很有趣,我學到了很多很好的東西。

儘管我在網上找到的信息很少,但我還是能夠創建一個簡單的網站,我稱之為「Feross 的網站」。我使用了 Microsoft Frontpage 構建它,Frontpage 是一款非常酷的 HTML 編輯器。我可以使用熟悉的標籤「如Bold,Italics等」進行更改,並實時的查看它的效果。

以下是我的第一個網站的截圖。目前它已下線了。

今天,講一個老外學習編程的故事……

您無法在上面的屏幕截圖中看到它的其它效果,但網站上幾乎每個元素都會閃爍,移動或發出聲音。我在網站的每個頁面上放了一首不同的 MIDI 歌曲。除非你把揚聲器靜音,否則它們都會自動播放,無法停止播放音樂。這是00年代早期的舊網頁了,在當時算設計很好的網站了^_^。

隨著年齡的增長,我試圖通過重新設計來改善我的網站。我使用了我在網上找到的免費網站模板,並用 Microsoft Paint 進行修改圖片。

今天,講一個老外學習編程的故事……

儘管我在很大程度上依賴於現有模板,但我認為這是一種非常好的方法,便於我瞭解 HTML 和 Web 瀏覽器如何工作。「Feross網站」沒有其它目的,除了收集我小時製作的一些電影,所以一段時間後它變得無聊。

我的第一個真實項目

在 9 年級「14歲」,我和我的朋友非常痴迷於在 Newgrounds 和 eBaumsWorld 等網站上觀看 Flash 電影和視頻「這是在 2005 年以前,當時 YouTube 尚未存在」。我花了很多時間在這些網站上,所以我知道所有最好的視頻和遊戲。我想製作一個網站,方便於我在一個地方找到我最喜歡的 flash 動畫,視頻和很酷的遊戲。這就是我創建 FreeTheFlash.com 的初衷。

今天,講一個老外學習編程的故事……

我使用了從「Feross的網站」中學到的所有 HTML ,並利用 Dreamweaver 工具和模板來製作網站。

今天,講一個老外學習編程的故事……

後來,我意識到我應該讓網站變得動態「我記得當時經常聽到這個流行語」,這基本上意味著該網站將由 PHP 等編程語言提供支持,而不僅僅是靜態 HTML 。因此,我從亞馬遜以 20 美元的價格購買了一本名為 《PHP And MySQL for Dynamic Websites》的書籍,並使用 PHP 和 MySQL 進行重新設計了該網站。

今天,講一個老外學習編程的故事……

我在上了高中時,繼續在 FreeTheFlash 花費了 2 年。我第一次真正體會到成功 —— 它在2006年擁有 600,000 名訪問者和 300 萬頁面瀏覽量。FreeTheFlash 教會我製作產品,優化產品以及大流量的快感,一個詞形容「真棒」。這讓我有了想要建立更多網站的想法。

我的第二個網站

在高中時,我為一些 AP 課程做了很好的筆記。所以,在 11 年級,我決定將這些筆記放在網上,為那些不想讀教科書的學生使用,我建立了一個名為 StudyNotes 的網站,我用 PHP 和一個叫做 Joomla 的內容管理系統構建了這個網站。我也嘗試過 Drupal,但發現它太複雜了。

今天,講一個老外學習編程的故事……

同年,我還為我學校的Key Club分會建立了一個網站。它存檔在這裡「參考1」。

在此期間,我花了大量的空閒時間閱讀 WebmasterWorld 「參考2」,這是一個網站發佈者和 SEO 專家的論壇,可以推測 Google 算法,討論 AdSense 技巧和網站設計優化問題。

大量的學習和閱讀

在我到斯坦福大學之後,我學習了很多很棒的計算機科學課程,比如 CS106X 和 CS107。

我幾乎所有的時間都在課堂上閱讀有關設計,編程,瀏覽器和 JavaScript 的知識。

我讀了很多不同的東西。主要是一流的設計師和程序員的博客。有關其中一些博客的示例「參考3」。

大爆發

在 2010 年夏天,我在 Facebook 實習期間,我建立了 YouTube Instant;這是一個視頻網站,可讓您實時搜索YouTube。該網站在推出後的 10 天內吸引了100萬訪問者,YouTube 首席執行官也在推特上發了一份工作邀請「參考4」。

今天,講一個老外學習編程的故事……

我知道 YouTube Instant 的成功主要歸功於良好的時機和一點運氣。

今天,講一個老外學習編程的故事……

還在繼續

我注意到很多人都在使用 YouTube 即時收聽音樂視頻,這讓我想到了使用 YouTube API 做一些很酷的東西。所以,我的朋友 Jake Becker 和我決定在 2011 年的前 3 個月建立 Instant.fm,這是一種與朋友分享音樂播放列表的簡單方法。在這個項目中,我們都學到了很多新東西。

今天,講一個老外學習編程的故事……

我們在這個項目中掌握了這些:

  • jQuery
  • CSS
  • Python
  • Tornado
  • Git & GitHub
  • Last.fm API
  • YouTube API
  • 在團隊中工作

還有一些我們學習如何使用的東西:

  • Nginx
  • Supervisor
  • SQLAlchemy
  • Apache Ant

做是學習編程的最快方法!

從 11 歲開始到如今我所建立的所有網站中,學到一點,如果你想學習編程,那麼你需要開始創建產品!馬上。別再找藉口。

做是學習編程的最快方法。

從前到後閱讀編程語言書確實很無聊。但是,如果你有一個項目,你可以隨時瞭解你需要知道的內容,這在速度和內容掌握方面會更有效。

計算機科學課

在大學,學習 CS 課程是學習編程的另一種好方法。大多數優秀的 CS 課程都強調學習 CS 領域的重要概念和範例,而不是教授特定的編程語言。對於那些從未接受過正規教育的自學成才的程序員來說,這可以是一次令人大開眼界的經歷。

我記得上斯坦福大學的第一個 CS 課程「關於 C++ 的課程」中思考「有變量不以$符號開頭嗎?」,但那時,我只會 PHP!我花了一段時間才改掉在每個變量名之前加上$符號的習慣!

在一家軟件公司工作

另一種在編程方面更好的方法是在 Facebook 或 Quora 這樣的軟件公司工作,這是我在過去兩個夏天所做的。您將學到更好的編程方式,如何閱讀和理解其他人的代碼,以及如何與團隊一起開展大型項目。

依然最重要的是——學習編程的最好方法是做項目。

如何學習編程

做項目。

購買和閱讀編程書籍。

做項目。

參加計算機科學課程。

做項目。

閱讀編程博客。

做項目。

這是我得到的最好的建議。

參考

「1」https://feross.net/orhskeyclub.com

「2」http://www.webmasterworld.com

「3」https://gist.github.com/feross/4508913

「4」https://feross.org/youtube-instant-media-frenzy

最後,歡迎在留言區寫下你的感悟。

英文作者:Feross Aboukhadijeh

原文地址:https://feross.org/how-i-learned-to-program-computers

—————END—————


分享到:


相關文章: