我在coding的路上:Alpha Camp 學期一回顧

Kelly CHI
Sep 12, 2022

--

Photo by Mohammad Rahmani on Unsplash

簡介

切入正題之前,我想先回答「為何要學寫程式」這個問題。相信這三個理由大家一定都聽到爛了,但請容許我再說一次:

  • 💡程式語言是世界的共通語言:不管你在美國或是日本,python語法永遠都會是python語法,javascript也不會因為你在法國就變成了bonjourscript。因此,當你學會了程式語言技能,你就獲得了在全世界走跳的門票。身為文組的我,英文能力已經不是問題,若能學習一個全世界通用的技能,那麼國界對我來說將不再是阻礙。
  • 💡比其他產業更合理的薪資待遇:儘管談論薪資有點市儈,但根據調查,軟體工程師的薪資起跑點確實是較高的,有時候junior的薪資甚至會高過於其他產業資深人員的薪資。此外,業界對於軟體工程師的需求一直都很高,隨著更多產業的轉型,未來程式能力仍會是十分搶手的技能。
  • 💡永遠不怕沒有東西可以學:很多職業在做到某個程度之後,便只是日復一日重複同樣的事情。然而軟體產業變化速度非常快,兩三年之間技術可能完全改朝換代,若沒有持續學習的意願,很快便會被時代淘汰。對於喜歡學習各式各樣的事物的我來說,一直有新東西可以學是一件非常正面的事。另外讓我喜歡的一點是,軟體界一直有都很活躍的社群能量,open source projects、Hackathon之類的活動都可以讓你在精進技術的同時,還認識來自四面八方的人們。

在學程式的路上跌跌撞撞

在開始Alpha Camp的學習之前(後面簡稱AC),我已經有過與程式交手的經驗,並不完全是個程式小白。

  • ✏️ 大四時選修python通識課:因為對程式語言感到好奇,加上身邊有朋友也在學python,所以毅然決然報名了這堂與數學、邏輯分不開的通識課 (必須刺激一下已經僵化的文組腦),沒想到開課後意外地投入,每次作業都卯足全力,還完成了兩個小個人專案。這堂課也讓我重新去思考,寫程式在我人生中並非完全不可能的option。
  • ✏️ youtube 彭彭的前端基礎課程:學習了python之後,我對於網頁也開始感到好奇,於是在網路上找到了彭彭的前端教學影片,一邊看一邊跟著練習,也對網頁如何組成有了一個初步的概念。
  • ✏️ Udemy上的 Web Developer Bootcamp 課程:這堂課算是Udemy平台上最受歡迎的課程之一,由講師 Colt Steele 手把手帶你走過全端開發的過程。老實說,我自己並沒有把課程全部看完 (剩下1/4),也沒完成最後的大專案,畢竟這種沒有作業或是進度要求的影音課程,真的很容易怠惰啊~ ̶(̶很̶明̶顯̶就̶是̶自̶己̶自̶制̶力̶不̶夠̶)̶ 但在走過大部分的內容之後,對於全端開發背後到底蘊含著哪些技術也算是有個底了。
(圖1:Udemy課程頁面)

總結過去的程式學習經驗,雖然看似已經學到很多東西,但在缺乏有效練習、進度督促的情況下,能深刻留在腦海中的,實在不多。因此,我希望尋求一個有進度、有作業、且有時間限制的課程,來改善我的學習效率。

Alpha Camp是一個好選擇嗎?

近幾年台灣的軟體線上課程、實體bootcamp持續蓬勃發展,選擇五花八門。在經過多方比較後,我決定試試AC的課程,以下簡述我選擇的理由。

👉 進度制、大量實作練習、助教24小時內回饋

有了前面自學的經驗後,我首先考慮的點就是如何有效改善自己的學習效率。而AC的進度制剛好符合我的需求。例如,學期一分為三週,在正式開始上課之後,內容必須一週週解鎖,無法一開始就狂飆車看完三週的內容。這樣的設計可以保證每週內容都確實吸收後,再進入下一週的學習。當然,AC也為進度較快的同學,貼心準備了「超前進度申請」的機制,只要完成某些條件,就能提早修習下一週的內容。(但最多只能提前一週,不能飆車飆太多XD)

除此之外,AC的課程設計了大量的實作練習,在講解過概念之後,通常都會配合一兩個小習題或作業,去驗收學生對概念的吸收程度。實作在學習程式的過程中是很關鍵的環節,畢竟只看影片就想學會寫程式,就像在旁邊看別人滑板就覺得自己也會滑了一樣。

當然,花時間寫作業卻沒有人批改、給予回饋的話,也無法達到最佳的學習效果。在這方面,AC備有強大的助教大軍(?),在學生繳交作業後24小時內就會進行批改。而助教的批改並非單純的合格、不合格制式化答案,他們會依據學生的答題狀況給予回饋,提出做得好、或需要改善的地方,一些例如coding style的細節也會注意到,幫助學生在答題的過程中建立實務上的好習慣。

(圖2:助教超級用心的回饋)

👉 純線上教學、規劃完善的教學平台、作業觀摩

坊間的軟體bootcamp很多都仍以實體為主,但個人因為未來規劃因素,所以必須選擇一個可以在線上進行的bootcamp,而AC便是首選。不過,雖然課程是純線上進行,規劃完善的教學平台完全不會讓你有繳了錢、看完影片就被放生的感覺。

除了包含文字與影音的教材內容之外,作業繳交、批改、留言討論都是在同一套系統內進行。課堂作業方面,平台不但會記錄你的作業繳交狀況,累積的XP點數,還可以看到所有同學的作業。當作業卡關的時候,可以透過觀摩的方式看看同學是如何解題的,也可以在完成作業之後,從同學的創意中得到啟發,並激勵自己下次一定要做得更好XD 此外,系統會記錄每位同學的發文次數,最常發文的同學還會出現在排行榜中,這樣的正向回饋機制讓同學自然而然養成與其他人線上互動的習慣。

(圖3:可以看到其他同學的作業)

簡而言之,身為一個純線上的bootcamp,AC完全不會讓你有獨自一人孤軍奮鬥的感覺,除了在汪洋中點起盞盞明燈的助教們之外,還有一大群同學與你一起並肩前進。

👉 活躍社群、線上工作坊、直播講座

另一個對於線上bootcamp可能產生的疑慮就是,無法累積社群資源、認識學長姐或其他班級的同學。然而,AC有一個很活躍的Discord社群,幾乎每天都會有學長姊、甚至是已畢業的學員在裡面分享學習進度、回答其他人的問題、提供求職與職缺資訊等等

在一般的課程之外,AC還有不定期的線上工作坊 ( 例如學期一有「前端基礎工作坊」)。助教會帶領學員一起在線上進行實作,實作完可以即時向助教提問、互動,並且會後還有回家作業可以進一步練習。

(圖4:學期一前端基礎工作坊大合照)

直播講座的部分,AC會邀請已經成為資深工程師的校友,或是業界有名的講者來分享關於科技業工作的方方面面。例如:國外企業求職經驗、區塊鏈技術在不同產業的應用等等。講座都是開放給所有人報名的,因此不管是還在觀望中的路人,或是已經在路上的轉職者,都能在講座中有所收穫。

學期一究竟在學什麼呢?

學期一內容是為「完全沒有任何程式基礎」的人所設計,即便我在上課前已經有接觸過程式,在這三週的學習過程中,我仍然有學到不少東西,並且真正覺得自己有把基礎重新打好。

1️⃣ Week 1:電腦與程式語言基礎

重點:什麼是電腦?什麼是程式語言? / 程式語言基礎:變數、資料型別、條件式、迴圈等 / 如何debugging / 認識運算思維與演算法 / 練習寫虛擬碼

了解程式語言卻不了解電腦本身,絕對是件違背常理的事,因此第一週從電腦開始講起,了解為何我們需要程式語言來和電腦溝通,並嘗試用演算法與虛擬碼來模擬電腦的思維模式。這些都是學習程式語言路上很核心的能力。

(圖5:運算思維四步驟)

2️⃣ Week 2:程式碼實作和網頁介面基礎

重點:用JS寫出符合規格的程式 / 思考如何優化演算法 / 實作自己設計出來的演算法 / 認識codepen開發工具/ 學習基礎html和css概念與練習 / 使用DevTools觀察網頁並嘗試修改內容 / 學習開發設計思維 / 了解user story、wireframe的概念並實作

在初步了解程式基礎後,便要學習如何運用程式來解決問題。以「如何有效地猜中數字?」這個問題為例,在拆解問題之後,要先試著把設計出的步驟轉化為清楚的流程圖(如下圖所示)和虛擬碼,最後才是將程式碼實做出來。

(圖6:猜數字流程圖)

這週的後半則是進入網頁三劍客的html與css,畢竟若沒有視覺呈現,網頁就不網頁了啊!然而,這兩者的概念並不難、也很直覺,卻都易學難精,必須要透過大量的觀摩、實作來磨練技巧。

3️⃣ Week 3:網頁切版實戰

重點:如何分析設計稿,定義HTML架構 / 運用外部資源如字體等 / 遵循上至下、左至右順序調整CSS排版與樣式 / 根據設計稿完成簡單的切版任務 / 深入了解CSS重要觀念,例如:display、Flexbox、box-sizing等

如前述,html和css如果沒有大量的實作練習是不會進步的。因此,這周的內容就是跟著教練一步步實作出一個網頁,並在過程當中很自然地吸收重要的觀念和技巧。

教練手把手一起完成的個人履歷頁面

經過教練的指導後,就要試著活用過程中學習到的技巧啦!AC為此安排了一個小作業:我們必須做出與設計圖一樣的畫面。當然,很多人一看到設計稿時腦袋瞬間變得一片空白,因此,作業要求學員從wireframe著手,先分析完頁面的架構後,再進行html和css的實作。

(圖7:依據設計稿畫出的wireframe)
英雄頁面實作成果

前面有提到,學期一有一個「前端基礎工作坊」,而會後的回家作業就是依據規格實做出小卡,也可以加入自己的創意。以下便是我絞盡腦汁,翻遍youtube和google之後做出的成品XD (後來還被選為學習週報的範例,好害羞啊!) 在查找資料、思考解方並努力實作出腦海中理想畫面的過程中,我確實獲得了滿滿的成就感。

前端基礎工作坊會後挑戰

學期的末尾,學員可以自由選擇是否參加期末考來檢核自己的學習成果。已完成前幾週指標作業的學員並不強制參加,但在時間允許的情況之下,非常建議完成期末考的所有題目,因為你可能早就已經忘記最前面學過的內容

畢竟,師父領進門、修行在個人,想不想要紮實地學好所有的內容,只有你自己可以決定。

結語

走完這三週的學習,可以肯定的是,我將要繼續踏上成為工程師的旅途,也謝謝AC幫我重新打好基礎、下定決心。儘管未來的修練還很漫長,但我願意接受所有迎面而來的挑戰!

至於學期一到底推薦什麼樣的人來嘗試呢?我想有三個:

  1. 需要明確進度、作業鞭策的人:迷失在茫茫的教學影片輪迴中,卻不知道到底有沒有學到東西?你需要的是明確的課程進度與規律的學習作息,在AC,每周的進度、作業都事先安排好了,絕對不會再有無所適從的感覺。
  2. 時間地點上有限制,無法上實體課的人:AC是純線上bootcamp,所有的課程、工作坊、講座都是在線上進行,無論身在地球的何處,只要連上網路就可以開始學習。此外,學員中有很多人是在職進修、轉職,AC沒有固定的上課時間,因此便能利用下班的時間學習。
  3. 不知道自己是否對寫程式有興趣的人:學期一的內容是為完全沒有接觸過程式的人所設計,儘管一開始可能需要花點時間適應,但在助教的引導和社群的幫助之下,小白們肯定能走完這趟新手村之旅。當然,如果已經有點基礎,也還是能透過複習與實作去檢視自己的基礎究竟紮實與否。

OK,那就先說到這,我要繼續埋入浩瀚的程式知識之海了,共勉之!

--

--

Kelly CHI

法文系畢業的前端工程師,致力於打造具有美感和良好用戶體驗的介面,同時也是個愛看冷門電影的骨灰級影迷。