AppWorks School Campus Program #3 心得分享

Tzu Hsuan Wang
AppWorks School
Published in
9 min readJun 28, 2023

文|校友 Vincent

嗨!我是 AppWorks School Campus Program#3 的校友 Vincent,這篇文章最主要會著重於介紹我們那屆的課程內容和一些個人的心得,因為每一屆的課程安排都一直有變化,所以等真的進去後學程後,課程內容和安排可能又會不太一樣了。

至於面試準備的話,只有兩項建議:
其一是報名表單要認真寫。
其二是要瞭解自己,回歸到自身,去釐清自己申請的動機。

Campus Program 是 AppWorks School 針對資訊相關科系的在學學生所提供的免費課程,不過也有開放非本科但有相關累積的學生參加!而與其說 AppWorks School 提供的是課程,不如說提供的是一個「環境」,一個適合學習的環境,如果把這個環境比擬為一個水缸,那動機就是一塊海綿,海綿越大,能吸到的水也就越多。因此,動機的強烈很大的影響到你能吸收多少。另外就是,Campus Program 時程是在學期間的,建議大家在報名前先確定自己有大把的時間可以投入到學程中,不然其實學校也忙的話,蠻有可能兩邊都炸開的。

那接下來我們就進入到課程介紹吧!

整體而言學程可以分為三大部分:

  1. 個人基礎奠基(Remote 和指定專案練習,約 8 週)
  2. 團隊開發(團隊專案實作和實務練習,約 4 週)
  3. 個人專案(約 3 週)

Remote(3 weeks)

Remote 我會把它稱為「營地開墾期」,走錯路是常有的事,作業做的很茫然也很正常,畢竟就是到了一個人生地不熟的地方嘛,迷路正常的很。在這段期間有什麼疑問其實都可以問導師,導師也會很樂意回答我們的問題。

Created with mage.space (AI generate art tool)

Remote 約三週的時間,這段時間我們還不用去 Appworks School 報到,先遠端完成作業即可。三週的內容大致上就是讓你熟悉一下 AWS 的 EC2 和 RDS 以及 Git、Github 怎麼操作,然後對 JS、HTML 和 CSS 的基礎認識,還有對怎麼用 Nginx、Express 和 React 起一個前後端的服務有些頭緒,能順利跑起來等等。

從營地開墾期開始,我會建議大家寫一些筆記,像是紀錄如何起一台 EC2 instance 的設定步驟(SSH key pair、Security Group、Elastic IP 等等)這些筆記能幫自己在之後要做同樣的事情時能加速許多,而不用再耗費時間重新搜索已經搜索過的資訊。

指定專案練習(5 weeks)

Remote 這個營地開墾期結束後,你的「營地」即便還不太完全,但也足夠你繼續探索下去了。

Created with mage.space (AI Generate Art Tool)

再來會進到我稱為「拓荒期」的指定專案練習階段,這個階段會從之前的基礎之上再去學習、擴張更多新東西。而指定專案練習呢,做的事情就是復刻一個完整的電商網站出來,大致可以分為三大塊:後端、DevOps、前端。時間分配上是:前兩週在寫後端,中間一週學習把服務包成 Docker、做 CI/CD,最後兩週則是在寫前端。

後端的這兩週,主要的語言和框架是Node JS 和 Express,除了會實作資料的CRUD(新增、讀取、修改、刪除)的功能之外,也會用 Swagger 寫 API 文件、用 JWT 做 Authentication、以及串 S3 來儲存大型檔案、串接外部第三方金流服務等等。在這個階段熟悉整個 Gitflow 的流程會是怎麼樣子的。

DevOps 這週,主要會用 YAML 來寫一些設定檔,這週要把之前的後端服務、Nginx 都容器化(containerization),而後用 Docker 來運行,如果心有餘力的話,還可以透過 Github Action 來做 CI/CD。這週也會碰到一點點前端,然後也會把這個前端服務容器化一同跑在 Docker 上。

最後前端的這兩週,主要用到的 library 會是 React,要做的事就是照著導師提供的 Wireframe(可以理解為網站樣貌的稿圖)一步步把整個網站看的到的部分給呈現出來,這階段其實可以用一些元件庫、CSS 框架來加快刻前端的速度。

在拓荒期,迷路踩坑也是常有的事,如寫後端的時候往往只有 Spec 可以參照,但如何實作就沒有具體的指示,就像是告訴你要走到哪,但是沒有告訴你怎麼走到那個地方一樣,如何實作就全仰賴我們自己發揮了。聽起來好像很可怕,但透過大量的搜尋資訊還有勇敢的嘗試,不斷地嘗試實作、修正,荒煙蔓草中也就出現了一條小徑,營地也越加完善,變得比較像樣了,你能掌握的工具也就逐漸多了起來。

這階段也別忘記可以尋求導師和同學們的協助,尤其時同學,多跟同學交流相當的有趣,無論是向同學學習或是教同學,自己都能有所收益。

團隊專案實作(2 weeks)

當我們已經熟悉如何從無到有開闢一塊新的營地之後,我們就要來和其他人一同開疆闢土了,不僅如此,還要幫營地新添各種設施。

團隊專案實作在做的事,就是要三到四個人共同合作,從之前做的電商網站的 Sample Code 去新增一些功能,然後會用一個叫做 Trello 的工具來做專案管理。那要新增哪些功能呢?導師有準備一大張功能難度對應表,把各種功能分成複雜、中等、簡易三種,複雜功能就如:串加密貨幣、爬蟲比價、客服等功能,也可以想一些功能表上沒有的酷功能來和導師討論。那整個流程會從功能發想開始,然後會有一次的功能提案,也就是向導師、全班宣告我們要做哪些功能、時程的安排會是如何。接著就是開發時間,最後就會向全班 Demo 成果。

實務練習(2 weeks)

我把這個階段稱為九人小組,基本上要做的事情跟團隊專案有些類似,但要做的功能是導師已經指定好的,且團隊規模更大,大家也會有明確的職務分工,分成:前端、後端、SRE 和 QA,還有人會兼職 PM 的角色。我在這階段負責的職務是 SRE,SRE 白話來說,就是在「搭舞台」,如果前後端服務是演員的話,那 SRE 就是負責搭建舞台、設置佈景、燈光等等的人,確保演員能無後顧之憂的表演。換句話說,SRE 就是在提供基礎設施給團隊中的其他成員使用。

這個階段雖然協作的人變多了,但要做的事也變得更複雜些,所以不見得會比較輕鬆。像我們兩組的 SRE 都想碰一個叫做 K8s 的工具,但因為我們都沒碰過,所以其實也花蠻多時間在研究和不斷的嘗試,撞牆了無數次,且又有時間壓力下,在那段期間真的有些緊繃,但把牆撞通之後的舒暢感又會讓人想再來一次。

期中考

雖然在 AppWorks School 的學習方式和在學校很不一樣,但還是要透過一個方法來檢核大家的學習成果,因此在 AppWorks School 還是會有期中考的, 而期中考又分為企業期中考和遠距期中考。

企業期中考據我所知是每一屆的內容都會更動,考試內容不會刁難我們,就是平常心去就好了,且測驗的結果不會納入畢業考量。而遠距期中考則是會需要一整個白天的時間來應考,且如其名,考試是不需要去 School 報到的,可以自己待在舒適的地方考。而題目的話,可以選考前端的題目或後端的題目(但我們這一屆全員都選擇後端的題目),如果都有跟上前面專案的進度的話,期中考不會有什麼太大的問題的。

個人專案實作(3 weeks)

這階段就是讓我們自由發揮了,不再有指引、不再有已經定好的明確目標,而是要自己找主題來做。我們會運用先前所學把心目中想做的服務給實作出來,這階段也會先提 proposal,導師會和我們討論專案可行度並給出建議,期間導師也會多次確認專案進度,最後便是向全班同學和導師 demo 了。

我們這屆的主題,有以 MarkDown 為主的履歷編輯器、刷題群組網站、串 ChatGPT 的面試問題分享論壇、留學經驗分享論壇、面試推薦、Graph-based 筆記、社團的教案管理系統、系隊的管理系統、筆記電商網站、旅遊規劃、記帳程式、日記紀錄、PDF 文件簽章、追星資訊整合網站。可以看的出來,個人專案的主題多半是從自己的生活出發,而我的興趣之一是攝影,所以做的是一個能分析攝影習慣並推薦鏡頭的網站,有興趣的話可以看一下:https://lensfinder4u.com

不定期工作坊、企業參訪

這邊也要提一下,在學程中 School 也會安排一些不定期的工作坊,像是舒壓工作坊、職涯探索工作坊、Code Review 工作坊、Design Thinking 工作坊、QA 工作坊等等。讓大家也能多學習一些除了技術、硬技能以外的一些知識和觀點,我個人是覺得相當不錯。

而關於企業參訪的部分,我們在學程的初期也有去參訪 91APP 和 CloudMile 這兩家企業,稍微撇見了作為軟體工程師以後的去處會是什麼樣子的,也對不同商業模式的公司多了些認識。

結語

最後就讓我抒發一些想法吧!

Created with mage.space (AI Generate Art Tool)

很慶幸自己當初有報名 Campus Program,也很幸運的能參與到其中,School 所提供的學習環境實屬難得,有一大部分是因為在這裡遇到的同學們,如果沒有這些同學相互討論、在閒暇時間一同聊聊天、一同分享實作時的甘苦,在 School 的期間會少掉不少樂趣。在結業那天,同班的同學提到,在我們班有感受到所謂的「班級感」,我覺得描述的相當貼切。

很感謝校務 Carolyn、Luna 在為我們安排各項活動之餘還要關照我們每個人的狀況;也很感謝導師 Addie、Frank、John,除了自己的工作外還要來帶我們這些毛頭小鬼,在大半夜的時候為我們解惑。大家如果以後能參與到 Campus Program 中,應該也會見到他們的,可以先把名字記著😂。

最後,有一點體悟是,在軟體工程這一塊要學的東西永遠學不完,新的工具、技術總是不斷出現;而舊的總是在被取代、淘汰。如果說這些工具和技術是廣袤的海上的那層層疊疊的浪,那能讓自己持續立足於浪之上的,便是一塊適合自己的衝浪板,我認為,找到一個適合自己的學習方法,並能一直從浪中找到樂趣,是走軟體工程這條路所不可或缺的。

希望這篇文章有幫助到你,無論是讓你更了解 Campus Program 亦或是燃起熱情都好!

--

--