在ALPHA Camp的九個月網路開發Bootcamp心路歷程

(本文授權轉載自AC畢業生Danny的部落格

前言與緣起

一轉眼在 AC 的課程就這樣結束了,兩周前的畢業成發很是順利,趁現在記憶猶新的時候紀錄一下這九個月的一些感想,也算是對自己有個交代。

其實當時會踏入 AC 的課程可說是一連串的意外,當時我剛辭掉做為軟體顧問師的工作,打算用之後的時間處理一些小手術並好好想想自己對於工作的追求到底是什麼。基於對教育根深蒂固的熱情,在等候手術的期間我便找了一下台灣幾個做教育相關的新創,這時 ALPHA Camp 的名字再次印入我眼簾。

我對於這個名字並不陌生,這是當時碩班時拜訪的新創之一,Bernard校長當時給我留下了很深很深的印象,當時對於他提出的理念我很是認同,於是便看看目前他們發展的情況,就這樣踏入了AC全端網路開發的課程。

(ALPHA Camp 全端開發課程已全新改版,更彈性化由四學期改為三學期制)

學期一 程式設計入門(2019/2~2019/3)

學期一的課程理所當然地相當基礎,為了培養一些軟體開發的思維。我們首先接觸了軟體開發的一些流程,舉凡像是使用者故事、wireframe等都需要親手繪製過,並試著去分析一下自己喜歡的網站是怎樣的構成。

當時繪製的wireframe

接著我們就開始接觸靜態網頁的設計,也就是基本的HTML & CSS語法,教材會給我們一個大方向以及需要完成的目標,而身為學生的我們則必須在這些提示下自己想辦法完成作業。這部分我一直覺得AC的初衷很實際,想教給我們的從來就不只是語法或是邏輯,而是怎麼去學好這個技能。舉凡像是資料搜尋、有效率的提問、同儕之間的觀摩,比起直接給我們答案,這些管道能讓我們更好的掌握一門新技術。

當時的靜態網頁設計

最後一個階段則是一些程式邏輯的訓練,考慮到大多數學生都是初學者,我們只需要去理解一些程式設計最基本的邏輯,並利用ruby完成一些基本的程式題目,看得出來這部分僅是讓學員初步接觸、淺嘗為止。

simple black jack game

當時在課程的結尾AC還給了我一小份驚喜,在不經意地的情況下被選為當時的暖身挑戰賽獎品得主,得到與眾多助教一對一的code review時間,更加深了我對整個課程的興趣。

學期前端完整技能(2019/3~2019/5)

進入到學期二之後,很明顯的感受到課程無論是內容還是難度都加深了不少。兩個月的課程中我們更進一步的接觸了CSS/HTML的觀念與語法,並對於瀏覽器的渲染原理有了基本的理解,同時也開始接觸Javascript,了解如何利用 Javascript 去操作DOM以及串接第三方服務,可說是真正開始了網路開發的旅途。

試圖用Javascript語法去做羅馬數字的轉換
利用新學到的切版與API串接呈現的電影清單

學期二可謂是AC課程的一個分界點,隨著難度的增加,你可以明顯的看出有些人已經不打算繼續下去。當然不管是同學還是助教都很願意幫忙,AC可說是傾囊相授,他們真的有個很好的助教團隊,只要你肯問,碰到問題時你絕對有辦法得到讓你滿意地回答。

不過學習這種事情從來就不是可以強迫得來的東西, 尤其是線上的學習要產生黏著度就更加困難了 。也因此AC在整個學習過程中不斷的舉辦各式樣的線上活動,一直以來都希望藉由這些活動與助教的及時引導來告訴我們:「這段旅程可能不輕鬆,但你絕對不會是一個人。」我很欣賞他們這樣的態度,我也的確因為參與了各種活動以及與同儕的互動讓我自己得以保持動力繼續前行。

學期後端開發實務(2019/6~2019/7)

進入學期三之後,很快地就有許多感受。第一個感受到的是….同學變少了(笑),接著就是課程難度的進一步提高,對我來說算是課程中第一次有手足無措的感覺,好在有同學與助教的互動才讓我心安一些。

在這個學期我們接觸到了後端環境的開發,我們必須利用node架設最基本的伺服器,並配合mongodb或是mySql資料庫去做一個完整的web application。從中我們需要更進一步的去了解瀏覽器運行、HTTP請求以及MVC架構等種種邏輯,一步步的設計RESTful API並打造基本的CRUD功能。同時也更進一步的接觸git指令,學習版本的控制與部署之類的觀念。

當時開發的幹話產生器

這是我們第一次接觸真正接觸到後端資料庫的運行,同時也是第一次接觸到MVC架構,其中光是資料庫query的語法就讓我們傷透了腦筋,何況後來還加入了關聯式資料庫MySql的課程,一口氣湧入的資訊在當時真的有些難以消化。

這時候同儕間的討論與互相觀摩就真的派上了很大的用場,同樣一串資料你有完全不同的query語法與處理方式,很多時候自己思考時難免陷入一些僵局,完成作業的要求後再去觀摩其他同學的做法時,常常有一種恍然大悟的感覺。

除了同儕間的互相學習之外,助教在這個階段的學習加重了對每個學員的個別指引。我們在學期開始便分為各個小組,並由一位助教做為mentor,針對我們每周的學習情況做出不同的點評,像是點出一些功能之外的開發考量、程式碼重構之類的建議,同時也會點出幾個較為優秀的作品讓大家一同觀摩,比起學期一、二,更有做為群體學習的感覺。

第一個在完整MVC架構下開發的餐廳清單專案

學期業界專案實戰(2019/9~2019/10)

最後一個學期則是更完整的打造一個網路專案,不但加入的框架的學習(Vue),也開始接觸現在常見的前後端分離與SPA網頁開發的流程,一些詳細的心得我都寫在前幾篇的學期四心得,有興趣的可以自己再去看一下~!

對我來說,學期四的重點基本上是聚焦在最後的畢業專案。在這個畢業專案中我們徹底的跑了一遍軟體開發的流程,一次又一次的會議,一步步地完成使用者故事、wireframe、erd以及各種功能的開發。

我想短時間內很難忘記那段時間與兩位夥伴的種種,用了各式樣的工具協同開發,實在是費了太多的心力去完成這一個專案,成品雖不完美,但也確實是我們盡心盡力的作品,一直到最後的產品demo我們都沒有絲毫的鬆懈,是一次很棒的體驗。

繪製的ERD
遠端協作資料夾
Trello專案管理工具
一次又一次的線上會議
成品畫面
為了DEMO精心製作的投影片
為了DEMO精心製作的投影片

延伸閱讀:從零打造「美食預定」電商平台,三人團隊的AC畢業專案心得

中間的額外插曲-AC實習助教體驗

在學期二的一開始便申請加入AC的實習助教團隊,在為期兩個月的時間中體驗一下他們的助教日常。最初的原因其實還是心底的教育魂一直都沒停過,一直以來費盡心思幫助他人學習、掌握新技能總讓我自己熱血沸騰。

看到過往的學生一個個變得更好並主動與我聯繫近況總讓我感到相當的欣慰,讓我更清楚地意識到,其實我們都比自己想像得更加有能力,每個人都有機會變得比過去的自我更加優秀,有時候你只是缺了一點小小的幫助。在這樣的心情下我加入了實習助教的團隊,再次重溫了我的補教生涯(笑)

過程中除了幫學生解決各種疑難雜症(which I love),同時與其它的正式/實習助教也有著各種交集。其中一個特別印象深刻的活動大概就是有段時間舉辦的meet-up活動,每段時間我們會選個主題大家一起討論研究、分享。

其中一周的題目是:「打造自己的Chrome extention!」,想當初我才剛學習沒幾周就要做這樣的東西,著實有些緊張(後來才發現非強制),趕忙翻了許多資料並想想目前生活上有沒有什麼小問題是我可以透過這樣的套件解決的?於是便做了一個簡易的搜尋套件,讓我在youtube上看影片可以更加地偷懶XD,雖然很廢的套件,但還是讓我覺得相當有趣。

套件的使用demo

整體說來助教的體驗還算相當有趣,用心地回復學生問題後收到的回復總讓我很滿足,我想有機會的話應該會回AC助教團隊看看吧!

結語

九個月的時間,絕對不算短,但這樣一路回頭看起來又是這麼的短暫。一路上走來也遇到不少同好,不管是同學、助教還是過往AC的畢業生,我們都因為不同的原因而聚集在AC一同努力奮鬥,但最終我們都希望能成就更好的自己。過程中其實我一直感到相當的徬徨,反覆的質疑自己的選擇,尤其面對來自親人與朋友的質問時更是如此,我最常聽到的疑問不外乎是:「不是早就碩班畢業了嗎?好好的工作不做,怎麼還花錢跟時間去進修?」。

為此我與非常多人聊過這樣的話題,試圖去說服自己並緩解心中的不安,但坦白說這樣的不安從來就沒有消失過。不過最終有一點我是肯定的,

我確實從這樣的旅程中得到了一個實際的技能

比起渾渾噩噩的過日子,我的確有實質性上的成長,至於這樣的成長幅度夠不夠?這個從來就不是任何人能替我定義的,何況學習這種事情也不存在著所謂的終點。即使完成了整個課程,但我心裡非常清楚我還有太多太多需要精進的部分。這是一個無窮盡的學習大坑,但我非常慶幸自己堅持到這裡,至於未來會如何呢? 我並不清楚,但我十足期待!

看Danny成功取得5個工程師offer的求職經驗

最後撥個空間感謝父母的體諒、另一半的鼓勵以及課程中與我合作的夥伴與關心我的AC團隊成員,少了你們中的任何一個都會讓這個過程艱難不少,期待不久後的未來可以向你們分享我成功的喜悅!

想要獲得扎實的成長?3分鐘小測驗找到你的全端開發學習入口