前言
大家好,我是 LINE 購物的TECH FRESH — YT Chen,於今年 7 月加入 LINE Taiwan,很高興今天能有機會與大家分享 —「非本科,又如何?」
怎麼找到第一份軟體工程師(SWE)的工作?
如果你是一個非本科系且想要轉到軟體領域的同學會發現你現在好像有很多條路可以選,像是自學、轉系輔系雙主修、報培訓機構或是直接跨考研究所,而且你可能會很猶豫自己到底要選哪條路才能夠拿到第一份軟體工程師的工作,每條路又有各自的難處,例如自學要怎麼開始啊、雙主修課太多要延畢怎麼辦啊、培訓機構太貴跟不上啊或是跨考研究所會不會考不上等等的焦慮與煩惱,因此我把這張圖稱為「焦慮樹」。
若你常看一些網路論壇你會發現很多人會建議你報坊間的培訓機構以及直接跨考研究所,但是這些無疑都是一件成本巨大的決定,所以說在學生時代就決定跨領域的同學們很幸運,因為還有機會利用許多學校的資源以及分配自己的時間,所以我認為你應該先從上面兩個(自學與轉系輔系雙主修或修課)開始。
入職前 — 以最小成本試錯並滾動調整
Linux 之父的名言 ”Talk is cheap. Show me the code.”,不要一下就定很高大上的目標,請遵循以下四個步驟:
確定目標
先畫靶再射箭才會長久。
我喜歡什麼?我該往前端、後端、APP、Data 或是 AI 等等的領域前進?
自學基礎
例如了解遞迴(recursion)、熟悉 Linux 基礎指令,知道資料結構與演算法(DSA)在講什麼等等。
實作專案
我想要做一個 Facebook,我該怎麼使用什麼框架(Framework)?
研究透徹
我的專案是怎麼運行的?為什麼我會選擇使用這些工具?
上面的每一環節都很容易令人想放棄,這很正常,沒有強烈的動機的話很難貫徹始終,為什麼叫做「以最小成本試錯並滾動調整呢」?因為在學習的路徑中也能夠獲得很多對於自身的回饋,例如你發現在自學時坐不住或是三天打魚兩天曬網,那你完全可以選擇再去尋找更適合自己的路,每個人都有自己擅長與不擅長的事,用自身的優勢去面對未來數十年的職涯挑戰無疑是較為輕鬆的。
更好的軟體隨時都在路上,無論是什麼種類的軟體工程師都必須要不斷的學習,最重要的是抓住精髓並多加運用。自學的管道有很多種,youtube 影片總歸是一個免費又有效的學習方式,若是願意花點小錢的話也可以考慮購買線上課程,再來才是考慮成本較高的其他選擇。因為此時你已經有了具體的目標、一些基礎以及最重要的 — — 抱有強烈的熱忱,比起一張白紙的同儕而言你已經取得了不小的優勢。
轉職後 — 跳的更高
”The future depends on what you do today.“ — Mahatma Gandhi
補足核心
做為一個非本科生,在成功轉職後你可能會在工作中感受到一股飄忽不定的壓力,一種不曉得怎麼繼續向上的憂愁,時光不知不覺的的一次次的 CRUD 中悄然度過,這時候就很適合再深入研究一些學科,例如想要寫更好的程式碼的話你或許會想要更深入了解物件導向程式設計(OOP),想要增進程式運作效能的話可以看看作業系統(OS)。
主動爭取
可以在工作中多多主動爭取自己有興趣的專案,抑或是假設你目前的工作並不是軟體工程師但你想要嘗試,那你也可以嘗試在既有的工作之中加入一些跟開發軟體相關的部分,例如用 python 處理那些無趣的例行事務,這種 mindset 會成為你未來的談資。
與人為善
第一份工作會影響你未來職涯的很長一段時間,所以盡可能的在工作中努力學習與表現,此外也可以尋求內推,內推的話就可以省去 HR review 的環節,直接將履歷送到用人主管手上!
面試導向
上一節的實作專案流程固然可以使你成功拿到第一份軟體工程師工作,但是除非你天賦異稟不然是很難一蹴而幾的進到那些夢想公司的,為了達到更高的目標 — — 「刷題」勢不可避。
以上就是如何第一次轉職軟體工程師就上手的秘訣啦!接下來來瞧瞧我在 LINE 的任務吧!
Work in LINE
LINE SHOPPING 介紹
LINE 購物是一個導購平台,在這裡搜尋後,LINE購物會幫你導向與他們合作的商家中,購買後即可獲得等同於現金的 LINE POINTS 的回饋。
What does Automation Engineer do?
Automation Engineer 所做的事情一言以蔽之就是自動化一些一定要做的測試並從報告中找到系統哪裡壞掉了。簡單介紹與解釋一下 AE 們的主要日常任務:
Smoke Test
關於這個名詞據傳有一個有趣的由來,就是當電路板首次接上電源時如果沒有馬上冒黑煙就代表至少它設計上沒有嚴重的問題,剩下的再慢慢修也不遲。
引用到軟體工程上來說就是「基礎功能一定不能壞」,以 LINE 購物為例,LINE 購物是一個可以在上面搜尋並導購的平台,那很明顯我們產品的價值就在於「搜尋」與「導購」,什麼都可以壞但這兩個功能必定不能壞!
Performance Test
分成很多種,不過這裡只舉一個例子,生活中我們在搶演唱會的票時系統總會當機,但事實上我們應該透過 Load Test 來評估以現有我們系統的資源能承受多少流量,再去做 auto scaling 之類的才能保證系統依然能在大量的流量中存活。
Health Check
要建構一個系統勢必有很多附屬的服務,例如資料庫、搜尋服務、廣告服務等等,因此我們必須即時掌控哪些服務出問題了,這樣才能以最快的速度去處理。
CI / CD
這同樣是一個大主題,但核心都是「自動化的做某些事情」,例如我每一週都要 release 一個版本,但是如果每次我都要 git clone 下來然後再推到 production 上豈不是很麻煩?因此有了 CI / CD 工具後我們就可以讓這個過程自動化,例如每週五的晚上 19:00 觸發,這樣就可以直接快樂下班回家了。
如果覺得意猶未盡的話強烈推薦前 TECH FRESH — 依涵的 文章,寫的超級詳細!
Now, I’m a SWE! And then?
好的,相信大家在看完這篇文章之後都已經成功的成為了一個軟體工程師!
那我要怎麼在這個職場存活呢?以下就為大家整理出四個成為 senior 的必點技能樹:
Problem Solving
定位出問題點之後善用 Google 搜尋或是 ChatGPT…沒了它們幾乎就沒辦法開發了。
還有一點是團隊如果有比較 senior的成員的話那千萬不要放過機會,尤其是當你卡關時一定要問,因為會讓你卡關無非是:
- 技術不達標
- 新進公司的不熟悉
技術不夠的話問 senior 的好處顯而易見,新進公司的不熟悉包含了很多,例如對公司 code base 的不熟悉抑或是Domain Knowledge 不夠都有可能,如果有 mentor 制度的話那就更好了。
Debugging Expert
每天都在與為什麼這跑不動跟為什麼這跑的動中掙扎,但都沒有不能 reproduce 出來慘…QQ
Good Learner
軟體工程絕對是值得耕耘的一畝地,在這裡不論出身,你的知識與經歷將會成為你最大的後盾,所以為自己而學吧!
Team Player
主動向你的主管或是 mentor 報告目前的進度,讓他們對你很放心,當然也記得要跟他人合作啦!
最後一點就是不要把自己當成只是一個 ”programmer”,你可以試想五年後你想要在職場上有什麼身份,例如你想要做主管,那你就應該多去爭取與人溝通的機會,相反的如果你想要成為更厲害的工程師那就應該繼續增進自己的程式能力或是基礎學科。
結語
在這篇文章中相信你已經清晰的了解身為非本科系的學生如何轉職、成為一個好的軟體工程師以及 Automation Engineer 的一些工作內容,以上就是我這次的分享,希望能對 你有幫助,謝謝!