AppWorks School 培訓,軟體界的入門票 — Batch#13 Front-End Class

Shanpig
AppWorks School
Published in
15 min readAug 11, 2021
AppWorks School batch#13 培訓大聚餐 ~

About me

我是 David Liao,朋友都叫我山豬 (shanpig),歌友都叫我胖丁 XD

畢業於建中數理資優班、台大化學系。自大一開始便因為同學的介紹認識了程式語言,而後因為興趣上了一些資工的基本課程 (計概、演算法、計結 … 等),對程式設計、計算機有了初步的認識。而後在專題分組時我選了理論分析組,研究題目為 Convolutional-Neural-Network (CNN) 於二維電子光譜上的分析應用。

在一次協助學弟整理備審資料時,突然驚覺自己在化學上的領域,不知不覺越走越偏,似乎已經開始失去興趣,也無法想像未來的工作會是甚麼樣子,在一番權衡下毅然決然離開化學系,朝向我真正有興趣的程式設計走去。

What is AppWorks School

當初聽到 AppWorks School 的第一印象是 — 詐騙。

免錢?無經驗可?五個月短期培訓?還有模擬面試、面試媒合?高達 9 成轉職工程師?有這麼好的事?工程師這麼好當的嗎?

仔細查過 AppWorks School 的來由後,才漸漸清楚這是甚麼樣子的一個機構。AppWorks 其實是由林之晨 (現任台哥大總經理) 創立於 2009 年的創投公司,提供有發展潛力的新創公司初期創業所需的資金挹注。而後,為了提供新創公司更強而有力的後盾,在創立後的隔年,成立 AppWorks Accelerator,提供新創公司的各方面援助,並於 2016 年成立 AppWorks School,培育有潛力的人才成為工程師,為新創公司提供人才方面的協助。,而時至今日,AppWorks 已是東南亞地區最大的初創投公司,在業界的知名度和公信力都是不容小覷的。

之所以免費,是因為軟體界十分缺人,希望能夠為台灣提供有潛力的人才,讓台灣在軟體界的人力能夠持續提升。

Why Front-End?

當初原本只是因為要送禮給不在台北的朋友,因此突發奇想寫了一個靜態網站送他,但後來越做越有興趣,接觸到 JavaScript 後更是打開新世界的大門,一頭栽進網頁的知識中。

當初還不知道 VSCode 神器,是用記事本慢慢刻 HTML 和 CSS,真的是一段非常痛苦但又非常有趣的一段經歷 XD

What can you learn from AppWorks School?

在這裡,你能夠學到成為一個 junior 工程師的基本素養

注意,是 junior 工程師的基本,並非泛指工程師,也並非學完之後就不用繼續進修。成為一個好的工程師所需的能力非常廣,端看個人的發展和選擇。然而這裡能夠給你的,是一張進入軟體界的入門票,讓你有機會躋身軟體開發的行業中。

AppWorks School 經歷

因疫情關係,透過 zoom 拍攝的畢業照

申請過程

申請流程會有兩關,第一關是問卷調查,主要是測驗申請人對於申請的領域了解程度,以及學習熱忱、毅力等等特質。這一關其實也同樣給了申請人一個重新檢視自我的機會:從過去到現在的經歷,讓現在自己變成了甚麼樣子?有哪些特別之處?有那些優點和缺點?明白這些,對於未來的工作和自我提昇都有很大的幫助。

在報名時很貼心的提供了一些學習資源,讓還未接觸過程式的朋友可以先試試水溫,體會一下寫程式的感覺。其實在網路如此發達的現在,只要上網搜尋,就會有上百種程式相關的學習資源,若是學習欲望比較旺盛的人,也可以透過其他方式多多探索。

第二關則是面對面的和校長 Shirney 以及其他導師進行對談。其實在 12 屆時,我就已經有申請過一次培訓,也順利受到面試邀請。但因為當初對於未來的規劃,還處於一個摸索階段,不知道要不要衝刺資工所,還是要直接就業。又加上還未當兵,在培訓後到入職會有蠻長的一段空窗期,因此 Shirney 在考慮過後,認為我在當完兵,甚至是讀完研究所後再來,會是比較恰當的時機。而後當我確定想要走的方向是前端後,便又再次報名 13 屆的培訓。

第二次的面談的時候,我人還在軍營中,必須要透過 Skype 面試,而培訓的第一階段在我退伍前一周就開始了,時間掐的非常緊,加上連續兩次的報名,我更需要拿出這一年我的學習軌跡,因此在對談時非常緊張,很怕拿不到培訓機會 XD

P. S. 據說這個階段的申請人數大約在 300 到 400 人左右,而培訓班級五個班總共約是 45 人,因此錄取率大約是一成左右。

遠距學習 (4 weeks)

培訓的前四週算是給沒有程式經驗的人打基礎,會有一系列課程要你看完,分量其實蠻多的,初學者每天看一些會覺得非常充實。每週要交出一份程式作業,期間有任何問題都可以私訊和老師討論。

我在第一週的時候比較趕,因為我退伍的日子是 2/26,而課程 2/22 就已經開始,也就是一退伍,我就只剩下兩天的時間把第一週的課程看完 + 作業寫完,所以我是直接兩倍速一口氣刷完課程 (16hr) 之後把作業趕出來的 XD。也是因為我前期已經有一些經驗,所以看得比較快,大家沒事還是每天規劃進度看完吧,否則真的會出事 (笑)

這裡的課程來源是 treehouse,一個訂閱制的線上課程平台,School 會讓我們先訂閱一個月,之後到現場會把金額給我們。訂閱者能夠無限制地觀看課程。上面有琳瑯滿目的課程影片,包含前後端、資料庫、框架、coding style、大神的面試影片等等,族繁不及備載,有餘力的朋友真心建議多去探索,既然錢花下去了 (還不是自己的) 就把訂閱的時間利用到極致吧!

STYLiSH — 指定專案練習 (駐點集訓開始) (4 weeks)

駐點開始後就是真正的考驗,因為一上場就是一個完整的前端專案。STYLiSH 是一個完整的購物網站,開發過程中,要學習的包含刻版、API 串接、金流、FB 登入、購物車、事件邏輯、github 使用、CRUD 等等相當有挑戰性的內容。在課程的第一天,你就會知道接下來每一天的進度,而後每一天的六點前,就要把成果給導師審核,之後 merge 到 github。每天早上會有一個簡短的會議,導師會描述一下當天的進度要求,並且提示一下關鍵的技術使用方式、一些需要注意的地方、以及前一天大家遇到的困難等等,之後就是各自的頭痛時間 XD

由於 AppWorks School 是專案導向的培訓,因此完全不會出現系列課程或是單元可以學習,一切由解決問題出發,相當 hardcore,但也因此有大量的探索空間,不會受到課程的限制,反而可以嘗試許多大大小小的實驗,例如我在這次的開發中使用了 treehouse 學到的 mobile-first 開發模式、將程式邏輯以 class-based 方式進行分割、在開發時調整 CSS 避免過大的 CFS 等等 (扯遠了)。

在培訓進入到開發階段時,很多人會出現毫無頭緒的狀況。不要害怕,問就對了。問同學,問導師,就像是在過去唸書求學的時候一樣,這裡就是一間教你如何開發專案和解決問題的學校。

P. S. 學習初期會面對到的是巨大的壓力,以及每天追著進度跑的煩躁,這時身旁的夥伴會是你最好的訴苦對象。此外,來到 AppWorks School,如果是帶著輕鬆轉職的願望來的話,也許需要再多思考一下:如果能夠輕鬆成為工程師,怎麼還會缺人才呢?何況是沒有相關背景的情況下,想要追上他人,付出成倍的努力是必須的;但是同樣,收獲也會是巨大的。

分組專題研討 (3 days)

在連續的專案轟炸後,會安排一段讀書時間,這段時間是為了補足專案開發過程中,可能落掉的觀念和技術。因為開發時大多都是以進度為主,久了之後會漸漸產生「知其然而不知其所以然」的技術債累積,所以需要花一段時間把觀念釐清,未來在學習更複雜的技術時才不會卡關。

Co-working (1 week)

這段時間是很難得的團隊開發的機會。各個班會拆散分組,每一組都會有 APP 端、前後端、以及 data engineer 等等的人員配置,目標是基於 STYLiSH 上,另外開發新的功能,並且要在各平台實作。 在過去自學階段,不太會接觸 APP 端的人,也比較少有機會和他人共同開發,但畢竟術業有專攻,進入職場後,有很大的機率會是以團隊為單位進行開發,在培訓期能夠有這樣的環節非常有幫助。中間的互動、溝通、爭執、協調的經驗,都會在面試和未來工作時派上用場。

個人專案構想 (4 days)

在團隊開發後,就是個人專案準備的時期了,在這段時間,會需要你開始思考專案的內容、方向、可能用到的技術等等,導師會評估專案的可行性和複雜程度給予建議,讓專案的規模在五週內可以完成,但又具有一定挑戰性。

Dive into topic (React React-Router Redux) (3 days)

這大概會是整個培訓中壓力最大的幾天,因為在這三天內,會需要透過框架開發網頁,並且加上 router。之所以要學習框架,也是因為個人專案以及未來工作上,基本配備就是要學會一種框架。React 本身的 lifecycle 邏輯在第一次接觸的時候,非常難懂,也很難理解為甚麼要有這樣的設計,再加上時間壓力,能夠學的深度有限,因此在之後的專案開發中,會需要大量的試錯跟查資料。

期中考

在個人專案開始之前,會有一次的期中考。不過也不用太緊張,只是讓你對於截至目前為止的學習狀況,有一個回顧和統整的機會,實際成績不會影響畢業 XD

這個考試相信會有很多人發現自己的成長,從完全不會程式,到能夠自主開發一個網站,這樣的成就感是非常激勵人心的。

個人專案 (5 weeks)

接下來就是重頭戲 — 個人專案了。在這五週,會使用一種重複迭代的開發流程 — scrum 進行開發,也就是以每週為一個單位,安排一週的工作量,並且預估時程,在一週結束後進行回顧與下週時程規劃。每天早上九點會進行 daily standup 的會議,讓彼此知道各自的進度,可能遇到的困難等等。

由於專案內容每個人都不同,因此會需要大量的自主解決問題的能力,以及如何溝通,讓其他人在不清楚專案細節的情況下瞭解你的困難,並提供協助。遇到任何困難,切記不要卡死,一定要求助或是尋找資源,否則進度容易拖沓,從而導致整個專案的延遲。

另外一方面,這個專案是整個培訓最重要的專案,因為它是你目前的技術的集大成,面試時要面對公司主管的,因此能力許可的狀況下,盡量把它做到最好吧!無論是使用的技術、框架的熟練度、github 版本控制、firebase 使用、額外的實驗性的技術、重構程度,都盡量做好做滿,在面試時你會感謝自己的。

履歷撰寫 (4 days)

個人專案告一段落之後,就要如火如荼的開始面試準備了!第一步,就是製作屬於個人的第一份履歷!

在我們這一屆,多了一位非常厲害的 Job Placement Manager,過去曾在獵頭公司,對於求職路上的各種難題都相當有經驗。在我們撰寫履歷時,給予了相當完整和細心的指導,最後的履歷看起來真的非常專業,能夠極大展現自己的優勢和特質,讓人一看就知道是有備而來!

模擬面試

履歷和專案都有了,接下來就是面試練習。這個階段非常重要,因為第一次面試的狀態和經過無數次面試後的反應是截然不同的,因為面試緊張而導致表現不佳,是最糟糕的事情,因此依定要透過模擬面試熟悉流程!

從這裡也可以看到 AppWorks School 大家庭的溫暖,除了導師給的面試題型練習、導師的模擬面試之外,過去的校友也都紛紛回來幫我們進行面試,而且有許多校友都會相當仔細地列出面試問題,試用個人專案網頁之後提出問題和建議,相當用心,真的很感動。希望未來我也能夠為學弟妹盡一份心力 XD

Hiring day (2 days)

在面試的過程中,便開始陸陸續續有 hiring partner 申請參加 hiring day 的面試媒合了,而我們這一屆相當幸運,前來面試的公司有 26 間!而且後續還有其他公司也繼續邀請面試!這要歸功於我們美麗又專業的 Job Placement Manager ,以及細心教導我們的導師和校長。

由於 AppWorks 是創投公司,因此 hiring partner 也大多都是新創公司,但同樣也有大公司如: KKbox、台哥大、LINE、gogoro 等等。我們在履歷發出之後,會選擇自己有興趣的公司,同時公司也會選定有興趣的人,如果雙方都有興趣的話,就會安排面試。每一場面試在 20 分鐘,是一個相對短的時間,主要目的是進行媒合而不是當下決定錄取,因此之後各個公司內部可能會再安排各自的後續面試。

在面試時,過去五個月的培訓經驗都派上了用場,模擬面試的效果也非常顯著,在與面試官對談的過程完全不會緊張,能夠很流暢的回答每一個問題,並且和面試官有來有往。同時也能夠感受到 AppWorks School 在業界的口碑非常的好,紛紛表示從這裡畢業的人才,在解決問題和學習能力上,都相對較強。

在面試的過程,Job Placement Manager 也持續在追蹤我們的近況,以及提供面試要注意的許多事項及幫助,尤其是談薪資和回覆面試邀請或口頭 offer 的信件,真的十分用心。

因應疫情,透過 zoom 拍攝的畢業照

個人心得

如今我是 hahow 的前端工程師,未來也希望朝向全端發展,萬分感謝這一次 AppWorks School 非常完整的培訓。

由於我並不是完全無經驗開始,因此在學習上相對壓力比較小一些。我反而對於完全沒有程式經驗,透過五個月的密集培訓,最後成功轉職的朋友們相當佩服,由衷讚嘆他們的毅力和決心。同時也警惕自己,不能只是滿足於現狀,而是盡可能地多接觸和嘗試新的方向,持續成長。對於未來要參加培訓的朋友,如果你們也是有相關經驗的,建議可以挑戰一下自己,去引入沒教過的技術、沒學過的語法、沒用過的工具。畢竟,如果只是完成要求,心有餘卻沒有趁這個時間去嘗試,是不是有點可惜了呢?

同時,除了程式以外,我更看到了許多人不同的一面。大家都很勇於發問和求助,這是我過去比較少做的事情,因為身邊沒有相同目標的人,所以大多數時間,都是自己想辦法找資料來解決問題。在這裡卻發現,問對問題、問好問題,也是身為一個開發者不可或缺的能力,尤其是團隊開發,問對問題更是能讓彼此的交流更加順暢。

這一屆的朋友們也有 UIUX 背景的人,在個人專案真的受到他們很多的幫助。過去我很少接觸到設計和美感相關的主題,在網頁設計上相對比較弱勢,對於要如何設計出一個好用又美觀的網頁,經驗非常薄弱。朋友也都非常熱心,教會了我如何挑選配色、字體、頁面如何設計等等基礎的概念,也幫我檢查網頁介面的細部設計,讓我最終的成品相當精緻。

我認為,在這一趟培訓的過程中,真正最大的收穫,是對於自己能力的認知與認可,還有對於繼續前進的路途更加清晰。在過去自學的路上,我對於自己的實力,以及能否成功轉職,都是抱持著很大的疑慮的。因為沒有工作經驗,也沒有拿的出手的專案,很害怕自己終究是井底之蛙,上不了臺面,也不知道自己的能力距離能夠工作還有多少差距。在這裡的培訓讓我了解到自己的狀態,發現原來自己並沒有想像中的差,開始變得更有自信,也同時更清楚未來可以朝向哪些方向發展,而這些也是我來之前最缺乏的。

整體而言,我認為 AppWorks School 的培訓內容是相當精實的,步調走得非常快和緊湊,卻又在合理的範圍內。對初學者而言,這就像是在健身,每一下都沉重無比,在自己承受的邊緣游走,卻又能夠透過意志力撐著,堅持下去就會快速的成長起來。培訓的每一個環節都安排的很恰當,在專案開發後銜接上唸書環節,避免開發疲乏的同時補足技術債;團隊開發階段讓大家熟悉如何與他人共同開發;各式的講座補足程式之外的能力;個人專案的開發除了累積作品集外,透過 scrum 開發也讓我們了解新創公司常見的開發流程。種種的培訓方式讓我們能夠在工作前就累積相當多的經驗。

在中後期開始因為全台三級的原因,培訓改成了全遠距的方式進行。這對於整體的氣氛還是有所影響,因為環境對人的幫助是很大的。不過培訓方式調整得很快,我們透過 slack、zoom、google meet、gather town 等工具進行交流,並沒有因此而影響到培訓的進行。從另一個角度想,這其實也讓我們多了遠距工作的經驗 XD 而且遠距工作更加考驗溝通能力,對於未來一樣是有幫助的。

在培訓的過程,也認識了許多朋友,因為培訓的壓力巨大,也因此有了革命情感般的關係 XD 這對於過去沒有人可以談論技術的我而言,無疑是很大的激勵。

AppWorks School batch#13 大聚餐 ~

在 AppWorks School 培訓,可以學到很多,而且免費。但你會需要經歷一段非常痛苦的時光,以及無數個懷疑自己的夜晚。但這些都將在未來得到回報。每一個抓頭、拍桌、撞牆的日子,都將成為未來成長的養分,支持你繼續往更好的自己前進。

--

--

Shanpig
AppWorks School

不斷挑戰自己可能性的小子,歡迎用各種方式跟我交流!email: shanpigLiao@gmail.com 個人網站:https://www.shanpig.com