程式設計學習之路:痛並快樂著

zcfy發表於2017-01-02

亞里士多德半身像

“你知道的越多,就會發現你不知道的更多”

——亞里士多德

我的程式設計之路開始於一個名叫 learn HTML 的手機app,有時心血來潮我會開啟它做幾個小任務,然後就好幾個月都不碰它了。

有一天我又坐下來像往常一樣開始玩這個app,完成了幾個小任務,新學了一點HTML。

但這一次——我也不知道為啥——我停不下來了。

連續好幾個小時,我完成了app裡一個又一個任務。

就在那一天我意識到,我真的喜歡學習程式設計。

從我開始玩learn HTML這個app已經過去一年了。從那時起,我已經進行了不少web開發實踐。

與這篇文章的許多讀者一樣,我是完全自學的。我利用業餘時間學習怎樣敲程式碼,在網上和本地圖書館裡查閱各種資料。

我仍然有很多東西需要學習,但我想給大家分享一路走來最重要的心得:web開發者必須不斷學習新事物。

我早就知道建立網站需要掌握三個基本工具。首先是HTML。然後我得用CSS來美化它。美化完之後,我還得新增(互動)功能,這意味著要學習JavaScript。

一旦我掌握了這三種工具,我就能建立一些酷炫的網站,找到一份優越的工作然後開始數錢——就像我的同事們奉承我時說的那樣。

對嗎?

錯。

web開發絕非易事。磨鍊專業技能是需要時間的,你需要掌握大量的知識。這很容易讓人迷茫。

通過學習HTML我懂得了網站的結構,理解了網站是如何運作的。接著我就想讓它看上去美觀一些,於是我開始學習CSS。

CSS是第一個讓我走上歪路的東西。

不是那種歪路。

我學了一點設計,又學了一點使用者體驗。我發現設計並不只是創造一些審美上令人愉悅的東西,而是要給使用者一種既有趣又易懂的瀏覽體驗。

培養設計敏感度與學習特定的技術(比如盒模型)一樣重要。如果你的網站體驗不好,使用者很可能直接關閉視窗。

所以我一直在不斷尋找設計靈感。我一般在這些地方找:

Muzli

Codepen

Dribbble.com

httpster

更不要提學JavaScript了。我不得不去學習電腦科學基礎概念、各種框架、庫、工具,還有演算法等等。很快我就發現自己身處絕望的沙漠

我發現自己一直在不停地原地兜圈子,要不就是走上了偏僻小路。不管我學什麼,這條路看起來都沒有盡頭。

我簡直要瘋了。

我不停的問自己:“什麼時候我才能學會所有我需要的東西?”

這真是我最重要的領悟。這個問題的答案非常簡單,從一開始就擺在我眼前了:

永遠不會有那一天。

我終於接受了這個事實,我永遠有新的東西要學。

身為一名開發者必須終身學習,永不止步。這個領域在不斷地進化,需要學習的新事物也會繼續出現。

我明白了我不能放鬆警惕,我必須每週都抽出時間來學習新事物——甚至是每天。

我還意識到我必須不斷地提出問題,經常踏入新的學科,並深入鑽研已經學過的學科。

我會把每天所學記好筆記,並在第二天開始學習之前複習。

人在不斷接收新資訊的時候很容易遺忘,我認為每天覆習對自學來說非常重要。

倒不是有必要時時刻刻處於web開發的最前沿,而是保持狀態。堅持學習能讓我保持跟得上節奏的狀態。

開發者社群大有幫助

我剛開始學習程式設計的時候,總是一個人敲程式碼。我的朋友沒有一個會程式設計,也沒有一個對程式設計感興趣的。我連一個開發者也不認識。

軟體開發這扇新世界的大門已經向我敞開,可我卻找不到一個可以說話的人。

但自從我有了twitter賬號以後一切都變了。我在YouTube上看視訊的時候認識了一些令我景仰的開發者們,於是我開始follow他們的Twitter賬號。

我最先follow的一位是npm的聯合創始人/營運長Laurie Voss (@seldo),然後是npm的CEO,Isaac Schlueter (@izs)。

然後我又開始follow他們follow的人們,我進入了一個新世界。我被邀請加入了一個社群,社群裡都是志趣相投的小夥伴,他們每天都在激發我的靈感。

現在我已經follow了一大波開發者,強烈推薦以下幾位:

@ScribblingOn

@ohhoe

@getify

@ossia

@mpjme

@_ericelliott

@jennschiffer

@davidwalshblog

還有很多人。我的Twitter賬號是 @salsaflocka,你可以看到所有我follow的人,然後自己選擇要follow哪些。

另外強烈推薦大家加入Free Code Camp的開源社群

Free Code Camp自稱是一個讓大家學習程式設計並無私幫助他人的友好開源社群。

我經常上他們的論壇,在那裡獲取了大量的資訊。

他們聲稱自己是一個友好的開源社群也並非虛言。我在那裡遇到的每一個人都既禮貌又熱心。

Reddit(譯者注:一個國外社交新聞網站)上也有許多開發者。戳這裡,就能找到關於這個社群的一切資訊。

我認為這兩個資源對程式設計初學者來說是非常有用的。

剛開始加入Stack Overflow和GitHub的時候,我著實被這開發者世界的兩大支柱嚇住了。但我在其他社群感受到的溫暖幫助我熟悉了開發者社群這種交流環境,然後加入了這些更大的社群。

加入本地的開發社群讓我獲益良多。儘管第一次聚會我就不得不開車1小時去參加,但這次經歷帶給我的收穫是無法估量的。

我意識到開發者們大多都是樂於助人的熱心好人!

冒牌者症候群——每個開發者都必須面對的真實感受

學習一門新技術總會帶來一種不足之感。剛開始學習程式設計時,我感覺每一個人都比我專業得多。

無論我學了多少,我都找不到那種我正在成為一名真正的程式開發者的感覺。

這種感覺就是所謂的冒牌者症候群

直到今天我仍然被這種感覺所困擾,但我漸漸發現幾乎每個人都有這種感覺。

沒有哪一個開發者是冒牌的。我們都只是在和其他人一起學習和成長。

我會盡可能無視腦海中那個讓我質疑自己能力的小小聲音。

如果你正在開發程式,那麼你就是一個程式開發者。就這麼簡單。

我才剛開始做一些兼職工作,可能算不上經驗豐富的專家,但這能夠積累經驗。

只要我還願意學習,我就走在了正確的道路上。

我認為戰勝冒牌者症候群的最佳方式就是把自己會的東西教給他人。

這一點再怎麼強調也不為過。每個人都會知道一些其他人不知道的東西,放心大膽地分享你擁有的資訊吧。

我會盡可能地分享在開發者社群學到的一切。這是讓我們共同成長,變得更加強大的唯一方法。

總有人不學程式設計,這沒什麼不對!

對我來說,這是一個更加艱難的新發現。

他們總是隨波逐流,並不操心將來會發生什麼。

這些人喜歡談論他們那些“沒出息的工作”和“毫無價值的學歷”。我不能理解為什麼這些人對現狀如此不滿,卻看不到花點業餘時間學習程式設計的好處。

這個領域對於我所生活的社會中的大多數人都是很容易進入的。幾乎每個人都可以學習程式設計,為什麼他們就是不願意試一試呢?

我花了不少時間才明白,不是每個人都能享受一天好幾個小時坐在顯示器前,就為了試圖搞清楚為什麼程式不能執行。

不是每個人都喜歡堅持不懈地學習新事物。

也不是每個人都能努力習慣技術氛圍。

儘管軟體開發的需求一直很大,但仍然有很多人不當程式開發者,這也是有原因的。現在只有相對較少的一部分人能夠花時間去成為專業的開發者,根本不能滿足需求。

因為這是一個可能會很枯燥、無趣且學習困難的領域,不是每個人都有足夠的耐心。

但我還是很感激那些有興趣成為這個社群一份子的人們,他們會戰勝那些不可避免的挫折。

作為軟體開發者我們責任重大。我們生活的世界是建立在技術之上的。我們具備塑造這個世界的能力,並且已經在日常生活中進行實踐了。

總有人不學程式設計,這沒什麼不對。我只是很慶幸我學了,也慶幸還有許多人也學了!

這一年對我來說真是時光飛逝,我從未想過自己能學到這麼多東西。

學習web開發讓我的生活有了方向。在此之前我從未真正對未來抱有如此具體的期待和目標。

但現在,在我接到新客戶的時候,學到新技巧的時候,身為一個web開發者做著有意義的工作的時候,我心中充滿了興奮。

如果你是一個程式開發新手,堅持下去吧。也許看起來需要付出很多努力,但我敢保證一切都是值得的。

如果你進行程式開發的時間和我一樣,或者比我還長,那麼我要感謝你成為了一名軟體開發者,你對這個社群整體的貢獻讓程式開發變得更加容易。

感謝你閱讀此文!新的一年讓我們繼續愉快地程式設計吧!

相關文章