最後一天來闡述對學習軟體開發的一些看法
早期在GPT還沒出世以前,完全零程式基礎的人只能透過GCP(Goolge Copy Pasta)的方式,把網路上找到的程式範例,不斷地套到自己遇到的問題中,秉持能動就好的精神,得過且過能達成需求就行,這種作法或許能解決「眼下碰到的問題」,背後潛藏一個隱憂,在不清楚程式是怎麼運作的情況下,埋下的是一顆未爆彈,不知道甚麼時候出現無法掌握的問題
為了防止拿很大顆的石頭砸自己腳,最保險就是主動了解背後運行原理,至於甚麼時候去了解?碰到問題再去了解,即當學習框架碰到問題卡住時,從網路上找到別人給的程式碼實作,可以先了解背後運行原理跟為什麼要這樣做,探究原因的過程也能累積相關知識,及另外的用法,如Spring Security將某個物件視為請求者,這個物件擁有那些特性,或是查看@Autowired的源碼註解,了解哪些區塊可以由外部注入Bean元件
雖然有時候照別人的規則套用程式邏輯,就能完善能動的系統出來,還是別忘本,背後擺脫不了原生Java的運行機制,因此先了解Java實作觀念,學習工具的使用能大幅降低工具的上手難度,這裡有個盲點,應該先學框架還是學Java,答案是都可以
學習框架時試著閱讀源碼,深入了解Java用法,除了能知曉實際的應用方式,還能學習到「軟體設計」的知識,一個依賴套件能被泛用除了解決業務邏輯的問題,也有好的設計大幅提升程式碼的複用性,或是將邏輯進行組合,能有效提升整個開發速度,這些設計方式也有專門的名詞,最終還是會回頭了解這些「概念」,把這個概念想像成知識的小碎片,零碎的知識累積多了,對於開發速度能有大幅提升,最終受益的還是自己