Aim, and you’ll get there! — 外文系女孩化身軟體工程師

Weiwei
Aiworks
Published in
13 min readNov 15, 2022
在 AppWorks School 除了學習 coding 外,也有很多 presentation 的練習。

從沒想過我會成為工程師

一路從高中一類組,到大學文組科系畢業的我,真的從沒想過有一天自己會變成寫 code 的軟體工程師XD,在 AppWorks School 這五個月就像一場奇幻之旅,有扎實到不行的技術洗禮、從睜眼到閉眼都在想 code 要怎麼寫的實作挑戰(不對,甚至有時候也會夢到 code XD)、超有耐心教導轉職小白的導師群、還有一群好夥伴一起闖關打怪。畢業後也成為工程師一段時間了,決定來分享一下心路歷程,裡面夾雜了對 School 課程的描述,還有一些我自己的心得。

自我介紹

政大歐語系法文組 / 外交系 雙主修,法國交換回來後,因興趣而在科技業擔任數位行銷職兩年多,除了大學通識課外,沒有其他的程式基礎。因為工作上會需要使用外包公司寫好的網頁模組,覺得有些功能不夠好用,因此萌生了「那不如我自己來寫網站吧!」的念頭,自學一段時間後發現自己還滿喜歡的,因此立馬申請了 AppWorks School 轉職培訓班,也幸運的錄取了!

立即申請 Coding Bootcamp Batch #20!開放申請到 2022/12/18

在AppWorks School的日子就像這張圖,電腦配咖啡是基本!

AppWorks School課程

AppWorks School 的培訓是由一個月的遠距上課加上四個月的駐點訓練組合而成,內容非常精煉,並且是非常專案導向的,較不像坊間培訓班以上課為主,而是告訴學員要完成的進度事項,讓學員自行去摸索,養成「自主學習」與「解決問題」的能力。

一個月的遠端課程

培訓的第一個階段,是為期四週的遠距學習,目的是讓學員對相應領域的程式語言有基礎的了解,我是前端班,所以課程內容有像是 HTML / CSS / JavaScript / Git與 Github 的使用 / 前端框架 React 等,也會有一點關於後端的練習,讓你可以了解一點後端 server 的實作方式。在這個階段會搭配線上的學習資源,導師會在每週開始時告訴大家要完成的作業,以及要觀看的線上學習資源,我們必須在週日前繳交。

四個月的駐點培訓

進到 School 後首先是一個讓人期待同時又很緊張的開學典禮,認識了許多未來將一起學習的朋友,還有親切的導師團,聽著台上校長描述未來可能會有的挑戰,內心真的有點挫,但也很期待 XD

  • 寫一個服飾電商網站(三週內)

上午還在開學典禮,下午就馬上開始實戰了!第一天下午主要是環境的設置,包含熟悉 Github、Git 版本控制,像是 fork, clone, commit, pull, push在幹嘛等等,還記得第一天大家光是熟悉 git 的流程就已經哇哇叫。第二天馬上迎來第一階段的挑戰:在三週內寫出一個完整的服飾電商網站!包含整個網站的畫面刻板、響應式網頁、API 串接、各個頁面 CRUD 的邏輯(小知識:C為Create、R為Read、U為Update、D為Delete)、各個產品的資訊呈現與庫存控管、金流 SDK 串接、社群登入 SDK 串接、基礎的 React 框架使用、SEO 的優化等,我印象最深刻的就是切版了,導師會把設計師的設計圖用成半透明的狀態,直接放到我們切好的畫面,哪裡有跑掉或者尺寸不對,馬上一目瞭然!那時真的覺得老師好狠阿~XD,不過也是因此讓我們切版的能力大大提升!

在 School 每天早上會有一個大約一小時的班級 Morning Recap,各班導師針對前一天的內容做一些講解,以及說明當天要完成的進度,大家如果有問題也可以藉機會提出,算是一個可以釐清一些實作時遇到的難題、跟老師同學討論的時光。

  • Firebase — Firestore 專案(三天)

第二階段是要做 Firebase Firestore 資料庫的練習,因為之後要完整做一個個人專案,網頁前端、iOS、Android 等泛前端的同學也會需要有資料庫來儲存與讀取資料等,所以這個階段主要是讓泛前端的同學們熟悉 Firebase Firestore 資料庫的操作邏輯,包含怎麼存入、讀取資料、如何即時抓取資料庫的更新資料,會把學員們進行分組(每組會有前端 + iOS + Android)在前一天公布要做的進度,並在隔天進行驗收。

  • Topic Discussion 分組專題研討(五天)

Topic Discussion又分成了 phase1 跟 phase2,主要就是分組進行技術專題研究與報告,一組大約三人左右,每個 phase 就是花1–2天去研究老師給的題目,並在第三天進行報告。我記得我們這組拿到的題目是

  • Event Loop
  • How browser rendering works
  • Canvas, SVG, WebGL
  • React context
  • Truthy, falsy, ternary operator / Short-circuit evaluation / Optional Chaining operator / Nullish coalescing operator
  • How to handle asynchronous code using promise & async/await ?

其他還有像是 OOP, FP, Google Map API實作、Restful API、browser devTools、Big O Notation 等非常多元的題目,每組的報告時間大概是 1–1.5小時。

全班一起研究與討論新技術的感覺很棒。
  • Co-Work:前端+後端+ APP 端 + Data 合作開發專案(十天)

現在回想起來,我覺得這個階段是我最喜歡也最有挑戰性的!在這個階段會是整屆的學員打散分組,每組裡面會有前端、後端、APP 端的同學,大家要一起針對 STYLiSH 這個服飾電商的專案再進行功能或介面擴充,在宣布分組後,會跟組員相見歡稍微認識一下,接著各組會被分配到不同的會議室(School 的會議室都是用科技大廠命名,像是 Microsoft、Apple、Google等,非常有趣~),組員就開始進行 brainstorm,我們組先是在白板上寫了很多,像是「評價系統、服飾模糊搜尋、顏色推薦、聊天室、優惠小遊戲、跑馬燈、直播、AR/VR 服飾穿搭預覽、記錄使用者喜好推薦服飾、優惠券、限時折扣、商品放大檢視功能…等」,在與導師團討論過後,我們選擇了幾個功能準備著手進行。

Co-work 過程其實滿有趣,可以學習怎麼跟其他領域的工程師合作,了解其他領域的工程師在意的點在哪邊?這也是往後在職場非常可能碰到的。例如:APP 端跟網頁前端在畫面呈現時各自可能碰到什麼問題;後端要開哪些API 給前端使用;前端要傳什麼資料到後端與 Data 端,以記錄使用者喜好,並演算與推薦相應產品。

在協作專案時我負責的其中一個功能是直播,因為是第一次實作直播的功能,我記得那時候真的卡了好久,一直沒辦法串上音訊跟視訊,又有時間的壓力,沒做出來也覺得對不起組員,所以崩潰了好幾天 QWQ,所幸最後在組員跟導師的一同努力下,把功能生出來了!甚至我們最後還加上了「語音辨識字幕」,直播主說的話會透過偵測直接出現在畫面上!還有另外一個我負責的有趣功能是“Styler”,我們結合了 Tinder 的概念,讓使用者可以左右滑喜歡跟不喜歡的服飾,並根據使用者滑的結果來推薦其他相似服飾。

  • Personal Project:個人專案(五週)

個人專案真的是大魔王!不管是技術上還是身心靈上都是XD,在此階段我們要在五週內生出一個完完整整的網站,從畫面設計、功能發想與實作、資料存取、使用者管理….等等全部自己完成,成品必須要有相當的水準,畢竟是未來求職要拿來 demo 的。

導師會分享學長姐專案給我們參考,也可以到 AppWorks school 官網查看過往學長姐的作品(有興趣的可點此查看),在規劃好後,導師會一對一給予回饋,確認專案主題後,接著就要做網站架構的三分鐘提案報告給整屆的導師與學員們聽。

我的個人專案主題是旅遊跟行程規劃的網站!整個個人專案是透過敏捷開發(Agile)的流程,跑 Scrum 的方式,每週會有 sprint planning 的時間,plan 好後要放到 trello上面,並切每天 morning recap 時要跟導師與全班報告前日與當日的進度,每一週為一個 Sprint,第二週的時候會需要 demo 你Sprint1 做的成果,以此類推,而每一個 Sprint 學校都會有相應的達成標準希望我們達成,例如希望在 Sprint1 時就做好核心功能、Sprint3 時要做好基本切版….等等,並且有留最後一個 Sprint 做測試與細修,結束後就是 Final demo了!

個人專案 Final Demo,要在三分鐘內介紹完整個網站,台下都是優秀的同學們,超緊張~

履歷撰寫 + 求職階段

在 AppWorks School 的最後一個月主要就是履歷的撰寫+模擬面試,履歷撰寫好後,導師團與校務會協助精修,AppWorks School 團隊真的非常細心,整個履歷至少會過三次以上,確保內容跟排版都是最完美的狀態!接下來每天早上會有題庫的答題錄音練習,緊接著陸續會有兩次的校友模擬面試,由學長姐回來幫我們面試,考的題目可能會有 live coding、技術問答、behavior 問答等,在這一連串的準備告一段落後,就準備上戰場囉!!

實際求職有分跟 Hiring Partner 還有自己外投的,我有實際進入面試的約有十間公司,最終有拿到 offer 的有五個,年薪資約落在 64–80 萬之間。整個統整下來我覺得有幾點比較想分享的:

  • 我覺得 School 為我們做的技術面試準備是非常充分的!所以在最後面試準備階段有好好的衝刺,且對自己個人專案技術有充分的了解的話,基本上面試問的問題應該都不會有太大的問題~不用太擔心!
  • 面試前可以多多少少刷一些 leetcode 或者找網路上的 coding 題目來做!因為我們寫個人專案是直接做一個網站,反而比較少接觸到簡短的題目,而面試的時候考的都是比較小的題目(演算法、coding邏輯、array method、string method 等),突然要從個人專案的思維轉成解題的思維,可能會有點卡,所以可以刷點題目讓自己的腦袋處於解題的狀態!
  • 工程師面試跟其他職位面試滿不一樣的,時間跟精神成本都是比較高的,有些會先發 coding 作業(可能是要你一週完成一項作業,或者是那種點進去就開始計時的線上測驗),透過 coding 作業確認你基礎技術是 OK 的才進下一關。接下來一般可能會有 1–2 關的技術面試,考驗你對前端的各種技術與原理的熟悉程度,也會有一些關於未來跟團隊合作的 behavior 題目。在通過技術面試後,才會是跟人資面談。通常都會有兩到三次以上的面試時間,還滿耗體力跟腦力的,所以我建議大家投遞時可以篩選一下自己喜歡的,不要瘋狂海投,不然如果全部都進面試,會滿辛苦~
  • 面試過程中,有些面試者可能會刻意質疑你「非本科生」的身份,覺得這樣理論基礎不足之類的,我覺得遇到這個問題不用怕,因為我認為「非本科生」反而是轉職者的優勢~我們具備了除了本科系以外的其他領域知識,現在的市場上很多公司都希望求職者可以具備多元領域的知識,才能在跨部門合作與溝通時更加順暢。

最後心得

畢業了,才是真正的開始:

目前也 onboard 一小小小段時間了,我深刻的體悟到,從 AppWorks School畢業+找到工作,並不是一個結束,反而是一個開始,因為軟體工程師要學的東西實在是太多了!且許多技術不停地在推陳出新,我們需要時時刻刻充實自己才能。「自主學習」與「解決問題」的能力是 School 給大家最棒的禮物,在工作後會遇到更多問題,會有更多沒碰過的技術要學,就是這兩個禮物發揮作用的時刻了~

要相信自己,有熱情一定能做到:

有一些朋友看到我轉職後也有點心動,不過還是很多人會有許許多多的擔憂,害怕自己做不到、害怕放棄現在的工作之類的,我覺得如果你知道自己對程式語言有興趣有熱忱,那就不要想太多,像我這樣純文組的程式小白都能做到,大家一定也都可以。不過相對的,如果你不確定自己是不是對程式語言有熱忱,也不要一頭栽入XD,不然五個月會非常痛苦~可以先找些線上資源來學習,看看自己是否真的喜歡,再做決定唷!

AppWorks School 最美的風景也是人XD:

我覺得在 School 除了學習到 coding 與程式語言相關的技術外,最大的收穫就是認識了一群很棒的人!同學們人都超好,一起互相扶持,一起崩潰也一起成長、還有導師跟其他團隊成員們也都非常 nice,非常有耐心的帶領與教導我們,也會一直關心我們的狀態,很用心的安排各個階段的課程與活動。即使畢業了大家也還是會一起約出來玩,聊聊彼此工作的近況,有遇到什麼問題也都會一起討論,School 也常常舉辦活動讓校友們可以回娘家跟大家相聚。「一日 School 人,終生 School 魂 」

每天寫 code 寫到笑不出來,畢業這天終於露出燦爛的笑容XD!

--

--

Weiwei
Aiworks
Writer for

Front-End Developer|熱愛學習與分享、熱愛甜點的軟體工程師!