我給新手程序員的實用建議
做一個高效的、充滿好奇心的問題解決者吧!這會幫助你成為一名成功的程序員。
你是否曾經遇到過這樣一種情況:你想解決一個問題,並且你在 YouTube 或 Google 中找到了相關的教程。嗯,你覺得看會了,可真做起來,卻止步不前,大腦一片空白。你感覺自己每一行代碼都看懂了,可一旦離開了那個教程,就步履維艱。如果你在 HackerRank 或 LeetCode 上看過別人的解題過程,你就能體會到,一個有追求的程序員第一次看到這些挑戰時,他會是何種感受。舉例來說,假設你正在學習一門新語言,在你剛開始理解這門語言的基礎知識的時候,你看了一個教程,摩拳擦掌,結果發現自己無法獨立應用學到的知識,這反過來可能會導致你懷疑自己的知識和能力。
把教程付諸於實踐
你應該從頭開始嗎?如果你這麼做,你可能很快就會發現自己重複學習了很多次相同的知識點。雖然從頭開始並不一定是種浪費,但是,你該如何變得更高效呢?
死記硬背在編程中完全是行不通的。話雖如此,但你也不能夠忽視熟悉語法的重要性。因為,死記硬背和養成習慣之間是有明顯區別的。習慣是很難打破的。要養成多使用編程語言的常規語法、函數、方法、模式、範式和構造的習慣,這樣你才能掌握它。掌握一門編程語言需要大量的創造力和練習。練習語法是非常必要的,直到它們能在你的腦海中自然地浮現,就像血液在血管里流動一樣。
「問題解決」的工作原理
那麼,你該採取什麼樣的方案呢?這實際上取決於許多因素。這些因素可以是任何東西,下至技術限制,上至用戶需要。世界上有無數的問題,每個問題都有許多解決方式。如何選擇一個最好的?這就需要 「問題解決」 的技巧了。
下面是一個簡單的例子。你需要把兩個數相加,讓它們等於 6。顯然,你有多種方式可供選擇:
3 + 3 = 6 或 4 + 2 = 6 或 5 + 1 = 6
同理,如果你需要讓兩個數字,經過一次減法、乘法或除法運算後,得到的結果為 6。你仍然有很多選項,包括:
8 - 2 = 6 或 12 / 2 = 6 或 *3 2 = 6**
每種方案都有它固有的限制,且各不相同。當你在現實生活中嘗試做出一個高效的方案時,你必須要考慮到所有的限制。這個方案可行嗎?有什麼障礙嗎?有可操作性嗎?是否可擴展呢?而如何最小化約束,並做出一個最優方案,就取決於問題類型和業務需要。
練習很重要
編程的目標不僅僅是解決問題。因此,從工程視角理解代碼如何工作始終是一個優勢。這就是代碼審查在企業級開發中發揮作用的地方。編程的最低要求是具備基本的編碼知識,包括語言的語法、函數和方法。歸根結底,「寫代碼」是需要你去寫的,所以練習總是有助於提高你的技能。流暢的寫作和複雜方案的開發都來自於持續的學習和訓練。
學習編碼
我撰寫和分享這篇文章,是為了鼓勵新程序員去探尋自己的內心,尋找那個「優秀的問題解決者」。請不要停止相信自己。
要成功編碼,你需要培養許多習慣。下面是我在學習編碼時保持高效的方法:
- 一個包含語法、方法和函數 速查手冊 總能應付不時之需。
- 將問題分解成更小的部分,便於追蹤。
- 嘗試理解代碼運行的核心概念。
- 構思解決方案時,大可發揮你的創造力 —— 但剛開始還是要注重基礎。
- 在練習時,創建儘可能多的應用和組件。
- 永遠不要從 Stack Overflow/Exchange 等開放平台上複製/粘貼代碼,特別是在不了解上下文的情況下。
- 跟著教程做了一遍後,嘗試從頭開始構建所有內容。即使你只能獨立完成一半,那也仍然是一個成就。
祝我們所有人好運!
via: https://opensource.com/article/22/8/coding-advice-new-programmers
作者:Sachin Samal 選題:lkxed 譯者:lkxed 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive