對,各位沒有看錯,我的轉行之路時間由第五週一躍至第161週,這全都因為是 Coding Bootcamp 還有後續的求職太艱辛了。
先由結論說起,我現在已經是個堂堂的軟體工程師了!在這三年間,我由完全不懂編程、零基本開始,成功在2020年十二月完成了 App Academy 的 Software Engineering Coding Bootcamp,並在2021年三月順利於一間中型初創企業覓得初級軟體工程師 Associate Software Engineer 的職位。去年十月升遷至中級工程師,一直在同一間公司任職直到現在。
三年前會撰文記錄,很大程度想是希望在旁人的注視和鼓勵下,會更有動力繼續這個旅程。豈料 coding bootcamp 一正式開課,不要說寫文章,差點連吃飯睡覺的時間也沒有。雖然學習編程的過程已像千年前般遙遠,我還是整合一下我的經驗,希望對有意轉職投身 IT 行業的人有助益。
2020年八月: 準備就緒
上回提及過 App Academy 有不同方式支付學費。有最便宜的一次付清 $17,000 USD,但若被退學,則不會退款;另有 Income Sharing Argeement (ISA) 制度是先付部份學費,待畢業及成功找到年收超過 $50000 的相關工作後,才需要繳付餘下的部份。但相應地需繳付的金額就大幅增加,依收入多寡,最多需要支付 $28,000。我那時還是對自己的程度沒什麼信心,最後選擇了節衷的中間方案,先付 $9000,成功後再付最多 $14,000,共 $23,000。(劇透一下,我最後是要付學費天井的。)
2020年九月至十二月: App Academy 正式開課
課程在2020年九月初開始,全長16個星期。本來是逢一至五,朝九晚六要到位於曼克頓的校園上課,但由於 COVID 的關係,則改成了所有人必需全程打開視像鏡頭的 Zoom 遙距授課。 每天早上是講師講習,中午休息過後就是每天輪流和不同同學線上 pair programming,兩人共同作業完成當日的課題。到了五點半則還會有分組討論,總結是日成果,交待需要預習的家課。沒錯!上了九個小時後,還通常有需時一至三個小時不等的預習。每天實際上是最少朝九晚九的馬拉松式學習。如果不是線上授課,我根本沒可能每天擠出兩個小時來通勤再完成課業。我有些同學年紀稍大 (40+),說真的不明白他們是如何面如此消耗體力和精神力的課程。
課程先以 Ruby 教授基本的編程概念,再授現時用途比較廣泛的 JavaScript。目標是能編寫出前後端兼備的一個 fullstack web application。
即使在三年前,Ruby 語言及其 Ruby on Rails Web Framework 已在市場上逐漸失去競爭力,但仍有不少人認為 Ruby 像英文的般顯淺易懂,Ruby on Rails 亦是有嚴謹的 MVC 結構,使用者只需跟從既定的模版,即可簡單作成一個 web application。我個人是對 Ruby 沒有特別的喜惡,至少它與 Python 的相似度令我基本上也能運用 Python。
課程的 Week 1-5 是圍繞 Ruby 的基本概念,到 Week 6-7 才教授 Ruby on Rails 。中途穿插了很基本的 HTML 和 CSS,當我的同學們都在為 CSS 呼天搶地時,我卻能輕鬆完成作業,這時我就已經知道自己應該會偏好前端了。

課程中段 Week 8 開始一轉使用 JavaScript 語言 時,說真的有點不適應。JavaScript 實在有太多無法解釋的奇怪之處了! 有興趣的人可以做一下這個 JS Is Weird 的小測試,看看你有沒有足夠慧根去應對 JS。由於先前已學過基本概念,Week 8-9 是以全速教授和 Week 1-5 基本上一樣的份量,這是我全程覺得最吃不消的地方。
Week 10 開始教授 React 作為前端,配合 Redux 先前學過 Ruby on Rails 後端,終於比較像現代的 web application了。這時亦是八個評核(原以為有14個)的完結。每人有一個不合格的機會,到了第二次不合格,則會被安排至下一學期重新開始或退學。我的班級在開課時有47人,到了最後一個評核完結,只剩下35人。
Week 11 過後,是長達三週的Project 時間。個人的部份首先指定需要用兩週製作一個用 Ruby on Rails + React 複製指定網站的 web application。我在指定項目選了不選太過複雜的 Eventbrite ,沒有遇上大問題,如期完成了大部份功能。
到了 Week 13 ,要一邊學習 MERN stack (MongoDB、Express、React、Node JS),再以此和三個組員合作,在一週多內完成最複雜的原創 fullstack web application。我們以 Tinder 為藍本,設計了一個讓人舉辦派對和搜尋在附近的派對的網頁。在 COVID 橫行的時期想出這個點子,也算是苦中作樂吧。大學時期用了無數個小時排版的我,自告奮勇負責了UI/UX 的設計,再實際使用 React 編程。我們四人在五天內通宵達旦,成功在眾人面前展示成果。

在密集式的 Project 過後,在 Week 14 我們亦重新回到了要聽課的日子。這次教授的是求職技巧:如何寫出不會被電腦篩走的履歷、Cover Letter,排練自我介紹,製作個人 Portfolio 網站等。每人都有一個 Career Coach,但質素良莠不齊。我的同學需要多次請求換人,才得到應有的就業支援。
Week 15 則可謂是最重要的部份——Date Structure and Algorithms (DS&A) 的講習。縱然未必能應用在日後的工作上,大部份的 software engineer 面試均以 DS&A 題目為主。我在這時更肯定了我不太擅長 DS&A。
Week 15 同時亦要用一週構思及製作一個只使用 JavaScript/HTML/CSS 的網頁。我本來是對使用 Three.JS 創作 3D 立體互動式體驗十分有興趣,但做了一個多禮拜卻苦無進展,最後決定大刀闊斧,更改了題目為展示 CSS 特效,以愛麗絲夢遊仙境為題材,進度則突飛猛進,成功在後期補回進度。
Week 16 是繼續各種求職訓練,例如和不同同學輪流飾演面試官,練習對答;當然還有完成上述的各個 projects。非人生活的16個禮拜就這樣完結了!
感想
Full-time coding bootcamp 對於沒有什麼自制力的人(例如我)來說,是不可多得的助力。每日按表操課、目標明確。有導師監督進度,解答疑難。更重要的是有朋輩一起奮鬥,遇上問題大家可以一起思考。尤其是在每日和不同人合作 pair programming 的時間,是練習和各式各樣的人溝通,特別是傳達抽象概念的能力。如果我是選擇 part-time coding bootcamp ,甚至自學,則肯定不能在如此短時間內習得 software engineer。
可是,就讀 coding bootcamp 也不能保證你能成功。我目睹不少同學在很基本的概念上卡住了,之後就無法繼續前進。也有人幾經辛苦撐到畢業,但遲遲找不到工作。我的班級的導師的流失率很高,在16個星期間已經換過好幾個主導師和小組導師。大部份導師都是 App Academy 的畢業生,畢業後馬上在待業期間擔當導師,並沒有實際的 software engineer 工作經驗。一旦找到 software engineer 的工作,就馬上離去。雖然這是人之常情,但學生們常常因此六神無主,要重新適應不同導師。
App Academy 現時仍有內容相同的 Ruby + JavaScript 16週課程,但並無隨時間更新。一些在三年前已經稍為過時的技術,到了現在仍是課程一部份。這也是上述大量聘請畢業生,以及流失率高所玫吧。根本沒有人有時間到職場中汲取最新的技術,更新課程。App Academy 另有長24週的 Remote Immersive 課程,教授 Python + JavaScript。老實說,這個課程應該是更好的選擇。Python 比起 Ruby 通用許多。雖然許多人說只要理解了編程的基本,之後要轉用甚麼語言也是輕而易舉。我開始工作需要由零學習 C# 語言,還是費了一番功夫學習。對於剛投身 software engineering 的人來說,如果一開始就學習了泛用的 Python,求職過程應該就會更得心應手,有更多選擇。
話先說到這。至於 App Academy 課程完結後,到成功找到 software engineer 工作之間的三個月,則待下回分解吧!希望不會又要等個三年才動筆就好。