大多數學習者同樣碰到過相同的障礙,但是,一旦克服了這些壁壘,那麼好處立馬就來:

更享受學習經歷進步

更快碰到難題更執着,不輕言放棄

寫代碼時更獨立

那麼,這些障礙究竟是什麼呢,我們又該如何攻克它們?

1、目的不明確

在談及壁壘之前,我想先着重說明學習動機的重要性。不要只是爲了編程而學編程,也不要因爲聽說它很酷,很划得來就來學編程。

你得因爲要解決問題而學習編程,你得因爲想要自動化和改善生活而學習編程,你得因爲想要構建應用程序以造福社會來學習編程。

如果你只是喜歡編程,並希望以此作爲職業的話,那麼在之後的學習過程中,你可能會有一種強烈的衝動想要放棄。這通常發生在事情變得艱難,學習體驗變得痛苦的情況下。這時你會告訴自己,你不喜歡編程了,編程操作不適合你,覺得自己天生就成不了程序員。

因此,您應該考慮爲完成項目設定目標。如果您正在考慮一個項目,或者想解決一個更高的問題,您可以對自己說:“目前這可能不是一種令人愉快的體驗,但是我真的想解決這個更大的問題,所以我將繼續推動自己並克服這一障礙。”

2、糾結學習什麼

很多人問:“我應該首先學習哪種編程語言?”。之所以存在此問題,是因爲他們不知道爲什麼要學習編碼。

一旦確定了要從事的項目,就很容易弄清楚以哪種編程語言開始:

如果要構建iOS應用,請使用Objective C或Swift。

如果要構建Android應用程序,請使用Java或Kotlin。

如果要構建Web應用程序,請使用JavaScript。

如今,您實際上可以使用JavaScript來構建任何類型的項目,從簡單的Web和移動應用程序到高級硬件項目。人們在大多數行業中使用它,例如:音樂,醫療,遊戲,時尚。

如果仍然不確定要選擇哪種語言,甚至可以向程序員尋求建議。一旦知道了要構建的項目,程序員就可以輕鬆推薦一種技術供您使用。

還請記住,語言是一通百通的,你可以輕鬆從一門語言轉移到其他語言。

3、不去思考地編碼

最好的情況是您解決了任務並且工作正常。然後人們通常會開始處理下一個任務。如果這樣做,您將浪費學習的機會。

我鼓勵您用以下問題挑戰自己:

我的代碼可能會失敗嗎?即使現在沒有失敗,是否有任何應用程序狀態可能導致其中斷?

我的代碼夠乾淨嗎?對於其他開發人員,甚至對我自己,是否容易理解和更改?將來,您可能需要解決此代碼中的隱藏問題,或根據其他產品規格對其進行更改。

我的方法是最好的方法嗎?我還可以使用其他替代方法?每個替代方案的優缺點是什麼?值得以其他方式解決任務嗎?

該模塊如何與其他模塊交互?它會以一種不好的方式影響他們中的任何一個嗎?可以容易地被其他模塊使用嗎?

4、你不知道如何完成任務

你不知道從哪裏開始嗎?您可能會想嘗試隨機的東西,或者從您不理解的其他地方複製代碼。但這沒有幫助。即使您複製有效的代碼也不行。因爲將來您將要執行類似的任務時,您也將無法解決該任務。

如果要正確解決任務,則必須首先確定爲什麼會卡住。以下是一些可能的原因:

您不太瞭解該理論。語言語法庫或API的工作方式,或特定方法或類的工作方式編程範例(例如:異步編程)系統的工作方式(例如:HTTP請求是Web開發中必須瞭解的關鍵內容)在這種情況下,只要再讀一遍該理論,或者在仍然沒有意義的情況下找人向您解釋。

任務太大,需要分解成較小的任務。您不明白任務在問什麼,因爲您讀得太快並且忽略了看起來很熟悉但實際上並不熟悉的概念。

5、不知道如何調試

這是編程中最常見的問題。即使對於具有多年經驗的程序員也是如此。解決方案不起作用的原因很可能是代碼中的錯誤。

您如何解決?通過調試代碼。這是您作爲程序員可以學習的最重要的技能之一。這不是您隨便做的事情,也不是靠幸運的猜測做的事情。您可以採取特定的步驟來查找代碼中的錯誤。有整本書專門教這個技能。

不幸的是,這是許多新程序員失去動力並放棄的地方。很少有課程解釋調試的重要性。如果您不知道如何正確執行操作,那麼它似乎勢不可擋。

許多人擔心他們花太多時間調試代碼。這很正常,在編程的頭幾年,您必須爲此做好準備。

更好的是,您需要學習如何喜歡調試。將其視爲解決您的誤解並提高編程能力的機會。每當您解決錯誤時,都要問自己一個問題:“爲什麼我首先犯了這個錯誤?我如何防止自己將來出現這種情況?”。

保留編程日誌是一個好主意,您可以在其中寫下所有發現的錯誤。您將快速看到模式並從中學習。

6、不知道如何獲取幫助

在學習編碼或調試代碼時,您將查閱許多材料:書籍,課程,教程,導師,開發人員社區。

例如:在您花了10個小時解決問題後,最後有人爲您提供瞭解決方案後,很容易採用該解決方案,慶祝並跳到下一個任務。不要那樣做!相反,您需要進行一些元認知:

考慮一下您以前的思考過程。問問自己自己做錯了什麼,以及可以做得更好的特定解決方案。

請對方告訴您他們自己的思考過程。她/他如何解決的?從中學到東西,下次自己應用。您無法找出人們如何提出解決方案。您只能採取解決方案,並希望能理解它們。但是您永遠不會知道這些解決方案背後的思考過程。

7、理論和實踐無法結合

一旦選擇了一個技術棧,就很容易上手並學習理論。互聯網上有大量的免費和付費課程。

我們的大多數學生實際上都瞭解該理論,並且可以解釋某些代碼是如何工作的。該理論只是一組有限的概念。如果他/她真的願意,任何人都可以在幾天內記住它。那是什麼問題呢?

學生面臨的最大問題實際上是將理論應用於解決問題和編寫新代碼。這意味着差距實際上是技能差距。

比如游泳,你可以閱讀關於技術的各種信息,並且可以像專業教練一樣向某人解釋它。但是應用這一理論需要大量的實踐,努力和錯誤,否則下水後你只會喝水。

我知道很多人看了很多編程書籍,也看了很多網上的教程,但是依然寫不好代碼,那就是他們眼高手低,寫基本的代碼都能bug百出。我們一定要養成用鍵盤思考的習慣,才思泉湧,代碼行雲流水,需要的是不斷地實踐。

最後送上我最喜歡的一句話,實踐是檢驗真理的唯一標準。

相關文章