強化自學心態:利用課程作業設定目標,取得更高成就感

本文是 AC 學員蕭宇廷記錄自己今年 10 月的 ALPHA Camp「程式設計入門」課程的完課心得,我們獲得授權刊登,原文來自他的「Oui oui croissant 網頁開發養成計畫」系列文章。

為什麼想要學寫程式?

大學畢業後,我先到某間小出版社擔任英文與法文的翻譯,準備兵單下來登入國軍 online。結束了四個月的兵役之後,習得了放空與割草的技能 (誤),但是對於職涯規劃完全沒有丁點想法。

我大學就讀法文系,周遭有不少同學陸續至法國、英國研讀碩士學位,其中又以商學院為主,但想到自己身上還背負著大學學貸,我決定先留在台灣工作一陣子再看看,結果誤打誤撞進入了一間 Google 經銷商,廣義來說也算軟體產業吧。

由於我是純文科畢業,起初完全不懂 DNS、IMAP/POP3、API 這些陌生概念,和客戶對談也時常因為專業知識不足而備感失落,不過秉持著我就爛、也許明天就會被開除的精神, 我上網慢慢補充了這些知識,意外地開始進入狀況,甚至後來還能協助其他同事。總結來說,我在這間公司得到了以下收穫:

  • 查閱官方文件的能力與耐心:Google 許多產品/服務都有詳盡的說明文件,每當客戶遇到問題時,我們都需要先以官方文件為查詢起點。文件中若有陌生的技術協定或概念,我也養成了先自行上網研究,真的無法消化才冒昧請教技術團隊的習慣。我也是在這時候認識了 Stack Overflow。
  • 與客戶確認需求、問題的能力:無論是支援性質的服務,或是客製化的開發服務,都必須透過提問的方式了解客戶 (包含老闆) 究竟想要什麼。不敢說我已經是這方面的專家了,但的確從這份工作進步了不少。
  • 撰寫說明文件的能力:公司在 AI 蔚為風潮之後,推出了 Google Workspace 與 ChatGPT 的整合服務,上架到 Google Workspace Marketplace 上面,而我則被委派了說明影片、Help Center,以及 marketplace overview 的上架任務。
Google Workspace Marketplace 的說明頁面,有了生成式 AI 協助,就算是英文內容也能快速產出 ❤️
▲ Google Workspace Marketplace 的說明頁面,有了生成式 AI 協助,就算是英文內容也能快速產出

除了以上幾點之外,由於平時需要和技術團隊協作,開啟了我對於軟體開發的眼界。雖然公司的技術團隊規模不大,但每位工程師都非常熱心助人,我也被他們創造性的工作方式深深吸引。剛好公司有購入 Google Apps Script 的書籍,於是我憑藉著「就當作多學一個語言吧」的心態,人生首次打開 IDE。

嘗試學習寫程式

Google Apps Script 是 Google 基於 JavaScript 所開發出來的平台,能讓我們客製化做出 Google Workspace 服務的自動化小工具。跟著課本實作下來,我簡單做出了用 Google 試算表大量寄信等等的自動化模組,中間也因為好奇背後的運作方式,上網零碎地學習了一些 JavaScript 語法。

也是在這時候朋友推薦了 ALPHA Camp 的課程,我試用之後覺得非常有趣,就跟了幾階段的付費課程,可惜後續因為工作份量越來越重,程式學習的進度就此中斷,不過薪資因為努力工作提升不少,所以也不算全盤皆輸啦。

直到近期在這間的工作告一段落了,正好手上也有想要產出的 side project,我才重新燃起程式學習的念頭。距離上回寫程式也快兩年了, 加上先前的學習體驗非常不錯,我決定再度跳上 ALPHA Camp 的學習列車。

目前仍不確定自己是否能從非本科轉職成軟體工程師,但至少能確定我對於寫程式不反感,也滿喜歡軟體產業的工作方式,就算最後沒有轉職成功,這些學得的開發能力,相信對我日後的職涯也會有所幫助。剛好趁著待業這段時間邊休息邊重新當個學生,想想也是滿開心的。

延伸閱讀:Side Project 作品集怎麼做?程式初學者就從解決生活問題開始! – ALPHA Camp

ALPHA Camp Course 1 課程內容

ALPHA Camp Course 1(程式設計入門)先帶大家認識了程式語言、虛擬碼、運算思維等等一般人比較陌生的概念,然後就從基本的變數、運算子、條件式等等切入 JavaScript 的語法學習,不過這階段僅單純是把結果列印在 console 上面而已。

十回合內猜對數字,被第 23 行的猜測範圍最小值耽擱了一段時間 🫠
▲ 十回合內猜對數字,被第 23 行的猜測範圍最小值耽擱了一段時間 🫠

接下來的課程將重心轉移至 HTML、CSS 的基本知識、切版實作等等所見及所得的世界。由於我前一份工作也有 WordPress 網站共同編輯的經驗,所以學起來沒有太過吃力。順帶一提,前份工作中的網站是用 Bulma 這套 CSS 框架,當時只知道它能讓網站變漂亮,直到 ALPHA Camp 教授 Bootstrap 之後,我才終於領會 Bulma 到底在幹嘛 😓

上份工作的網站使用 Bulma,不過 AC 教的是 Bootstrap~
▲ 上份工作的網站使用 Bulma,不過 AC 教的是 Bootstrap

除了上述的硬技術之外,ALPHA Camp 也在課程中穿插了自學的心態培養、如何查找技術文件、產品設計等主題,這部分我非常喜歡,有時候也忍不住應對到先前的工作經驗,冒出原來是這樣啊的感覺。舉例來說,當 AC 介紹 wireframe 時我才恍然大悟,原來之前用小畫家把網站更新圖呈現給工程師是多麼「可愛」的事情,真的是術業有專攻。

印象最深刻的作業

Course 1 有個作業是做出鋼鐵人的名片,主要驗收基本的 wireframe 以及切版。這個作業除了基礎規格之後還開放大家附加額外功能,於是我給了自己兩個任務:

  • 滑鼠移動到鋼鐵人照片時要有文字浮出特效
  • 加入社群媒體的按鈕,並在滑鼠移上去時出現文字橫條
滑鼠移動到鋼鐵人照片後會冒出淺黑遮罩以及文字浮現
滑鼠移動到社群按鈕上面後,會出現文字橫條和 icon 效果
▲ 滑鼠移動到社群按鈕上面後,會出現文字橫條和 icon 效果

這兩個額外功能都需要用到 position 以及 z-index 的概念,但寫作業當下 ALPHA Camp 尚未提及,所以我直接透過關鍵字上網查詢,找到差不多的案例就把程式碼直接複製貼上,結果當然是慘不忍睹囉。

後續我定下心去看複製過來的程式碼,發現裡面有許多 ALPHA Camp 沒教過的屬性,原先本想放棄,但當時剛好是國慶連假,想著孫中山革命十一次才成功的精神 (幹話),我將那些陌生的屬性名稱輸入到 MDN 裡面耐心學習。經過好幾小時的 Google 以及修改之後,竟然真的把預期的效果呈現出來了。

時常耳聞他人說寫程式就是將網路上別人的程式碼複製貼上,經過這次經驗,我才深刻體會到若欠缺基本知識,複製過來的程式碼也是坨糨糊罷了。前人們的善意與誠品固然能夠傳承,但前提是我們要先將自己培養至足以接收的程度才行。

延伸閱讀:自學程式,怎樣才知道學會了?做 Side Project 與寫技術部落格建立信心! – ALPHA Camp

若欠缺基本知識,複製過來的程式碼也只不過是坨糨糊罷了......
▲ 若欠缺基本知識,複製過來的程式碼也只不過是坨糨糊罷了……

結論

Course 1 的課程整體來說滿輕鬆愉快的,但是看其他同學的經驗分享,Course 2(JavaScript 前端開發實作)似乎就是痛苦的開端了。後續不強求自己能成為萬中選一的頂尖高手或練武奇才,只期許能保持苦中作樂的精神就好。

最近學到一句泰文好實用:ผมไม่อยากทำงานตลอดชีวิต(我不想工作一輩子)

JavaScript 課程:邁向全端開發軟體工程師之路|ALPHA Camp