如何保持學習程式設計的動力
有人問我, Reddit 是什麼網站,我想了下說: 美國貼吧 。
但話說回來,關注了一陣子我發現,Reddit 上的討論真要比貼吧不知道高到哪裡去了,甚至比不少知乎回答要有價值。而且感覺下面的討論氛圍也更好些。
我在上面關注了 learnprogramming 節點,有不少文章挺有價值,於是翻譯過來分享給大家。上次翻過一篇:《 ofollow,noindex" target="_blank">我是如何在自學程式設計9個月後找到工作的 》,是一個程式設計自學者的經驗之談。這兩天我又看到篇不錯的,主要討論的是自學程式設計中的一個普遍問題: 如何堅持 。
除了翻譯,文中我還加了一些自己的看法(斜體字)。各位看後有什麼想法也歡迎在留言裡討論。
英文原文地址見文末。
嗨,Reddit 的各位老鐵,學程式設計真的很讓人崩潰。
學程式設計現在看起來挺簡單,因為網上有豐富的各種資源。然而當你實際去學的時候就發現,還是很難!
對我來說也一樣。但從某天起,我決定認認真真學程式設計一年。後來又過了一年,又過了一年又一年……我好像有點感悟。
如果你曾致力於學習一些重要的東西,就會知道在漫長的艱難時刻保持自己的積極性是多麼困難。你怎麼做呢?我說下我的經驗:
1. 去開發點真東西
不要只一味地跟著教程學。它們有助於對新事物進行概述,但在此之後你必須開發點自己的東西。
你當然可以去開發另一個 To-Do-List(待辦事項列表)的 App,但你想這麼做嗎?你不一定非要做那些別人口中的“入門必做專案”。
開發你自己想要的東西。相信你是一個富有創造力的人。設想一個可以真正幫助你的小專案或 App,或者至少看起來很酷的專案,開發出來,然後把它放在網上,從別人那裡得到一些反饋,修復 bug。幹就完事了。
你可以把它作為一個專案展示給潛在的未來僱主。沒人關心你是否又製作了一個 To-Do_List 的 App,但 他們會關心你是否有能力開發一個網站,把抽象而模糊的想法轉變成實際的產品 。
跳出思維定式來考慮,你甚至都不用找工作。如果你做得更好些,完全可以自己開發一個 App 或網站,從中收取費用。或者做出一些酷炫的產品,在 Reddit 上傳播。你會成為某方面的專家、找到客戶,成為自由職業者。
比如我弄了個叫 Unbokeh 的網站,這裡有一堆模糊的背景圖片,你可以用於設計和桌布。我之所以這麼做是因為我喜歡模糊的桌布,它們看起來很酷,而且我想提供一個其他人可以使用的資源。這不是一個百萬美元的想法,但我為此感到自豪。我學到了很多關於 Gatsby 和 GraphQL 的知識。 我把它釋出在 Twitter 上,很多人都喜歡它。
再說,在網際網路上展示你努力做出來的東西,本身不就是很棒的一種體驗嗎?
【Crossin 注】這個觀點我也說過無數遍:等你有了一定基礎之後,一定要找專案去做,從你身邊著眼,想想有沒有能用程式設計解決的問題,然後在解決問題的過程中提升能力。如果你僅僅想找本教程看,你會發現越看問題越多,你不知道書上說這些到底有什麼用。這其實是弄反了因果。我在程式設計教室裡堅持釋出有趣或實用的案例,也是從這個出發點考慮的。(公眾號“Crossin的程式設計教室”對話欄回覆關鍵字 專案 )
2. 找點工作/專案
我學程式設計的最喜歡的方法之一就是讓別人付錢給我學習。如果你願意為此多投入一些努力,你可以在像 UpWork 這樣的平臺上獲得一些小單子,在學習的同時就能賺到一些錢。
你不必是專家,只需要足夠的相關知識就可以完成工作。如果你學會適當推銷自己一下,別人並不會太在意你是否是初學者:你只需要證明你可以完成工作。所以,如果你像我前面告訴你的那樣,做點自己的專案,你就已經有經驗了。
我通過電子郵件聯絡本地商家,幫他們重新設計網站,從而學會了如何開發 WordPress 主題。我從為另一個小企業構建官網首頁中學會了 JavaScript。我通過為一家初創公司製作一些頁面的過程中提升了對 React 的理解。
你沒法做完全超越你技能樹之外的事。但 適當地挑戰自己能力的上限,並承擔一個實實在在的專案,你會取得重大進展 。
這些專案不會讓你發大財,但真實世界的專案可以給你帶來很有價值的經驗。
【Crossin 注】這一點是上一點的延續,選定個方向,先做自己的專案,熟悉了之後就去接點正兒八經的專案。國內也有一些平臺,比如豬八戒網,V2EX 上有時也會有人發單,我這邊偶爾也會有,我都會發布在 bbs 的接單區和幾個學習群裡。說實在話,一開始想成功接單並不容易,但你不妨可以嘗試給親戚朋友同事社團等做點義務勞動,幫他們做個網站啥的,機會都是慢慢積累出來的。我自己第一次用 Python 就是同學介紹的網站開發專案。這種有點壓力的狀態絕對比你自己無目的地看書效率高多了。
3. 在 Twitter 上建立聯絡
上 Twitter 對我來說是很有幫助的一件事,所有的開發人員都在這兒。你可以關注大票的開發者,獲取靈感、開發有趣的東西,關注業內大牛,瞭解新的工具和技術。一旦你的首頁時間線充滿了有趣的行業文章以及關於 JavaScript 的談論,那你將會更有動力去堅持學習。轉發一些對你有啟發的文章、分享不錯的程式碼片段,你也會成為開發社群的一員。
當然,不要浪費太多時間。 您可以在這裡瞭解更多資訊,成為社群一員,但不要分心。
對我來說,一個重要的動力是加入 #100DaysOfCode 的挑戰。規則很簡單:每天至少寫一小時程式碼,並每天釋出帶有進度的推文。你會不想終止連續記錄。#CodeNewbie 是另一個與其他 Twitter 同好者聯絡的好標籤。
這感覺很好,因為你來到了一個社群,裡面都是和你一樣學習程式設計的人。釋出你正在研究的有趣事情,和別人互相關注,詢問他們正在做的事情,結交朋友。如果你加入了這樣的社群,養成寫程式碼的習慣就變得容易許多。很快這就會成為你個人的一部分:你現在就是一名開發者,這就是你每天做的事情。
【Crossin 注】國內不太能上這個網站……微博其實學習氛圍很淡,但像 V2EX、SegmentFault、OSChina 等社群裡也不乏大量開發者,多去逛逛有好處。在學習社群這件事上,我承認程式設計教室到目前為止做得並不算好,我們曾經建立了很多群,但因為無力管理,最後大多荒廢了。接下來,我會在這點上做些嘗試,可能也會組織類似 100DaysOfCode 的挑戰,爭取能給各位初學者提供一個氛圍良好的社群。
4. 幹就完事了
最後,這完全取決於你。你只需要做出承諾並完成它。
要明白,這是個長期的過程。也許你會在 Twitter 上看到關於某人學了 3 個月就找到六位數的工作這種雞湯故事,很勵志吧?而且他還僅僅 18 歲(這種故事裡總是 18 歲)。但這只是特例,不是常態。如果你想通過學習程式設計來改善你的生活,你不該總想著這些快速成功的案例。
如果你想找份工作或開發出殺手級產品,你將不得不努力工作。 你看到的所有成功故事都只是結果,而不是那之前漫長而乏味的過程 。當你艱難到要放棄的時候,它給你鼓勵,但你不能沉迷於此。相信我,這種情況會不停出現。
不要半途而廢 。如果你真的對程式設計沒興趣,那沒辦法。但如果你願意投入時間和精力,以及一點點血、汗和淚,你總能做出點東西。現在就回去繼續學習吧。
【Crossin 注】少說多做,每個程式員都是一行行程式碼堆出來的。不要再糾結哪個語言好、哪個教程好、該用哪個版本。你花一個週末就可以走進大門了,沒必要不停在門前糾結。這是個長期的過程,不要想著一蹴而就,也不用擔心一個選擇就走錯路。學習沒有彎路,每一步都算數。
文章下面有些評論也說得不錯:
fckdUpLion:
紀律>動力。把事情給做了,別等待動力。
Metabyte2:
動機是一個神奇的東西。 每天留出一兩個小時,並養成在那個時間編碼的習慣。 幾個星期後,它將成為常態。
blackiechan99:
雖然我有了動力,但動機很快就會因為其他事情而消失。
我減了100磅,動力在幾周內就沒了。 紀律才是而且是唯一持久有效的東西。 編碼也是如此。
動力在一開始有用,然後過渡到紀律。 如果你真的想要,你就會實現:)
WulfMarius:
說實話,我不喜歡“寫程式碼”這個說法,這就像是“寫書”和“打字”:一個人寫書的過程是在打字,但你顯然不可能通過打字課程突然成為一個作家。因為寫書的實質不是打字,而是建立內容。
寫程式碼是開發軟體的表現,但實際上之前的活動更重要得多,比如理解你想要解決的問題,提出解決這個問題的方法,將這個解決方案分解成可以實際編碼的部分,考慮的侷限性和後果等。
有些人會忽略這些,而掙扎在程式碼之中,因為他們並不真正理解他們試圖解決的問題和/或他們設計的解決方案。當我問為什麼他們把某個語句放進去的時候,他們根本無法解釋。我想說:難怪你們說沒法保持學習的動力,你都不知道你在寫什麼,換作我也不想學了!
所以,只是跟著教程裡寫幾行程式碼讀取檔案這種小技巧根本對程式設計沒什麼幫助。
════
其他文章及回答:
如何自學Python |新手引導 |精選Python 問答 |Python單詞表 |人工智慧 |嘻哈 |爬蟲 |我用Python |高考 |requests |AI平臺
歡迎搜尋及關注: Crossin的程式設計教室