兩個月前,我獲得了一個使用陌生語言與框架的程式碼庫存取權。我感受到很大的壓力。我原本主要接觸的是 React 和 JavaScript,現在要投入 PHP 和 Laravel 專案,讓我覺得很有壓迫感。
我曾擔心,學習新的環境會花上幾個月,我才能做出有意義的貢獻。
但事實並非如此。
有天下午,我在清潔鍵盤時,看著我拆下來的鍵帽(如上圖),突然想起小時候拼拼圖的經驗。拼圖不是靠盯著所有碎片一口氣解完,而是把一塊熟悉的碎片與另一塊連接起來,直到圖像慢慢浮現。
我後來學會 Laravel 的方式,正是如此。
在探索程式碼庫的過程中,我發現自己其實一直在腦中整理學習陌生技術的關鍵步驟。
剛開始時,我真的覺得自己像是回到原點。但幾週後,我意識到自己其實不是從零開始。
我早就知道套件管理工具、Git、除錯、專案結構這些概念,只是不知道在 Laravel 裡它們叫什麼。
於是我的問題也慢慢從「我要怎麼學 Laravel?」變成「Laravel 裡相當於我已經知道的那個東西是什麼?」。這就像把新知識連結到我已經熟悉的概念上,只是我現在更主動地在擴展它。
React 有元件,而 Laravel 有 Blade 樣板與 Livewire 元件。工具不同,但概念相同。

每個框架都有自己的語法,但解決的是同樣的問題。要做的就是找出其中的相似之處。
這種方法其實也能套用在任何事情上。如果你想學新東西,試著把它和你已經知道、而且有點相似的事物連結起來。
想法會開始更快串連,學習也會變得容易得多。
以前的我,是那種如果不把所有東西都弄懂,就會覺得自己完全無法理解的學生。但隨著年紀增長,我漸漸意識到:只要先知道足夠讓自己開始動手,其實就已經很夠了。
先學到足以讓自己產生產能的程度。
第一天就試著把某件事學得太深入,對大腦來說簡直是自殺行為。

我沒有試著把所有東西都學完。相反地,我把重點放在能讓我完成80% 日常工作的那20% Laravel 知識上。
接下來才是重點。我犯了很多錯,而且大多數時候都蠻好笑的。如果是以前還在國中時的我,大概會對自己失望透頂。
但現在的我,只會很高興自己發現了這些錯誤。因為這讓我清楚知道自己還需要學什麼。這不像學校,老師會直接給你課綱;更像是當錯誤發生後,你自己去發掘該學的內容。
我們只需要有紀律,不要跳過這些課題,因為這正是這套方法能運作的原因。理解新課題時的掙扎,才會讓你成為一名優秀的工程師。
這一步比看起來更難,尤其如果你像我一樣,總希望一開始就把所有事情都準備好。但事實是,你越深入競技場,就越能理解自己的弱點。
沒有人比你自己更清楚你缺少什麼。
所以我決定正面迎戰,結果不出所料,慘敗收場。那是我第一次架設 Docker 環境、Linux、WSL、Ubuntu,以及所有相關的東西。我花了大約三週才把本機開發環境弄好,之後才開始貢獻。
老實說,我學到很多,真的非常多。
我甚至在這段過程中學會了 CI,並且很快把它應用到我的個人網站作品集上。我也做了一支有趣的影片來記錄這段經歷:

你可以在這個 pull request 裡看影片:https://github.com/CodingWithJiro/elmarchavez/pull/10。我想我們多少都曾有過這種感受 🤣
總之,我經歷了真正的實戰。一個不是屬於我的、混亂但真實的 Web 應用程式,而我必須負責修復、維護與擴充它。再多個人專案也比不上這樣的經驗。
回頭看,我很高興自己能夠適應、貢獻,並在技術會議中展示我的作品。
我正變得越來越能自在地生活在不舒適之中。
我在需要幫助時會提問,也在能力所及時幫助別人。這段經歷很有成就感。這是我能在技術生涯早期經驗後,充滿信心說出的話,而我也很期待接下來會發生什麼。
如果你看到這裡,謝謝你閱讀我的文章。我們下次靈感來了再見!

原文出處:https://dev.to/devengers/how-i-contributed-to-a-laravel-application-without-knowing-laravel-1dkl