我2年學習編程的經驗總結

jopen 9年前發布 | 19K 次閱讀 編程

英文原文:Learning to code? I did it for 2 years – here’s what I learned

我以前從來沒有想過我現在的生活會是這個樣子。幾小時幾小時地盯著電腦屏幕,想要解決 app 中的 bug。如果一直找不出錯誤的源頭,我就會開始變得焦躁、郁悶甚至于想砸鍵盤,

最后原因居然只是因為我拼錯了一個文件名。

我2年學習編程的經驗總結

有時候,我會覺得自己很厲害。比如我寫下自己的第一個腳本并且成功運行的時候。又比如說在我部署我的第一個 app 給服務器的時候。以及寫下我的第一個爬蟲來填充數據庫的那一瞬間。我感覺自己就像阿拉丁一樣,得到了一個無所不能的神燈。

編程就像毒品一樣,盡管一開始的針管有點疼,但是慢慢的我已經離不開它了。下面我將總結一下我這兩年學習編碼的經驗。

作為工程師的樂趣

就像很多技術人員一樣,我既著迷于硅谷又崇拜那些那些技術大腕。

這里有一個非常有意思的變化——在不久以前,我還在一所大學念書時,由于工程師給人的印象是缺乏時尚感和社交技巧,所以別人要是說我看上去像一個工程師——我會覺得非常尷尬。

當然現在聽上去很蠢,但是當我還在大學的時候,“硅谷”對我而言也只是一個地理名稱而已。

還有一件你可能不知道的事情——我曾經是一所中學的 IT 俱樂部的會長。我會使用 HTML 和 Flash,在我的空余時間喜歡玩 Sim City 3000,并且創建了一個關于這個游戲的網站。

在我大學的最后一年,社交網絡開始展現頭角。我剛一畢業就作為高科技記者參加了新加坡的新興行業創業場景賽。

我2年學習編程的經驗總結

我所接觸的每一個人都表示了對代碼的酷愛。不想成為高手的程序員,就不是好程序員。

學習代碼的門檻也變得非常低。各種資源和文檔,只要一個谷歌搜索就全有了。

現在的代碼學習儼然已經成為了一個產業,這也說明了一個事實,即好的工程師一直存在著缺口。

現在已經是 2015 年了。如果你也想為自己做一個新一年的編程技術提高計劃,那么歡迎閱讀這篇文章。我從我個人的學習歷史總結出了以下這些真理:

你的過去決定了你如何學習編碼的方法。

我是在 2012 年底才學的編程——在我開始了我的第一份工作的一年多以后。這讓我處于嚴重的劣勢,如果我的目標是成為一個職業開發人員的話。

因為我可能需要和那些 12 歲就開始編程,剛剛新鮮出爐的畢業生同臺競技。他們的期望薪水會比較低,他們的關系承諾會比較少。我將不得不改變我的人生軌跡,并作出一定的犧牲來追逐這種職業生涯。

但是現在的情況是這樣的:我已經在媒體行業淫浸了很多年。甚至,我還蠻喜歡我當時的工作,工作中并沒有碰到什么過不去的難關。總之我還沒有足夠的財力和動力能讓我轉而去投資一個全新的方向。

因此,我只能在我空閑的時間里學習編碼,同時還要保證不能干擾到我的日常工作。犧牲掉我的空閑時間是很艱難的一個決定,但是我別無選擇。

在承諾之前,先理解你的最終目標。

學習代碼可能對你的目標完全無用,也可能是不可缺少的。

如果你是一個學生,編碼可能會為你開辟更多的未來規劃,比如說,在你 25 歲的時候或許就能賺到一百萬美元。

如果你是一個對當前工作感到厭倦想要有所改變的年輕“專家”,在你已經累計了初期財富之后想要來點冒險的話,或許可以考慮一下編程,這將是一種更富有成效的職業生涯。

當然,編程可能并不適合那些已經在大公司就職需要養家糊口的 CEO。不過如果你是一名年輕的高管并且希望能在一年內開辦自己的高科技企業,那么學習編程就很有價值了,因為它能有助于你與開發人員親密協作或者自己創建產品。

你或許會說,學習編碼很難或者完全沒有必要。這當然是可以的,沒有人能強迫你。不過也有可能你學習的原因就只是想讓別人以為你也是很厲害的(很 多新入行的喜劇演員往往是因為這種原因而去演喜劇),又或者你直截了當地表示你就是想編程。當然如果你的目標是想提高薪資收入,也成。

對我來說,上面這些原因或多或少都有:

目標 結果
我想讓人覺得我很厲害。(別噴我。) 通過使用 Ruby on Rails 創建 app,并通過利用各種 API 可以讓我的日常工作像作家和編輯一樣,這讓我覺得我很厲害很酷。很多人紛紛了離開這一行,但我堅持下來了,付出了不小的代價。不過,我也承認我現在的水平還不算高。
挑戰自我。 哇哦,我只想說,這真心是個大大的挑戰。
我想知道 web 開發工作能否成為備選的職業發展新道路。 可能不會。像其他職業一樣,編程涉及到很多類似于服務器遷移、處理入侵者等等不愉快的任務。
結合我對技術和媒體的愛好。 圓滿完成。
我想使用編程技術使得自己的效率更高。 可能會實現吧。

如果你認為我干得好,請繼續閱讀:

一個接一個地開始項目。

我2年學習編程的經驗總結

說實話,編碼一點都不好玩。當然,編寫優雅的代碼和修復 bug 是有收獲的,但是如果沒有最終產品,那這一切的努力就只能是付諸東流。

將你的編程之旅當作需要攀登的一系列高峰。登上一峰之后就攀爬下一峰。每一個項目都能讓我們學習到新的東西、修整舊的知識,一步一步地朝著我們的目標前進。下面是我解決的項目,按時間先后順序排列:

  • 文本游戲。
  • 一個用于計數科技博客標簽的 Ruby 腳本,看看當前什么話題比較流行。
  • 一個能抓取網站信息并拷貝到另一個數據庫的 Ruby 腳本。
  • 排序表格和柱狀圖。我將 Ruby on Rails 應用程序與 D3.js——基于 JavaScript 的可視化庫連接起來。
  • 一個 Rails 應用程序,將 Wordpress 掛鉤到谷歌分析 API 上以編程的方式生成內容。
  • 一個 Rails 應用程序,構建在緩沖 API 基礎上可以讓我重新在社交媒體上發布內容。
  • 一個 Rails 應用程序,可在數據庫中填充鏈接。
  • Statsy,一個 Rails 應用程序,兼作檢索數據庫和以谷歌圖表為基礎的圖片制造商。

連續的項目會變得復雜。我一開始學習的是創建腳本,然后是 Rails。接著踏上了自己找項目的愉快旅程。正如一位程序員所寫的那樣:

“編程應該被當作是一種實實在在解決問題或者是更快解決問題的方法。在理解的基礎上進行深度的破解。這樣就有了學習的目的和動機了。編程是非常有意 義的。但是很遺憾的是,很多人第一次接觸編程就是一堂干巴巴的語法課(我就是如此)。我們只需要坐在那就可以了,不用回答,傻乎乎地聽著類似于天書一樣的 言語。”

持之以恒,慶祝每一個小小的勝利。

我2年學習編程的經驗總結

如果你的目標是建立一個可正常使用的 Web 應用,一開始的時候難度并不大——就像 Codecademy 網站上面教授基礎內容一樣特別簡單。關于 Ruby 也有大量的資源可供你起步。

根據我的經驗,如果你想要建立一個完全成熟的 web 應用,你才會發現編程很難。為什么呢?因為這時候你才知道你還有那么多的東西需要學習。如果你正在學習的是 Node.js,那么你需要掌握的不是一種而是兩種編程語言:一種是服務器端語言,另一種是面向客戶端的 JavaScript。

此外,你還需要使用如 HTML 和 CSS 的標記語言,來制作網站的外觀,還要確保服務器能夠運行起來(我建議初學者可以試試 Heroku)。這還不是全部。每一種編程語言都有一堆的數據庫需要掌握,每個 API 都有它自己的文檔。你還需要掌握數據庫的工作原理。這還不包括沒有學過的 Git 和測試驅動開發(TDD)。

我能理解那種不堪重負的感覺。但是種種困難都不能阻擋我前進的腳步。關鍵是要從小處著手,建立信心,以便能應對更大的項目。慢慢的,你的學習進度會加快,你會為你自己消化吸收的速度所震驚。

不過編程最讓人沮喪的是,app 出現了問題卻一直找不到根源,我真是煩躁得都想扯自己的頭發。由于我們的 app 是構建在其他人已經寫好的源代碼的基礎上,所以任何一個地方都有可能產生 bug。學會高效調試往往是很多人都低估了的技能。

懂得慶祝每一個小小的勝利也很重要。想想你最終的 app 版本——這是一種精神的鼓勵。為了達到這個目標,你需要一步一個腳印扛過每一個低潮——有時候甚至都想放棄編碼了。好好記住我的話,你以后也會有很多次想要放棄的時候。

如果出現了這種想法,那么你的精神需要休息了。過會兒再來看看問題,想想異常所有可能的來源。也可以向周圍尋求幫助。并且當你修復了這個 bug 的時候,小小地慶祝一番。然后再來個深呼吸,繼續干。

獲得社交關系上的幫助。

學習代碼不應該是一種閉門造車的行為。可以咨詢懂行的朋友。他們會教你一些在谷歌中搜不到的知識。加入相關內容的同城群,有需要的時候可以尋求 幫助。Stack Overflow 是個提問的好地方,并且你會發現你碰到的問題,你的前輩們早八百年前就給出答案了。像 Airpair 這類在線咨詢平臺,通過支付一定的費用你就可以接觸那些頂尖的程序員(雖然我還沒有試過)。

結對編程也能讓人受益。如果你的目標是加入一個開發團隊,那可以假設自己是一個專業的編碼人員。每個團隊都有自己的方案、工作流程和工具套組, 這些通常是由那些穩坐最高級程序員寶座的人決定的。一開始可以先從和朋友們一起搞業余項目著手。如果你所在的是一家初創企業,里面的開發團隊正在耐心地帶 新人,那你也可以參與到這個志愿活動中,協助寫一些代碼。

Ruby on Rails 必勝。

學習代碼之前,我們先需要決定學習哪種編程語言。

對于我而言,我的決定并不是按照什么科學依據來的。最初我選擇 Python,是因為我看到大家將其視為“一種理想的初學語言”。后來我轉而投向 Ruby 的懷抱是因為我的一個同事熟悉它。這是由我的社交關系所決定的(見前一點)。現在回想起來,總體來看還真是這樣。

除了能獲得很多幫助,Ruby 也是最干凈的語言之一,因此很容易閱讀和學習。同時,Rails 有大量的插件,可以賦予 app 各種能力——如用戶認證、內容管理系統或管理儀表板——“開箱”即可使用,非常方便。功能齊全得讓人感覺構建一個 Rails 程序就像是將幾個小的 app 擬合在一起一樣簡單。

所以,如果你的目標是盡可能快速地設計出一個工作原型,那么 Ruby on Rails 就是通往目的地的門票。

管理期望。

想要通過寫代碼而晉升職位是需要時間的。如果你所在的是初創企業,你想要通過提交一些前端代碼為自己增加籌碼,那么學習 HTML、CSS 和 Git 可能只需要幾周時間就夠了。如果你是一位有志向的企業家,正試圖建立一個 web 應用程序,那么學習必要的技能則取決于你有多少時間可用于學習,而這有可能需要數個月。所以要合理安排自己的期望,記住,一直努力總有看到黎明的那一刻。

下面是一些我想要分享的想法:

編程只是一個工具。

我總是需要考慮在學習編程的過程中我應不應該去學習其他東西,例如學習管理技能、設計原則,如何制作實物模型以及如何成為一個更好的記者。

這個問題很重要,在你開始編程之前就應該想好,雖然我自己本身也沒有就此給出一個滿意的答案。哪怕我已經學習了兩年,我有時候也會發現我現在的努力方向可能并不適合我的目標。

假設你是一家初創企業的 CEO,各種資源有限。學習編程對你而言可能并不如了解用戶體驗設計、用戶測試、數據分析和其他開發人員可能并不具備的技能等來得有用。你只要記住這一點,編程只是一個工具,是另一種打造成功產品的工具。

永遠不認輸。

我會很自然地規避風險,所以我習慣于一上手就想好另一個備用計劃。我會問自己:如果我放棄這個 web 應用的話,會發生什么事情?我的回答是:

“至少我體驗到了它的樣子。”

“至少我知道這不適合我。”

“至少我更加理解開發人員,可以與他們更好地協作。”

“至少我學會了注重細節,并獲得了更好地解決問題的能力。”

“至少我的簡歷上又多了一條新的經驗。”

最后我往往能做到魚與熊掌兼得的結果(鼓掌)。

譯文鏈接:http://原網站已經失效/article/2-years-learn-programming.html

翻譯作者:碼農網 – 王國峰

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!