學習編程的過程中可能會遇到“25”個“坑”,不僅初學者可能中招,專業(yè)人士有時也難以逃脫,我自己也毫不例外。
0. 忽視了編程終究是以人為本的。是的,機器的確會執(zhí)行你的代碼,但編程是為人們解決問題的,將他們的需求轉(zhuǎn)換為由其他人(或你自己線下)讀取,維護和修改的代碼。
1. 未能花充足的時間練習編程。 根據(jù)工作或日程安排,你可能會花費大量時間在與編程相關的任務上,但實際上這些并非編程本身。
2. 停留在你正在學習的某個技術的表面。 沾沾自喜于自己掌握了足夠完成任務的基礎知識,對技術的了解卻只流于表面,未有觸及核心內(nèi)容。
3. 在編程學習中挑挑揀揀,無法持之以恒。一開始學習Rails,半道兒你發(fā)現(xiàn)Phoenix也不錯,哦,學點JavaScript吧,這樣就能用Node.js 了......從TJ轉(zhuǎn)到Go然后堅持了一陣子......說起來Rust好不好用來著?
很快,一周內(nèi)你的瀏覽歷史凈是這些東西,“Web開發(fā)者還是數(shù)據(jù)科學家”,“Clojure死了嗎?”,“Clojure 對比 Elixir”,“Crystal足夠成熟嗎”,“Golang有什么好的架構”,“Phoenix 對比 Buffalo”,以及“Kotlin ”與網(wǎng)頁開發(fā)。
4. 在線閱讀書籍和觀看課程,卻不練習相應的技能,因此很快就會忘記它們。
5. 不關心基礎知識。如果沒有對象關系映射(O/R Mapping)的輔助,連最基本的SQL連接都搞不定。
6. 缺乏足夠的耐心或自律來完成學習過程和掌握任何技術所需的步驟。 (碼農(nóng)翻身老劉:《學習還是要死磕啊》)
7. 疲于應付日常編程中的各種問題,缺乏繼續(xù)學習的長遠規(guī)劃安排。
8. 浪費太多時間在各種框架和庫(如Angular,React和Vue)中進行選擇,而不是僅僅認準一個,使用它,并且只有在你真正需要時才切換其他。 基本上講,一心只想找到能一勞永逸的萬能鑰匙,而不愿意先充分利用手頭資源。
9. 無法認識到現(xiàn)代編程需要多語言協(xié)作的性質(zhì)。 在大多數(shù)領域,期望一種編程語言成為解決所有問題的靈丹妙藥是荒誕不經(jīng)的。 同樣,過于執(zhí)著把自己分類成X或Y程序員,而不是"偏愛X或Y語言的程序員"。
10. 害怕嘗試新技術。不要只是閱讀某些新興技術(例如區(qū)塊鏈或聊天機器人)相關的文章,而是自己動手打開虛擬機試用一下,即使它涉及到你不熟悉的編程語言或API(應用程序編程接口)。
11. 自己沒有先行思考而后再進行搜索,谷歌上的確能找到辦法,但是看到別人給出的辦法之后又很懊惱,覺得自己應該能依靠自己的腦子想出來。
12. 學習時沒有進行許多零碎練習和開展項目。
13. 因害怕被評判,而不敢與他人分享代碼或讓他人檢查自己的代碼。
14. 不向更有經(jīng)驗的開發(fā)人員尋求一對一輔導。
15. 期望在不切實際的時間內(nèi)一次學習所有東西(例如,一個月內(nèi)掌握iOS開發(fā))。
16. 對于事業(yè)心強的人而言,不去嘗試那些貌似無利可圖的有趣項目。
17. 因為害怕給人以愚蠢或菜鳥的印象(事實并非如此)而不去發(fā)問。
18. 如果在創(chuàng)建程序時只是將一些類庫粘合在一起,而不是用更復雜的語言來寫“高級”算法,就覺得自己不是真正的程序員。
19. 讓習得最佳實踐的欲望阻礙你掌握特定語言或技術的基礎知識的能力。 例如,在開始創(chuàng)建項目之前,感覺自己需要了解有關設計模式的整本書或掌握TDD / BDD。
20. 完美主義。 讓完美成為“足夠好”的敵人。 從不交付任何東西,一直卡在最后階段。 (但保持平衡很重要,所以不要為了交付而交付可怕的破碎軟件。)
21. 與前一點相關,忽略了編程是循序漸進的:應該先使其工作,然后再讓其變快,再讓代碼簡潔明了。期待從一開始就有一個絕佳的解決方案是不可能的。
22. 覺得自己做的不夠好,如果你不是傳統(tǒng)觀念中“程序員”的形象,那可能就有些不妙——因為如果沒有與你形象類似(比如,女性,少數(shù)族裔等)的成功例子供你參考,你更傾向于覺得自己“不優(yōu)秀”。這就解釋了女性和少數(shù)族裔在科技界的重要性——他們?yōu)樗颂峁藯U,增加他們向上的信心和動力。
23. 編寫代碼并閱讀書籍學習編程,但從不閱讀他人的代碼。Open Source為我們提供了一個驚人的資源,可以大大促進我們對編程和最佳實踐的理解。
24. 未能接觸到其他范例或領域。就因為你是網(wǎng)頁開發(fā)人員,就不去了解其他類型的開發(fā)。就因為你知道面向?qū)ο蟮木幊蹋筒蝗W習函數(shù)式編程。
25. 不教別人你學到的東西。沒有什么能比向別人解釋更能鞏固自己所學。即使只是為了教學而學習也能提高你的學習能力。
這樣你就了解了以上25個陷阱。哦,實際上是26個,程序員都習慣從0開始的。
結論
這一切都是想說:
你已經(jīng)夠好了。你絕對可以做到。要做的就是當心這些陷阱,制定計劃,投入其中,然后一步步來。
在學習編程(或提高當前水平)時,我推薦使用編碼/閱讀/教學法。 也可以在學習中對一個實際的項目和其他小練習進行編碼。 然后閱讀書籍以及其他人的代碼。 最后,在線或面對面教授他人你學到的東西。你不需要成為專家就可以做到這些了。