熱流工程師轉職軟體工程師 — AppWorks School
這週剛到職滿兩個月,就覺得好像該整理記錄一下轉職軟體工程師心路歷程,於是寫了這篇文章,前半部會分享我在進入 AppWorks School 前的對程式的探索跟學習資源,後半部則是在 AppWorks School 訓練期間的心得分享。
先稍微自我介紹一下,我前面當過兩種工程師,我曾經做過電磁學模擬工程師跟熱流工程師,軟體工程師是我的第三種工程師工作,這三種工程師的工作、性質都非常的不一樣,專業能力的部分更是完全不相干,進入每個領域的專業都需要重頭學習,我覺得唯一的共通點就是規劃解決問題的能力跟思維。
進入 AppWorks School 之前
從程式絕緣體到成功轉職前端工程師,總共歷經了 16 個月:
程式初體驗
最一開始是因為換工作的一個月空檔,不知道要做什麼,但因為小時候一直有個想要學習程式語言的夢想卻一直沒有實現(國中的時候買過一本C語言教學手冊,然後就一直被放在書櫃沒翻過了),於是剛好看到一門台大開放式課程商管程式設計,就學得好像可以來學一下很常聽到的 Python 到底是在幹嘛的。
大概第三個月的時候,因為在新工作,剛好因為遇到工作上有些很高重複性花時間的人工複製貼上的資料處理,因為有學過一點點 Python 了,大概知道程式語言可以做到什麼事情,於是就跟主管提議說可以給我兩週的時間來寫一個小程式來增加大家的工作效率,於是就有了我的第一個小作品。(跟主管提議前,自己有先花時間研究可行性,大概知道怎麼做後才提議的)
開始了網頁開發的自學歷程
第五個月的時候,想要轉職了,這時候因為要確定自己的決心,於是決定給自己三個月的時間,邊工作邊準備轉職,確認自己是對軟體這塊領域有興趣的,那陣子也看了很多 Huli 的文章,然後剛好一個之前去菲律賓語言學校認識的朋友 A ,說有參加過 Huli 的程式導師計畫,有把一些課程放到 Lidemy 上,於是我就決定來刷一下他的課程。
真的是用刷的,因為前一份工作也算是高工時的工程師,所以下班後沒有太多時間,那時候是直接開兩倍速在看,觀念的部分不懂就放慢再看一次,實作的部分後面比較困難的地方也都只有快速看過而已,主要是想先對這個領域有初步的認識,但我自己覺得受益非常多,算是打好了的網頁開發的基礎,不只學到純前端的技術,還有很多介於前後端之間模擬兩可的細節,跟後端的基礎知識都有學到。
因緣際會得知 AppWorks School
第六個月的時候,透過同一位朋友 A 得知 AppWorks School ,那時候我才第一次認識 AppWorks School ,我記得當時是 Batch #16 報名截止的前一天,好像是禮拜四,然後隔天要出發去爬玉山(差點冷死在山頂XD),所以當天晚上就直接熬夜寫了他報名表單,不得不說那時候超認真的回答了表單的問題,然後還錄了自我介紹的影片。(以前找工作也沒那麼認真寫過自介)
School 從報名表單到面試,可以感受到對轉職動機的重視,因為轉職這條路不好走,如果動機不明確可能很容易中途放棄,我想這也是為什麼同學們都可以撐到最後的原因。
大概過了兩三週後,因為同時有個前同事跟我一起報名,他提前收到錄取電話後,過了兩三天我都還沒收到消息,雖然還沒到 School 公布結果的日期,但一度覺得沒望了,我還提前打電話去詢問了一下結果,但詢問後得知是有被錄取的!!雖然不是我的第一志願後端班,而是錄取前端班,但我一開始抱持的心態就是前後端都需要學一點,所以也沒有覺得可惜。(到現在也沒有覺得,反而很慶幸加入的前端班,不只更深入學習了前端技術,也認識了很多好朋友)
即使錄取了,還是要把握時間多學點技術
第八個月的時候,從前一份工作離職了,因為 Lidemy 剩下沒看過的課程有點偏向工具或套件的使用(Redux),因為前面實作都沒有跟著做,所以完全看不懂,就直接跳過了,但因為距離 AppWorks School 實體開學還有一個多月,就覺得不然來挑戰看看知名的 CS50 ,後來覺得做這個決定超值得的, CS50 課程設計的超棒,不只淺顯易懂,而且還有線上作業的批改系統,從最底層的C語言一路到網頁開發、資料庫設計都有涵蓋到一些,雖然聽起來好像很困難,但我覺得就算是零基礎的程式小白都是可以嘗試看看的,如果有進去他的社群,還會發現很多國外的國高中生都可以完成他的課程(作業全部繳交後有提供證書),我覺得大概是看得懂一點點英文的人就可以嘗試看看的。
第九個月的時候進入 AppWorks School 的 Remote Weeks,在四週內每週要完成觀看指定的線上課程及作業,然後作業還會有 Advanced Optional 的,蠻慶幸那時候都有把它完成的,就是在那時候把 CSS Flexbox 學的比較透徹。
AppWorks School 集中營
接著就進入實體課程了。
我那時候超期待跟大家見面的,因為感覺就會遇到超多很厲害的人。
先說說這四個月在 AppWorks School (後面簡稱 School )中的生活,真的就只有 Eat, Sleep and Code,越後期越忙碌,最後兩個月含假日幾乎都是早上八點半到晚上十點半在 School 度過,跟以前所有朋友都短暫斷了聯繫,連老家都很少回。
這四個月都在做什麼
剛開始的第一個月會有 School 設計的電商網站會需要按步驟的去完成它(每天發 PR,導師會進行 Code Review ),內容設計的很好,從原生 JS 到框架 React ,以及一些網頁開發常常會用到的功能都有設計進去,這算是在 School 期間被 Code Review 最頻繁的時候了,任何多餘的 Code 或是寫法怪怪的地方都會被揪出來。
我記得我就是那時候把 JS 的非同步語法學好的 ,本來就只會無腦的加 async / await,結果 Code Review 的時候被導師 Comment 說是不是多餘的,才認真的把它搞懂。
接著會有一些小型的合作專案,跟 iOS, Android, Back-End, Data Engineering 的同學們合作跑 Scrum(敏捷開發),體驗實際開發的流程,這邊開始就會需要發揮自己的想像力,自己發想要實作哪些功能,以及要如何把功能做出來和預估需要多少時間完成。
我自己覺得這算是蠻有趣的一個環節,因為這是會跟同學們大量討論的一段,而且你做的功能跟同學們都不會是一樣的,以及在跟不同領域的工程師討論的時候,會遇到一些不一樣的問題,像是跟 Back-End 就會討論 API 資料格式要長怎麼樣,跟 Mobile 的同學們就會一起討論一些泛前端共同功能架構可以如何設計,跟 Data Engineering 的同學就會討論前端要如何幫他們收集數據。
以上每個專案結束的時候都會穿插一些讀書會,主題包含 JavaScript 的一些基礎觀念、語法、React 的底層運作、生命週期到網路的基礎知識都有含括到,每個人會負責一個主題報告給大家聽。
我覺得這個環節收穫也是很大,常常你以為自己已經了解的主題,同學們還是會蹦出一些你沒聽過的觀念或知識,而且可以直接得到別人已經濃縮的專業知識跟資源,學習速度大大增加。
進入個人專案之前,還會有一個小環節是讓我們做一個簡單的小專案,同時學習一些比較困難的 React 應用及一些業界常用的套件。
接著後面就會有大約六週的時間要完成自己的 個人專案,從專案的發想、時程規劃、如何實作一路都要自己完成,當然導師也會從旁督促進度及確保方向正確。
進入專案前,我想說應該最困難的地方都度過了吧,剩下的就是把前幾個月學到的技術集合起來做出一個作品出來而已,沒想到完全不是這樣,我覺得個人專案根本是地獄的五週,如果前面的痛苦指數是五分的話,這段期間絕對有十分,是一個非常考驗自己抗壓性、自制力、心理及時間管理能力的過程,因為你會知道時間有限,如果能多做一些厲害的功能,或是把某些功能做的更加完善,對後續找工作都會有幫助,所以會不斷地逼迫自己挑戰極限。
所以如何調解壓力跟保持正常的生活作息在這段期間也是非常重要,當壓力太大的時候寫出來的程式碼的品質也不會太好 。
School 的教學模式
在 School 的訓練課程裡,其實不會有太多的時間在老師教你怎麼做,而是會是給你一個任務,你要自己找資源想辦法去完成任務,完成後老師會幫你看你的程式碼是不是有什麼地方不恰當或是多餘的( Code Review ),跟求學生涯比起來的話,我覺得比較像是研究所,收到一個題目後,要自己去研究、學習然後把他實作出來。
印象很深刻的是有一次完成了某個功能( Infinite Scroll ),但老師提出說我實作的方法可能有一些效能的問題,問我有沒有辦法避免(那時候老師並沒有跟我說答案是什麼),結果深入研究後才發現,原來我使用的方法是比較古老的方法 ( scroll event listner),而現在瀏覽器原生就有支援一些比較進階,但大幅改善性的的作法( Intersection Observer),也才因次學到了一個新技術,且這個技術在後續找工作面試的時候還有被考到。
如果 School 裡面沒有太多教學的話,那跟我自己在家學習有什麼差別?
- School 的資源絕對是超乎你想像的,從讀書會、模擬面試、履歷修改、求職媒合一直到畢業後的社群,每個部分我都覺得超棒的!
- 最大差別我覺得是跟 School 導師們很常說的一句話一樣
一個人可以走很快,但一群人可以走很遠。
但我自己覺得應該會比較像是:
一個人學習很痛苦,但如果看到一群人跟你一樣痛苦,就會覺得好像沒那麼痛苦了。
如果你也想報名 AppWorks School ,我會建議:
- 先試著自學一兩個月看看,一來確保你是真的對程式有興趣,二來這樣在面試 School 的時候我相信 School 也能比較感受得到你對轉職的決心跟學習的熱枕。
- 學習新技術或遇到問題的時候,一直保持著,如果現在不學好,之後遇到還是得花時間回來學的心態,學習的過程會很扎實。
- 如果你已經錄取了,珍惜開學前的時光,多學一些技術或知識可以降低在 School 期間的痛苦指數。如果開學後你是進度比較領先的同學,可以多幫助進度落後的同學,會發現在教導別人的時候,一來會需要對技術的掌握更深才能解釋的清楚,二來會增加看別人程式碼及 Debug 的速度。
你/妳也想加入 AppWorks School 成為軟體工程師嗎?歡迎直接到以下連結了解更多~
立即申請 Coding Bootcamp Batch #21!開放申請到 2023/03/19
AppWorks School官網:
AppWorks School Facebook:
AppWorks School Instagram: