後端工程師轉職:6 個月從零基礎到接案的學習路徑與技能規劃

Published on: | Last updated:

最近... 呃,好像蠻多人對踏入 IT 這行有興趣,但又怕怕的。特別是那些完全不是本科系的人。

我自己就是個例子,大學念的是理學院,跟程式碼八竿子打不著。但現在,嗯... 也做了好幾年的後端開發了,主要寫 [Java]。

所以想說,來聊聊我當初是怎麼從一個完全的門外漢,花了大概半年多一點的時間,一步步走到能靠這個吃飯的。這不是什麼教學,就只是我自己的故事啦,希望能給正在猶豫的人一點點參考。😅

一切的起點,只是一個蠢問題

說真的,轉職的契機有時候超莫名其妙的。

有一天我滑著 [Instagram],就突然冒出一個念頭:

「欸,我按下『發佈』這個按鈕之後,到底發生了什麼事?」

「這些照片、文字是怎麼被送到全世界的?」

聽起來很小對吧?但就是這個小小的好奇心,像一條線頭,我一拉,結果拉出了整個毛線球,然後我就滾進了「後端開發」這個世界。

好奇心,就像點燃數位世界的第一根火柴。
好奇心,就像點燃數位世界的第一根火柴。

TL;DR:先說結論

如果只能給一個建議,那就是:你必須真的對它有興趣。

這聽起來很廢話,但說真的,沒有興趣,學程式就會像在啃一本超厚的字典,你大概翻個幾頁就想丟了。因為過程... 老實說,蠻多時候是痛苦又枯燥的。只有好奇心能帶著你撐過去。

現在學 IT 還有用嗎?會不會太晚了?

這個問題,我大概被問了八百次。很多人會擔心:「我大學學的東西不就全廢了?」、「現在才開始,跟得上嗎?」

我的答案一直都是:當然值得。完全不晚。

科技已經不是一個「產業」,它就是我們生活本身。你現在做的任何事,背後幾乎都跟軟體、跟網路有關。

國外有些數據,像 [Investopedia] 就提過,美國的 IT 職缺成長速度預計是全國平均的兩倍以上,預計從 2023 年到 2033 年會增加個 10% 左右。有些領域更誇張,像資料科學家什麼的,成長率可能超過三、四成。

不過,說到這個... 其實不用看那麼遠。在台灣,體感上也是非常缺人。打開求職網站,你會發現很多不是純軟體業的公司,比如金融業、傳統製造業,甚至是零售業,也都在拼命找懂技術的人去做數位轉型。這點跟我們在台灣看到的狀況很不一樣,主要是因為各行各業都發現再不轉型就真的會被淘汰。根據台灣自己像是 104 人力銀行發的報告,軟體開發相關的職缺一直都很多,特別是懂雲端、懂後端的工程師,需求一直都很燙。

所以,別再想了。想學,就開始吧。

我的學習路線圖... 或說是迷路圖?

我大概花了三個月的時間東摸西摸,才慢慢確定「後端開發」是我真心想走的路。然後又花了大概半年的時間,很專心地往這個方向鑽,最後才找到第一份工作。

下面就是我那段時間的旅程,混合了一些當時犯的錯跟後來的想法。我覺得這比單純的步驟更有參考價值。

第一、二個月:找到方向,然後一頭栽進 [Java]

當我發現我對「按鈕按下去之後發生什麼事」最好奇時,我才理解,啊,原來我想知道的是「後端」的世界。

然後我就開始問自己一堆問題:

  • 什麼是 API?
  • 為什麼我們需要 API?
  • 要用什麼程式語言才能做出 API?

最後我選了 [Java]。嗯... 老實說也不是多深思熟慮的選擇,就只是因為聽說它全世界都在用,工作機會應該... 很多吧?就這麼簡單。😅

一開始就是學最基本的語法:變數、if-else 判斷、迴圈... 然後用這些東西做一些可以在黑黑的命令列視窗跑的小程式,像是計算機啊、簡易的訂票系統啊之類的。

這邊有個我犯的第一個大錯:我完全跳過了「資料結構與演算法」。我當時覺得這東西好理論、好無聊,只想趕快做出看的到的東西。結果後來吃足了苦頭。當你開始處理真正的問題時,你一定會碰到像是「這堆資料,我到底該用 [List] 還是 [Set] 還是 [Map] 來存?」這種問題。如果你一開始就對資料結構有點概念,你就能做出更有效率的選擇。所以,拜託,就算覺得無聊,也至少摸一下。

接著,我學到了 [Java] 的精髓:物件導向程式設計(OOP)。這個概念... 說真的有點抽象,但超級重要。簡單講,它教你怎麼把真實世界亂七八糟的東西,整理成一個個乾淨、可以重複使用的「物件」,這讓你在蓋 API 的時候,結構會清楚很多。

然後我發現了 [Spring Boot] 這個框架。它就像是蓋房子的懶人包,幫你把很多麻煩事都處理好了,讓你可以專心在蓋 API 的主要邏輯上。超讚。

第三個月:跟資料庫打交道

有了 API 的空殼,下一個問題就是:資料要存哪?這時候就得認識資料庫(Database)了。

我當時學的是 [Oracle] 資料庫,因為它跟 [Java] 算是同一個媽生的(都是 Oracle 公司的),整合起來很方便。它是所謂的「關聯式資料庫」,意思就是資料存在一個個像 Excel 表格的東西裡面,然後表格跟表格之間有關聯。

這段時間,我主要在理解怎麼設計這些「表格」,怎麼定義它們之間的關係。這東西有個專有名詞叫 [ERD] (Entity-Relationship Diagram),聽起來很專業,但其實就是在畫關係圖而已。

這邊是我犯的第二個錯:我對資料庫的學習又是淺嚐即止。覺得反正會基本的增刪查改(CRUD)就好了。但後來才發現,資料庫的設計好壞,會直接影響你整個應用程式的效能跟穩定性。一個爛的資料庫設計,後面要花十倍的力氣去補救。

後端分層架構的示意,大概就是長這樣啦。
後端分層架構的示意,大概就是長這樣啦。

第四個月:打造出我的第一個 API

有了前面的基礎,第四個月,我終於用 [Spring Boot] 把我第一個 API 給蓋出來了。雖然只是一個很陽春的員工資料管理系統,只能新增、查詢、修改、刪除資料... 但當我用工具真的能呼叫到我寫的 API,然後看到資料庫裡的資料真的變動時,那個成就感... 哇,真的快哭了。

也是在這個時候,我才真正搞懂了 [Spring Boot] 裡最常見的分層架構:

  • Controller:第一線接客的,負責接收外面來的請求(API calls)。
  • Service:真正做事的大腦,所有商業邏輯都寫在這裡。
  • Repository:跟資料庫溝通的,負責把資料存進去或拿出來。
  • Model:定義你的資料長什麼樣子,對應到資料庫裡的表格。

對新手來說,這個結構非常夠用了。很清晰,不容易亂掉。

不過呢,等你慢慢變強之後,可以開始去看看一些更進階的設計模式,像是 [DDD] (Domain-Driven Design) 或 [TDD] (Test-Driven Design) 之類的,那些會讓你的功力再上一個檔次。

第五個月:補上最重要的安全課

蓋完東西後,我突然想到一個問題:如果我的 API 誰都可以亂用,那不就完蛋了?

於是第五個月,我開始研究「安全性」(Security)。這對後端工程師來說是吃飯的傢伙,絕對不能不懂。我學了 [Spring Security] 這個工具,來處理一些很關鍵的問題:

  • 你是誰?(Authentication,身份驗證)
  • 你能做什麼?(Authorization,權限控管)
  • 哪個 API 該給誰用?
  • 還有一些聽起來很可怕但很重要的東西,像 [CORS]、[CSRF] 防護等等。

提早學安全性的好處是,它會幫你建立一個很重要的基本觀念:寫程式不能只求「會動」,還要考慮到「安全」。

第六個月:從頭到尾蓋一個完整的專案

最後一個月,我給自己一個挑戰:不看教學,從零開始,自己蓋一個完整的專案。

我不只做陽春的 [CRUD],我還加上了客製化的 API 回應格式、一些比較複雜的商業邏輯,讓它看起來更像一個「真正的」產品。

但這裡有我最大的一個遺憾,也是第三個錯:我完全沒碰前端。我只做了後端,然後用工具去測試它。我強烈建議,就算你志在後端,也至少去學一點點最基本的 [HTML]、[CSS] 和 [JavaScript],自己刻一個超醜的頁面來串接你寫的 API。

當你親手把前後端串起來的那一刻,你會對整個系統的運作有更全面的理解。這反過來會讓你成為一個更好的後端工程師。

學習的過程,大概就是無數個這樣的夜晚組成的。
學習的過程,大概就是無數個這樣的夜晚組成的。

常見錯誤與修正

整理一下,我覺得新手最容易卡關或走錯路的點大概有這幾個:

常見的心態或作法 我自己後來覺得比較健康的作法
只想抄捷徑,狂看速成教學。
看到「30天精通XXX」就高潮,只想趕快做出東西。
先蹲後跳,把基本功(語法、資料結構)練好。
速成教學可以看,但要當作地圖,而不是聖經。知道有哪些東西,然後回頭一個個把基礎補起來。
完美主義,想一次搞懂所有東西才動手。
看了一堆理論,但遲遲不敢寫第一行「Hello World」。
接受不完美,先求有再求好。
做一個超爛的成品,都比只說不做好。從錯誤中學習,比在腦中空想要快一百倍。真的。
什麼都想學,一下碰前端、一下碰後端、一下又玩 AI。
結果樣樣通、樣樣鬆,沒有一個專精的。
先專注在一條路上,鑽深一點。
像我一樣,先確定要走後端,然後就把 [Java] 生態系的東西學到一個程度。等你有一項專長後,再去橫向發展會穩很多。
閉門造車,自己一個人埋頭苦幹。
遇到問題卡住好幾天,鑽牛角尖,最後心態崩了。
勇敢發問,去找社群。
現在有很多線上的開發者社群。把你的問題描述清楚,你會發現很多人都樂意幫忙。而且教別人的過程,自己也會更懂。

一些真心話

找到工作後,學習其實才真正開始。工作上遇到的問題,比自己練習時複雜一百倍。

所以,永遠不要停止學習,永遠保持好奇。很多人找到工作後就心安了,覺得可以躺平了,這是一個很大的陷阱。技術的世界變得太快,你不前進,就是在後退。

最後,用我自己的一句話作結吧:

當你付出了努力,就不存在所謂的失敗,那些過程都會變成養分,在未來的某一天幫到你。

好了,差不多就這樣。希望我的碎碎念對你有幫助。🤔


換你說說看:

你的「那個按鈕」是什麼?是什麼微不足道的小事,讓你開始對寫程式、對科技感到好奇的?在下面留言分享一下你的故事吧!

Related to this topic:

Comments

撥打專線 LINE免費通話