網站開發學習之路(1)— 初心者上路
tags: ALPHAcamp
Javascript
CSS
撰文動機:
記錄自學程式,參與線上課程與ALPHAcamp的心得。
撰文對象:
嘗試自學程式,但不確定方向。以及想了解Alphacamp課程的人。
一、個人背景與轉職動機(簡述)
轉職成為軟體工程師?為何會走到這一步呢?
簡單來說是因為喜歡「聽音樂」,我過去一直很想要從事與音樂相關的工作,在欠缺靠音樂吃飯的才能下,我前後從事音響雜誌編輯和音響門市店長的工作。加總起來有6年經歷。這兩份工作使我成長許多,其中包括對音樂重播設備的操作與評析能力、音樂製作品質的識別能力、數位音訊與空間聲學的基礎,其他在門市管理、業務能力、文編、攝影、影像編輯、行銷也有一些經驗。
然而音響業一直是蠻封閉的領域,它在三四十年前曾發展得很蓬勃,直到21世紀初mp3開始流行後,市場逐漸出現了變化,變化到大多數的音響品牌跟不上潮流,現在除了少數知名品牌,大多的中小企業都已經被集團併購或歇業。在我進到這個領域時,已經是夕陽產業了。
儘管如此,音樂產業仍是蓬勃發展。 聽音樂的人並沒有減少,反而比過去還多,只是這些聽眾不見得會走到Hi Fi音響這塊,因為科技的進步滿足了大多人聽音樂的需求。為了更認識聽眾市場,我決定離開原本待的行業,希望透過網站開發的學習,深化自己的興趣和專長,並以軟體工程師的身份,回到自己喜歡的音樂產業。
要怎麼成為網站開發者呢?第一步就是要學習程式語言。
二、 體驗:Udemy、Laracasts
我先從線上課程開始認識語言,了解到網站從無到有的過程,第一步是先從php開始學起。後來開始接觸SQL、html和CSS,近期才藉著Alphacamp接觸到Javascript。先說我有實際參與的課程:
2–1. Udemy課程:
Php for Beginners — Become a PHP Master -CMS Project
這個課程主要是利用PHP和MySQL做出內容管理系統,是Udemy的暢銷課程,評價看起來很好,但我不建議從頭跟到尾,挑重點看就好。
主要原因是現在大多數由原生PHP開發出來的網站都很老舊。現在大多數的新創PHP網站都會使用到框架,市面上也有其他完善的CMS系統(如Wordpress)。而此課程還是用傳統方式在寫code,課程內容和講解方式也非常鬆散。無法實際在業界使用。這堂課唯一的優點是便宜(但浪費時間),講師也蠻熱心回答課程問題。
The Complete 2020 Web Development Bootcamp
這門課程的CP值應該算是Udemy數一數二高的,內容十分全面且豐富(看課程簡介便知),導師的英語口音聽起來很舒服,也有許多挑戰供學員實作。如果想入門前端和一部分後端的開發,這門課很適合初學者作為學習主軸。
目前我的學習主軸是Alphacamp課程,此門便成為次要的補充教材。
JS: Understanding the Weird Parts
選這門課的原因是為了加深對Javascript的掌握。畢竟Javascript是弱型態語言,若不夠了解JS,可能會遇到很多疑問和挫折。影片中基本上談得深入淺出,但建議已經有點基礎的人來看,以免有看沒有懂,甚至會錯意。此門也是我的補充教材。
2–2. Laracasts課程
The PHP Practitioner
Laravel是我第一個接觸的語言框架,而Laracasts是此框架的官方教學網站,在實際接觸到Laravel之前,我按著Laracasts的推薦先上這門特別的課,課程中的講師用原生PHP,先說明基本的程式語法、以及SQL語言,後段便從無到有寫出一個MVC架構,加深我對框架的印象。另外講師Jeffrey的程式碼相當簡潔,教學節奏明快,經常需要暫停/重看才跟得上進度。
由於我PHP的基本功還不夠深,對開發環境也很陌生,因此這門課令我卡蠻久的,不一定能夠理解每個環節,對在開發環境的設定也感到苦手。但仍是值得完成它。
Laravel From Scratch
相較於The PHP Practitioner,這門課相對起來較簡單,基本上照著做就可以學會怎麼使用Laravel,課程尾端還教人怎麼做Tweeter Clone。
上述兩堂Laracasts都是免費的,要付款購買會員才能夠看其他課程。而Laracasts不僅提供PHP和Laravel教學,也有其他主題(見下圖)。這應該是我未來主要的學習平台。目標是用Laravel架一個自己的部落格,並完善功能和使用介面。
三、進一步學習:ALPHAcamp
我從八月中開始上Alphacamp(以下簡稱AC)的課程,剛結束學期一,目前正要進行第二學期的課程。前面有提到AC是我目前學習的主要平台,最初我是抱著體驗的心態來上課,實際上收穫不少。
以下列舉幾點AC的特點:
3–1. 學習教練與助教
自學者最大的阻礙,應該就是自身惰性(至少以我個人來說)。會讓人以為跟著影片學就會算懂了,而不會主動去練習,或是去做side project。在AC的學習平台中,每週都會有進度和作業要求,經過三周的體驗,我認為AC的課程內容強度剛好,不會難到令人囫圇吞棗,也不會簡單到枯燥乏味,尤其是實作這塊,有助教的回饋真的感覺滿踏實的。
舉例來說:助教會針對我的作業做批改:
儘管的程式碼功能正常,但同時也會要求學員花心思提高程式的易讀性,包含找出適合的變數命名,減少重覆的邏輯、縮小迴圈次數。這是我在其他線上課程較難接觸到的部分。
3–2. 教學內容規劃和編排
AC在第一學期的內容規劃注重「認識程式語言」,目的是讓學員粗淺體驗一下自己是否喜歡寫程式,因此課程規劃 著重在觀念引導、練習工具上手、基本語法介紹,以及實作練習。 上述幾個方向會按照預估學習時間和強度做編排。整體來說,AC的學期一課程比較像是通識課。
對於像我這種非本科要轉職的人來說,在寫程式前學會一些資工方面的素養蠻重要,比如說,課程中有提演算法,實作程式碼之前,會要求學員先用撰寫虛擬碼統整邏輯,然後再去實作程式碼。 網頁視覺部分,則先讓學員練習使用DevTools和繪製Wireframe,了解如何用Html拆解網頁設計圖的架構。再用CSS完成網頁的視覺設計。不得不說這樣的規劃,很能幫助學員獲得成就感。
認識到AC的課程規劃後,對我來說Udemy、Udacity之類的線上課程網站,會更適合學習目的更明確的學員,因為他們知道自己還缺哪一項專業,上課是為了補充自己的專業知識。畢竟初學者大多都沒有什麼方向,連自己要往後端或前端學習都拿不定主意。
3–3. 工作坊和講座
學期一有兩次工作坊,分為「開學工作坊」和「前端基礎工作坊」。
「開學工作坊」著重在說明課程規劃,也會帶學員用Jacascript寫小程式,會後也有作業供學員挑戰。問問題也有助教回答,覺得很用心。
第二次工作坊的感受比較普通,雖然有帶學員實作,但感覺是課程規劃中就可以講解的事情,不太需要特別開工作坊。表單裡面填寫的意見也沒有得到回饋,會後提交的作業也沒有獲得批改。我比較期待的是在工作坊中學到一些自己上網google也很難領會的事情。否則我寧願把時間拿來自學。再快速瀏覽一下會後紀錄。
最後是講座部分,學期一當中有邀請到一位物理博士來分享她的創業歷程。但因為有事情排不開只聽了一半,會後沒有提供影片給同學複習,算是滿可惜的。
第二次工作坊課後練習:
3–4. 學期一心得
學期一的課程費用是3000元,單就CP值來說,我覺得很值得參加AC規劃的課程。初學者能夠藉著這堂課,了解到心態上哪裡還沒有預備好(你真的想做軟體工程師嗎?),除此之外也會更認識自己的特質(適合前端工作或後端?)
對於在全時間預備轉職,而且有一點基礎的人來說,AC這堂課可以稍微感受一下不一樣的課程規劃,來反思自己的自學規劃有沒有需要調整。對本身有正職工作的學員來說,學期一課程的Loading也不重,如果趕不上進度,也有重讀機會。
目前我已經報名學期2–1,大致上看了一下課程規劃,整體強度和內容比學期一稍硬一些,很期待未來一個月的學習。
下一步:前端或後端?
回到一開始的轉職目標:希望回到自己喜歡的產業。
基本上跟音樂相關的都是我努力的目標,像是Streaming、Podcast。聽起來有點執著,畢竟過去聽了好多年的音樂,寫了幾十萬字的音響評測,累積出大量的聆聽心得,後來在門市店長的工作中,也獲得帶團隊的經驗與業務技巧。而我清楚知道這些經驗要轉換成價值,需要有紮實的技術才能夠實現。這是我的長期目標。
中期目標呢?希望我能夠成為一位合格的工程師,是有潛力而值得培養的轉職者。從前端到後端相關領域都有概念,並且在其中一塊較為專精許多。也能夠理解比較深入的程式語言概念。
最後是短期目標:完成一到兩件Side Project,一個是能夠播放串流音樂的網頁,另一個是部落格。接著,成功找到工作。然而要完成短期目標,取得自己的作品集之前,這代表我必須能夠串連前後端技能,但實際上我該怎麼分配學習前後端的比重呢?找工作的方向該以前端或後端為主?
相信當我完成學期2課程,會對前後端的發展方向更有想法。屆時會另外寫一篇文章,說明我怎麼釐清方向,以及過程中的掙扎。
最後引用一段聖經經文來鼓勵自己:
那賜諸般恩典的神曾在基督裡召你們,得享他永遠的榮耀,等你們暫受苦難之後,必要親自成全你們,堅固你們,賜力量給你們。
彼得前書 5:10