決定轉職軟體工程師&三個月的自學歷程 ft. 不斷離職的根本原因

Jia Rong Tsai
14 min readNov 20, 2021

--

一直想發一篇和「轉職軟體工程師」相關的文章,也照慣例的一直難產+寫偏,最近在看了你怎麼看待時間,決定你成為哪種人後,決定要穩住自己的意念和嚴格面對時間的壓力,認真輸出這篇文章,也藉機會思考自己目前的狀態和需要解決的問題。

文章結構:1. 轉職工程師的決定
- 為什麼決定轉職軟體工程師?
- 為什麼現在才決定轉職
2. 三個月的學習歷程與學習資源分享
(比較多開發專業術語,有看不懂是正常的!若對開發沒有興趣,只是想了解轉職相關的思考,可以直接跳到後記🥰)
- 這段時間你做了什麼事情?
- 為什麼不參加BootCamp?
- 目前的學習歷程
- 自學三個月心得
3. 後記:為什麼總是千辛萬苦找了一份做幾個月就想離職的工作?
- 讀什麼就做什麼,對自己缺乏了解和觀察
- 第一次轉職,以為自己可以的誤區
- 放任那些自己其實很在意的訊號
4. 總結

為什麼決定轉職軟體工程師?

  1. 能最有效率達到預期的薪資,薪資成長可期。
  2. 自己能做而且做起來很有成就感,也喜歡埋首解決問題的過程。
  3. 迎向時代發展的趨勢,未來持續看好。

既然軟體工作這麼香😂,為什麼現在才決定轉職呢?

筆者畢業於設計科系,畢業後曾夢想成為演員(也實際去追夢過),正職做過平面設計師與行政助理。想想也很訝異,自己這樣不停對人生思考與改變方向是充滿勇氣?還是充滿不定性呢?

一些追夢的證明(shout-out to還沒來得及記錄就結束的上海生活)

從學生時期到工作階段,開始從短期目標的達成轉向長期發展的考量,是一個逐漸從自己看到世界,從當下看到未來的過程。年輕的時候常會因為「慾望」做決定,以自己「想要」為最佳考量,而忽略了現實的因素,長大後開始了解什麼是平衡,也開始明白自己想要的生活,並能從未來的角度去調整自己的目標和決定。

在和朋友聊天時,我常說當工程師是「時代的選擇」,在軟體產業繼續蓬勃,Ai/Data/Cloud 等領域的持續創新下,未來的資源都在軟體上。而有能力的人,誰不想站在世界前端,成為推動科技的推手呢?軟體產業,又屬工程師最具有絕對技術能力,當然也就能夠獲得最高報酬和話語權,在自己嘗試過也喜歡寫程式的前提下,實在找不到不做的理由,也可以說是看清楚世界運行的趨勢和自己優勢的交界點。

網路上已經有好多決定轉職工程師的文章,原因大同小異,而轉職路上困難的不是做了這個選擇,是帶著選擇繼續走下去,所以我就把書寫的精力更多放在三個月來的自學上吧!

這段期間,你做了什麼事、有什麼成效和感受?

學習計劃從8/28開始,到現在11/20,進行了84天,大約三個月,主要參考五個月成為 JavaScript 工程師的完整攻略的計劃,透過線上課程、開源的學習資源,自己安排學習的進度。週間一到五白天9–5點為學習時間,週末則是休息、回顧上週的學習、調整進度並整理下週學習資源,算是大考之後第一次讓自己進入這麼規律和穩定的學習生活。

為什麼不參加BootCamp?

決定轉職後,也研究過世面上的各個程式學習補習班,也訪問了一些曾經參與並成功轉職的前輩、朋友們(在此大大感謝各位接受訪問,你們的分享都讓我慢慢走出適合自己的道路,最後做出現在的選擇),考量如下:

  1. 費用 — 在要負擔5個月生活費的同時,7–10萬的課程還是有一定的壓力,在不考慮兼職學習的情況下,先以開源資源+線上課程開始進行。
  2. 學習的資源容易取得 — 轉職軟體工程師早就不是新鮮事,線上課程非常豐富,軟體界的開源風氣也讓分享成為常態,技術文章、youtube、podcast,絕對足夠讓自學者達成目標。(私心也愛好自由不想被固定的課程綁住,覺得網路上各式各樣的資源比較香XD)
  3. 訓練規劃進度與篩選教材的能力 — 現在轉職工程師很幸福,坊間有很多課程,只要錢花下去、跟著路徑好好學習,基本上都能成功轉職。但是未來呢?在成為工程師後,因應軟體每半年、一年就有的技術更新,若沒有學會「自己學習」的能力以後一定會再次遇到瓶頸,因此我也把這次的轉職學習,當作是對自學規劃和進度管理的訓練,期許自己能對自主學習的每一刻負責。

目前的學習旅程:

(小提醒:以下會涉及較多的網頁開發術語,看不懂是很正常的,若還想看其他自學/轉職相關的思考,可以直接跳到自學心得/後記的段落!)

第一階段 網際網路基本&Git 的訓練

為期約三週,以CS50 / Computer Networking / Git&GitHub 為主要的學習內容,在寫網頁開始之前,先了解電腦科學與網際網路的背景知識,此時也正在探索各式課程與學習資源、訪問朋友和前輩,評估合適的學習路徑。

第二階段 全端開發走一遍(走到一半就走不下去XD)

確定要以線上資源自學之後,以Udemy 2021網頁全端開發課程為主,涵蓋網頁開發前後端的完整知識,複習以前學過的基礎程式HTML / CSS / JavaScript,也學習近年來網頁的新技術,並開始補足後端開發的能力,開始對全端網頁工程的輪廓更鮮明。

一開始進行的很順利,也感受到自己真正在學習新的內容,不過在課程中後期開始有無法吸收內容和排斥學習的情況出現,主要發現以下問題:

  1. Memory v.s. Understanding。
    啟發來自Huli的文章——當我們在學程式的時,要學的到底是什麼 。跟著課程做了幾個小網站後,發現自己根本沒有「寫程式」的能力,頂多只是依靠記憶力,把老師的步驟抄一遍,如果沒有人在旁邊手把手的帶,很難自己完成一個專案。(解法:第三階段——正式學習解決問題的方法,開始深入學習語言+了解演算法和資料結構。)
  2. 練習Project 不好看就會做不下去
    設計系對美感和體驗設計的訓練,讓我在課程中進行練習時,常會卡在調整視覺和思考流程體驗上,在練習核心功能之前就花一堆時間。 (解法:第四階段——透過線上工作坊和JavaScript30,這類已經規劃好視覺和功能的小專案,專注練習網頁常用功能的寫法。)

第三階段 JavaScript語言/演算法/資料結構

在上個階段遇到瓶頸後,思考如何解決自己遇到的問題,而開始了這個階段的學習,比較跳脫網頁開發,也是因為是身邊的工程師朋朋們一直在聊演算法、資料結構和LeetCode的東西讓我充滿好奇(一種想征服知識的慾望),加上一直被各種文章提(ㄎㄨㄥˇ)醒( ㄏㄜˋ)這些知識對未來長期職涯發展的重要性,所以開始去找相關的資源。

最後讓我決定要開始學習的原因是——要解決「不會自己寫程式的問題」。演算法是思考問題和解決問題的框架,協助在遇到問題時釐清:想要達成的是什麼、會執行哪些步驟、擁有或缺少哪些資源,是建立程式思維的方法,也是解決不會自己寫程式的重要路徑。在研究各大學、網站學習資源後決定以 JavaScript Algorithms and Data Structures Masterclass 這門用JavaScript教授的課程學習 。另外也購買了JavaScript: Understanding the Weird Parts 讓自己更深入了解語言的結構和基本知識。

經過一個多月的學習,最大的收穫如下:

  1. 知道要做什麼,就寫的出來(或查的出來)。
    了解基本的problem solving patterns,能自己推倒出解法再轉成程式碼,或是看pseudocode寫出解法,終於覺得自己不是抄寫工人,也在演算法和資料結構的學習上獲得很大的成就感,真的好喜歡面對問題、找解法的過程,也對轉職的決定更加確定!
  2. 敢看source code。
    JS weird part中有一堂課帶著我們看jQuery的原始碼,雖然還不能說完全理解,不過可以找到建立物件的邏輯、簡化寫法的原因,也因此打開了看github開源學習的大門,進而找到更多的學習資源(包括JavaScript 30 也是這時候找到的)。
  3. 找到適合的老師和教學風格。Algorithms & Data Structures 的課程老師Colt Steele 曾在洛杉磯實體BootCamp 指導學生轉職,現在在Udemy 有10多堂課程,累積超過100萬名學生,是我目前最主要上課的老師。在他的課程中,會清楚解釋每個觀念的由來和實際執行中每個步驟的原因,講解的過程很幽默,也很能切合我們現在正在使用網頁的情形,是目前我最能適應、最能聽懂的方式,也感受自己在他的講解和學習中飛速進步!之後的學習也打算以他的課程為主。(這是很個人主觀的感受唷!)
演算法課程的課程提醒:某種M屬性的象徵XD

第四階段(ing) JS30 實戰 / 補齊後端和資料庫課程 / 完整Project

這個階段的關鍵字是「輸出」,主要透過JavaScript30的每日Project去練習網頁常出現的功能(例如:DOM / API串接 / CSS運用),真的遇到很多實際使用的場景,也更了解每個觀念/技術點會在未來專案的哪些部分出現,做出每一個小Project 也很有成就感❤️。

JavaScript30 Day-8 的小畫家專案

另外也購入了Colt Steele 的網頁開發課程,開始補之前第二階段全端開發中有聽沒有懂的概念,也因為上一階段的累積,對JavaScript中非同步執行(Async/Await/Promise)和後端開發(Express/Routee)能更好的理解,在實際執行的時候也能自己寫出符合RESTful 的routes邏輯(十分感動😂)。

接下來的規劃 / 可能路徑:

  1. 繼續第四階段的旅程,將全端的完整走過並執行一個完整專案之後,下一階段就會進入前端框架React的學習,而完成完整的React專案後,也差不多到了五個月學習的尾聲,就會開始進行求職的準備。
  2. 10月的時候有申請AppWorks School 的計劃,目前已經面試完,將會在12/1放榜,若有幸入選,就可以在AppWorks的安排下,進行合作專案、大專案的子功能實作、個人專案等實戰的訓練,也能有更多的資源和把握進行求職。
  3. 若AppWorks 沒有入選,求職的進行上也有不夠順利的情況,也有可能在1月的時候加入 AlphaCamp的學期三學習計劃,累積前後端分流的共同開發經驗,再進行求職。

自學三個月心得:

  1. 維持規律
    守住自己每天、每週的學習時間和學習進度,要知道自己現在是全職學習者,是花費人生最寶貴的資源——「時間」進行學習的人。絕對的自律才能獲得絕對的自由!
  2. 誠實面對自己
    持續的自我察覺&適當的調整很重要,自己最清楚自己的狀態,是否有掌握課程的內容、了解到幾成、能否實作相同觀念的其他題型。而遇到問題要適時的和請教他人或者自己調整學習的狀態、學習的資源,積極面對每天、每時、每刻發現的問題。例如:之前曾經跟過一堂印度老師的課。。聽不懂真的不完全是因為自己問題,世界上還有更適合的學習資源。
  3. 自學的意義
    自學不代表要很Hardcode的讀官方文件,也不代表一定要透過免費資源學習,自學是自主掌握學習的進度,了解自己適合的學習方式,在適當的時候使用適當的資源比如:某些框架自己讀不懂,可以買線上課程;需要助教協助、合作專案、求職資源,也可以參加相關的工作坊。

後記:一直在學習的狀態裡,好像突然忘了自己是如何走到現在的這條路上,以下是在面試完AppWorks 之後對自己轉職的回顧和思考。

為什麼總是千辛萬苦,找一份做幾個月就想離職的工作?

從2019畢業至今,我已經換過三份工作,最長的工作經驗不超過一年。我敢說在申請每一份工作的時候,我都是充滿熱忱、願意為專案付出、也相信自己能夠做的很不錯的,那麼這中間到底是哪裏出了問題?

一、讀什麼就做什麼,對自己缺乏了解和觀察

我在找第一份工作之前(或說大學期間),其實沒有很認真的想我要做什麼工作,並以什麼樣的專業成為職業,我只是盤點了自身的能力,發現「視覺設計」是我目前唯一的專業,也是當時唯一可以換取較高價值的能力,所以決定以「平面設計師」為求職目標,開始尋找合適的機會。

「你是喜歡設計,還是喜歡做設計?」這是大一設計概論課的時候,老師提出的問題,我現在可以回答了,我喜歡設計,而我也能「做設計」,但是我並不享受「做設計」的過程,完成視覺作品所需要的:定位視覺方向、找參考圖片、設計符合期待的畫面、根據客戶與團隊需求調整各種細節等歷程,對我來說每一步都像大海撈針,沒有標準答案,衡量的準則通常是客戶與主管是否接受、時間是否足夠再更深入、技術是否能完成視覺的要求等等。

我一直以「創作」的心態面對設計,很難接受反覆的修改,跟沒有期限的調整,最後只想著趕快過稿、不要再改了。剩下的熱情和興趣已經不足以支撐我繼續以設計師的角色前進了,也算是結束了從國中美術班開始,對「畫畫」的追求,若對這樣的心態有好奇,可以看看這篇貼文一個人的興趣是如何被毀掉的(好像有點嚴重XD)。

二、第一次轉職,以為自己可以的誤區

第一次轉職,也是我的第三份工作,離開了「設計師」的職位,我成為了一名「行政助理」是一份沒有專職的工作,可以面對大型公司、小型公司、基金會和秘書的工作內容,我很開心也依然覺得很幸運有這樣的機會。當時的我以為自己能成為穿著Prada的惡魔裡的安海瑟薇,為工作做很多的嘗試和改變,用任何方法完成任務,成為無所不能的人。(但是,我不能XD)

我需要有休息的時間跳舞,維持我的興趣和生活的平衡;我希望指派的任務有明確的目標,讓我知道能在哪些地方用力;我希望在工作中做有挑戰的事,需要用到邏輯和思考、學習新的技術。我開始明白自己想要的方向和當時工作出現的衝突,也終於承認自己的不足和不適任,下定決心離開

三、放任那些自己其實很在意的訊號

在幾份工作的求職期間,其實都有出現一些小小的訊號,只是當時被想要找到工作或想要這份工作的情況而掩蓋了,事實證明,會讓你決定去留的從來不是你有多喜歡這份工作的好,而是你有沒有辦法接受這份工作的不好,以下也列出自己的觀察,提醒自己也分享給大家。

1. 錄取 v.s. 不錄取的反覆

得到Offer後,因為還有其他的機會,所以致電詢問最晚回覆時間,A老闆說可以下週回覆,而下週回覆會去上班後,B老闆回覆因為還有其他人選,所以再下週才能回覆我是否可以去上班。

警訊:內部溝通不順暢,決定容易輕易推翻。

2. 面試時間不停更改、求職期程不斷延後

面試時間會在晚上或是假日,面試的時間很早敲定,卻會在前一週、前一天臨時的改期和取消,而整個求職的期程從第一次面試到錄取經過2個多月。

警訊:時程拖延是常態,不會尊重上下班和約定的時間;內部其實不缺人,兩個月沒有人做也沒關係,工作量和任務分配有問題。

3. 辦公室的氣氛

有遇過輕鬆隨緣辦公室都在聊天、休息時間一起煮飯的;也有遇過氣氛嚴肅,時刻等待老闆喚名的;也有遇過老闆從來不進公司,員工自己管理自己的,無論是那種情況,都是一種訊號,是公司管理風格和價值的展現,也是工作之後的每一天。要知道自己能接受的是什麼樣的環境,若是不喜歡的環境要自己警惕,沒有什麼事情是沒關係的,要找到方法解決,拖著只會變成慢性疾病,讓自己之後的工作狀態出現問題。

究竟我的轉職之路能否露出曙光呢?且看下回分解!

呼!每次打完文章都有鬆一口氣的感覺,尤其是這種從一個月、兩個月拖延到三個月的文章XD (敢問世間是否有拖延症解藥

在轉職成功前,寫出自己目前正在學習、正在轉職總是有點缺乏底氣,畢竟世界上充斥著成功者的故事,好像有達成目標才能分享過程一樣。

秉持和上一篇文章一樣的初心,透過整理自己和分享經驗,為世界提供更多不一樣的視角,不同的人生可能性。

謝謝閱讀到這邊的你:)若你有任何建議和想法都歡迎與我分享,也期待你能接納自己、誠實面對自己、創造屬於自己的故事。

下回見!

--

--

Jia Rong Tsai

體驗派/探險者 腳下的每一步都將成為生命的重量