無程式基礎的文組生,如何成功線上自學網頁開發

先分享我自己的背景,大學主修廣告系,第一份實習在北京廣告公司,畢業後第一份工作也進入了廣告公司,待了一年半後(不過時間倒是像過了三年),決定休息一年,這一年也是我的成年Gap Year。我在2019/10月加入AC,在那之前都沒有接觸過任何的線上課程(coursera & udemy等都無),經過半年,目前已經完成學期一和二,接下來會再繼續參與學期三,不過先就這半年的心路歷程做個小總結。

為什麼會接觸到程式?

  1. 我極愛旅行(咦,有誰不愛哈哈哈),目標是可以在探索世界的同時養活自己,只需要一台電腦就可以不限地域的工作。程式是全球共通語言,在不同國家寫HTML CSS JS都是用同樣的語法,比較可以無痛轉換。
  2. To be honest 工程師從來沒在我的規劃內,朋友的介紹下,報名第一學期的AC試試看,沒想到試出興趣,有種相見恨晚之情節,現在也認真在思考轉職。

為什麼是HTML/CSS/Javascript呢?

程式語言百百種,從寫網頁到app都使用不同的語言,到底要從哪個語言下手哩?

一開始我也不知道。當我告訴身邊的朋友要從JS開始,每個人都會詢問說,咦,為什麼會是選這個呢,當下其實也都支支吾吾回答不出來,自己看完Web開發人員的職涯roadmap,還是不太確定自己接下來的路會長甚麼樣子,標準一問三不知,如果你也是的話,不用擔心、不用慌張,你的心情我很懂,I got you

現在回頭看,我是到學期二才知道自己學習的內容可以應用在哪裡,以及接下來的路會怎麼走、長甚麼樣子。不過在10月那時,慌張也解決不了我的疑問,既然Gap Year都說要多嘗試、多擁抱未知,就先開始再說吧!

2020 熱門程式語言排名,哪個程式語言職缺和需求最多

學期一:邊探索,邊建立程式基本功。

身為一個程式小白,第一學期一開始並沒有直接從網頁開始,而是先了解「程式」到底包含甚麼內容,建立對條件式、運算子、for, while迴圈等的基本概念,主要練習的平台都在repl,像是跟電腦比賽擲骰子、寫簡單的計算式等,先訓練自己的邏輯和數學,很燒腦但很爽。

不過因為進度制的設計,禮拜天23:59之前繳交的作業才有能夠被助教批改(助教又是另一個讓我嘖嘖稱奇的生物,晚點再提),所以禮拜天我都窩在咖啡廳,與作業奮戰直到最後一刻,這種熱血應該指考完之後就沒出現了。

繳交作業後,助教會針對你的寫法提供回饋,例如,A的語法若想更簡潔可以試試看B語法,又或是哪邊有小bug需要修正。同時,也可以在繳交區看到其他同學的作業,所謂條條道路通羅馬,一樣的題型也有各種解法,我都會在繳交區參考同學作法,參考不同的思路,蠻有助於刺激自己的思考方式的,時常會因此學習從沒看過的語法,或是試著了解同學寫程式的邏輯,蠻有趣也收穫很多。

習得一門新技能,學會使用JavaScript網頁開發

如果課程內容有看沒有懂,好想問人怎麼辦?我都直接留言問助教。

某天,我大概晚上11點多在單元下方詢問助教一個問題,隔天早上起來發現政治助教半夜兩點就留言回覆我的疑問了,而且回答得非常詳細,我立刻私訊AC學習助教說,助教該不會都沒有在睡覺吧,可以早上回我沒關係的,學習助教回我,喔沒有拉,助教都半夜才會出沒,不用擔心哈哈哈。

我一直以來都不喜歡問問題,內心小劇場會無限延伸,想說是不是問了蠢問題、或是顯得自己很笨等等,直到有一次我先上網google,覺得越看越不懂,天啊,Stack Overflow的討論區到底在說甚麼,為什麼我看不懂,為什麼看起來很簡單的問題,背後有這麼複雜的解釋。掙扎了一兩天,這個問題一直黏在我腦袋,睡覺在想、走路在想、寫其他作業也在想,好煩躁,真的好想知道為什麼。

逼不得已,只好在留言區送出我的第一個問題,沒過多久,就收到助教的回覆。助教理解我問題的核心,解釋的用詞非常平易近人、淺顯易懂,邏輯清楚,並且一針見血的道破我的疑惑,而若同學有問到與我類似的問題,助教也貼討論串的超連結讓我參考,非常貼心。

之後,我自己養成習慣是看完課程內容,再往下滑看看同學有沒有在討論議題,嘗試先不看助教回覆,自己會如何解答,然後再參與討論,若是看到學習很多或是很有共鳴的討論串,也會針對留言clap(拍手)或是upvote這串留言,讓同學知道我也抱有相同疑惑,然後也謝謝他的提問,當我收到別人的upvote,其實也在幫我建立問問題的自信心。

不過到學習後期,考量從AC畢業後也要跟助教say goodbye,我有意識地想建立自己找答案的能力,所以我會先Google問題的關鍵字,並在Stack Overflow看討論串,若不能解決遇到的問題,或是想了解背後的原因,才會留言詢問助教。

完整了解在ALPHA Camp有效學會寫程式的7大線上學習體驗

若要創一個網頁,需要甚麼工具和元素?HTML / CSS / Javascript初登場!

對於程式運作有基本的概念,就開始來認識HTML / CSS 這兩個網頁基本元素,而實作平台則從Repl切換到Codepen。在我理解,HTML負責內容,而CSS負責美化,缺一不可,在CSS內也有基本的設計語法可以認識,例如,文字要粗體斜體,背景色要白或黑,要不要灰色邊框等,都有對應的語法可寫在CSS內。這些內容看起來簡單,卻非常實用,第一次接觸若沒辦法全部記起來沒關係,不需要焦慮,語法跟語言一樣,要多練習把語法內化,成為你的反射動作,若有一天可以在夢裡面把語法寫出來就成功了(我媽都說如果可以用英文作夢就代表把英文內化了)。

在學期一另一個讓我受用無窮的觀念是Flex box,這關乎到網頁的版面如何排列,想要垂直或是水平排列,想要所有文字置中,或是區塊跟區塊間留有多大的空隙等等,都跟Flexbox息息相關,我到2–3都還回頭複習這些內容,只能說版面也不是那麼聽話,當我越了解才能刻出我想要的畫面,多練手就上手。

學期一的期末驗收!來,動手刻 Facebook Post。

進入學期一的期末作業,從最熟悉的臉書下手,要在Codepen內使用HTML和CSS,並充分運用前面學到的CSS和flexbox概念,刻出如上的畫面。

跟著教案走,會有很清楚的action step,透過這個的過程,我也訓練自己拆解複雜內容的能力,若是硬著頭皮直接來,只會迷失在程式海。在拆解架構上,有許多需要注意的,像是,要思考如何畫wireframe、要先從哪邊下手,每個動作之間的優先順序會是如何等。每一個動作都會使用到前面學習的概念,需要回頭看前面的單元,一開始還蠻挫折,懷疑自己的學習能力和記憶力,不過就如同前面所說,多練手就上手。

最後,我在咖啡廳坐了將近六個小時,東調西調,畫面終於跟臉書一樣了阿,學期一也告一段落了。

經過一個月的休息,我在2020/2月開始學期二8周的馬拉松課程(課程調整後為目前課表上的2–1, 2–2)。

在學期一,我主要使用HTML和CSS語法來手刻臉書的頁面,方法上還是屬於土法煉鋼,不過學期結束時,心裡也有疑惑,如果我想要讓網頁能夠與使用者互動,例如可以按Like或留言等,要如何操作呢?這部分在學期二都會慢慢帶到。

零基礎學會HTML/CSS/Javascript,從程式設計入門開始

學期二:補強Javascript概念,也交給我更多工具,擴大我對網頁的掌握度。

這學期我開始接觸網頁運作背後的各個小螺絲釘,不過相比於學期一的CSS和HTML,觀念上比較抽象,學習起來也比較吃力。

還記得在第一個禮拜,我第一次接觸到Javascript的物件、陣列和函式概念,花了蠻多時間理解這抽象的概念,幾乎都泡在MDN看各種語法的使用,了解不同語法之間使用的差異,例如針對物件和陣列就有不同的方式提取資料,有些會回傳新的陣列、有些會回傳布林值等等。

在這個章節,AC設計一個抽獎的遊戲,身為主辦方的我,要如何透過filter(), find()等,把特定的值提出或踢掉,不得不說,一開始蠻挫折,不確定要使用哪個語法才正確,作業都需要花超過兩個小時才能夠完成,但

透過大量作業實作,我越來越理解語法背後的概念,也較能掌握Javascript。

除了抽象概念,也學習到幾個實用的工具,像是,透過DOM 渲染,Javascript也可以更改HTML的畫面,或是在肺炎疫情爆發時,因為口罩地圖而一再被提起的API,以及如何在不使用CSS而單靠Bootstrap來美化畫面。還有,網頁在電腦和手機上呈現的佈局也會因應裝置而有所調整,因此在互動式響應的章節,最大的學習是凡是從mobile first思考,再對應到不同的media quiery,並且開始會去觀察現在線上的網站如何布局。

當我學習的工具越多,不再像第一學期懵懵懂懂、似懂非懂,我對網頁也有更完整的想像,也知道自己在學甚麼了。

延伸閱讀:Bootstrap 是什麼?給網頁設計新手的Bootstrap 4入門教學

東西會不會,有沒有內化,動手練習就知道了。

學期二有更多的專案實作,雖說教案都會先手把手的領我入門,但若沒有將教案內化,或真正理解內容,若遇到類似的專案,一樣會措手不及。

初認識API時,觀看影片和文字都覺得API很直觀、不難,但落到實作卻不知道要從何開始。事先觀摩了同學的作業後,對於js裡面的架構才有些了解,回頭自己嘗試,就順很多了。

又或者,在剛認識Bootstrap時,只覺得很複雜、接觸新的方式很沒安全感,明明用CSS也可以達到一樣的效果,為什麼要用新的東西,心裡很是抗拒,最主要的原因也是不熟悉,所以不知道要如何運用到我的作業裡。直到在adele歌詞本的作業,我在處理游標的底色變化和指標變化時,先用最熟悉的CSS方式寫,雖然教案建議可以使用pill,但進去Bootstrap頁面卻有點無從下手和看不懂,就先放棄這條路,反而是在觀摩同學的作業時,看到有底色變化的動作,才去研究<a></a>這串的內容,再回去對照 Bootstrap的官方文件,終於看懂這個功能如何使用。

延續學期一,在學期二也有提及迴圈,在處理迴圈遍歷時,我發現若先土法煉鋼的方式把前幾個重複的樣式都寫下來(ex.先把三位女性的資料都羅列下來、把adele歌名都列下來等),再從中去找規律,並用迴圈方式代替,會比直接用迴圈方式硬寫來的清楚、明瞭,相信多練習幾次就可以直接反射性地把迴圈寫掉了。

所以動手刻才真的知道哪邊不熟、哪邊要加強、哪邊要如何運用,真的很需要實作的練習來驗證!

學期二期末專案:專案複雜度提升,學習拆解問題,把大問題拆成小問題,再拆成一個個Action Step

學期二最後的專案需要綜合運用前端功能,打造電影清單。

在這個專案,共有200多部電影要呈現在網頁上,我使用API帶入所有電影的資料,包含電影海報、簡介、上映日期等,並且在上方也有搜尋bar,可使用關鍵字搜尋電影,以及使用者若有喜歡的電影,也可透過chrome的local storage 存在網頁內的favorite頁面。

除此之外,若使用者不喜歡表格式,也可以切換成條列式,並在分頁間切換,瀏覽電影資料。

這次的期末作業,我跟著教案的引導做完八成的內容後,我開一個全新的專案,嘗試自己做一次,發現有很多內容不熟也沒有理解,會卡在某個步驟很久,最後我花了兩到三倍的時間實作,但專案結束後,很踏實,並且在瀏覽網站的時候,會開始思考甚麼樣的體驗會是好的、壞的、哪邊做得好我可以學習等等。

完整學習JavaScript,掌握前後端網頁開發技能

AC領入門,修行在個人

這半年非常充實,我每周約投入15-20小時在電腦前,學習新內容和趕在禮拜天前繳交作業。尤其加入AC大家庭後,不管是在每周的webinar、在留言區看同學的討論,或是AC粉專分享的轉職故事,都很激勵人心,每次debug到快眼花都會打開文章自我鼓勵一下,也謝謝AC助教和團隊的support,對轉職的我來說,是一劑強心針,知道自己並不孤單。

另一方面,也提醒自己不能過度依賴助教和學習教練,而喪失自己走路的能力,因為以後的路還是自己走,要訓練自己解決問題。

目前學期二也告一個段落,我知道有各樣的工具可以讓我使用,也已經具備基本的概念,這些東西要深究絕對都可以繼續往下挖,但這就是我自己的功課了,至少我知道想要做甚麼功能,要怎麼去打關鍵字和找資源,不再是盲人摸象,找不清頭緒,學習如何「定義問題」和「解決問題」是我這半年最大的成長,希望大家都可以達到自己想要的目標!

三分鐘小測驗,找到你自學網頁開發的入口