【譯】學寫程式,就像在下一盤很大的棋
Oct 08, 2020
本文譯自 Play the long game when learning to code. ,版權歸原著所有。
學習程式可以是很殘酷的。你不知道學習的方向是否正確,而且前方總是有很多等著你學。我們大多數人沒有數年的時間用來鞏固程式基礎。
你可能會擔心「學習程式」這件事情會佔用掉多少時間。這種壓力讓你嘗試在最短的時間內盡可能的學習更多東西。你想要轉換人生跑道,或正準備上跑道,找尋一條最終能讓你領薪水寫程式的道路。
有理想的工程師傾向兩種學習方式。第一種包含了盡快學習程式語法。這種人會複製貼上他們覺得有用的程式碼,並跳過剩下的課程與教學。不幸的是,許多人在這種過程中會精疲力盡,最終無法將他們所學的應用在真實世界當中。
第二種學習方式強調理解所有內容。使用這種方式的人就像在下一盤很大的棋。他們並不急著在單純的程式語法上,而是有條理的將每項基礎融會貫通,再繼續前進。
在這篇文章中,我會介紹兩種學習方式,並分析各自的優缺點。希望你在讀完這篇文章後,能理解到為何循序漸進可以更快,更有效率地達到目標。
囫圇吞棗能讓你驚艷(但也會傷害你)
學習程式最棒的一點是,總是有數以千計的資源能幫助你。網路上充滿了免費的線上課程、影片教學、與熱心的社群們,能幫助你找到對的方向。想要快速的利用這些優勢是人之常情。
快速學習有其優勢。你會將自己沈浸在大量的程式思維當中,並覺得在短時間內就有長足的進步。在眾多線上資源的幫助下,你可以在一天內完成好幾項教學和課程中的專案,並且能馬上投履歷,找到工作,這可能是最大的優勢。
當我開始學習程式時,我把我的生活目標定在完成兩門初階 Python 課程,和三個不同的全端開發專案。我從 Hello World 到撰寫函式、類別、最後到使用者註冊,這一切只花了我幾個月的時間。我覺得收穫很多,而且正在就業的路上。
然而,我很快便理解到我必須慢下來。當我面試程式設計職位時總是在技術面試時失敗。此時我回頭嘗試 W3Schools 的 Python 測驗,毫不意外的錯得一塌糊塗。事實上,我當時只是藉由這些課程和教學滿足短期的成就感。
許多雄心壯志的工程師都曾掉入過這個陷阱。複製貼上而不是完全理解這些課程和教學。如果你可以理解並應用所學到的,那可以繼續「快速學習」。但如果你不能,那我建議你慢下來,好好做更深入的理解,並且測驗你自己是否能在你的學習環境外解決問題。如果課程或教學教導你如何寫迴圈,那就試著用不同的數字或變數名稱自己寫一個。
在快節奏下學習程式是可以讓你接觸許多不同的思維,甚至讓你更快獲得面試機會。但不要為了「快速學習」而犧牲了理解的機會。當你在技術面試時,會被問到許多測試你是否融會貫通的問題,而不單純只是考你程式語法。如果你從現在開始深入理解,就可以面對這些問題並證明你準備好了。
下一盤很大的棋
如果你想要真正地、持續性地在程式的旅途上精進,你就應該在學習時接受「下一盤很大的棋」的心態。這可能會讓你在同一個程式概念上停留更久,你可能沒有辦法像只關注語法的快速學習者一樣,在很短的時間內就得到面試機會,但你會有更好的基礎去面對面試時的技術問題。
頂尖的工程師們都會保持這個心態。他們並不急著記住每個程式語法,而是專注在真正的、持續的進步。他們知道每個程式概念都建立在前一個概念之上,所以他們不會急著讓自己進入到下個概念,除非他們已經完全理解了上一個。
在我學習如何寫程式時,我總是在尋找某個秘訣,能讓我成為貨真價實的工程師。由於認為自己必須盡快學習程式,並找到工作,我太急著證明自己。那種「貨真價實」的感受從未跟隨著更多的程式語法,或完成更多課程而出現。反而是當我放慢腳步,好好面對一整盤棋的時候才真正有這種感受。我開始專注在理解自己學習的部分,並且將他們運用在解決真實的問題。像是遞迴、資料結構這類概念,隨著我額外花時間理解處理器流程與記憶體後顯得更有其邏輯。
「很大的棋」其實不大
如果你準備將一生的時間投入在學習上,為何不現在開始?開始建立穩固的程式基礎。每個概念都會根植於前一個,而你會很高興自己在近到下一個概念前花了額外的時間。
那些快速學習者或許會搶在你之前得到面試機會,但他們通過技術面試的機會比你小得多了。你用時間所換來的基礎會讓你能夠在學習環境之外解決問題。
是的,專注在學習眼前的部分,不要想著要跑完整個流程。持續學習,持續成長。在學習程式的道路上,保持著站穩每一步的心態。
本文譯自 Play the long game when learning to code. ,版權歸原著所有。
標籤
延伸閱讀
【譯】如何記住所學的知識
在這篇文章中,我會敘述我的學習流程,你也可以嘗試看看。這套流程適用在任何主題,從程式設計到經濟學都可以。如果你遇到了任何不適用的情境,請讓我知道。
【譯】最佳化:讓 Rust 「RRRRR」
本文翻譯自 Optimization - Making Rust Code Go Brrrr,著作權歸原著所有。
【譯】如何踏出創新的第一步
害怕不完美,是阻止人們創造傑作的最大理由之一。而這種恐懼並不是沒有道理的。許多曠世巨作在初期都會經歷一個階段,一個連創作者看起來都不怎麼起眼的階段。每個創作者都必須面對,並熬過這個階段,才能造就之後的豐功偉業。然而,有很多人並沒有辦到。多數人甚至連「不起眼」的階段都碰不到。他們太害怕了,以至於無法開始。
【譯】做為一名工程師,注意力是我提高生產力的最佳資產
翻譯自 zwbetz,版權歸屬於原著。
利用 TextAlive App API 與 three.js 製作互動式 PV - Magical Mirai 2020 Programming Contest 入門教學
TextAlive App API 是在 Web 環境中,針對歌曲 PV、MV 的資料擷取工具。本篇教學著重在藉由 TextAlive App API 與 Three.js 製作出符合 Magical Mirai 2020 Programming Contest 的準參賽作品。