與程式語言的距離──文科生跨域轉職全紀錄(上)
–
前言
大家好,我是Philippa。在33歲時,我成功地從零程式背景轉職成為一名軟體工程師。基於各種考量,我選擇參加資展國際(前身為資策會)的培訓班,為進入這個全新領域做準備。
在選擇培訓班之前,我花了不少時間在網上查找前輩的上課心得分享,其中有兩篇特別讓我深受啟發,於是我也立下目標,希望將自己的轉職歷程完整記錄下來,待結業後公開分享。於是便誕生了這篇文章,希望也能幫助到有類似需求的人。
考量篇幅較長,我將內容分為三部分,方便閱讀。第一篇從我的教育與工作背景說起,闡述我為何選擇轉職以及決定參加培訓班的原因;第二、三篇則依照課程的不同科目,記錄我的上課心得。
個人背景
從小就是標準的文科生,一路讀到師大國文系,畢業後有幾年在準備國考。後來一方面是逐漸感到厭倦,讀書效率低落,另一方面突然遭遇家人意外過世,更加無心讀書,就決定放棄,畢竟不能一直虛耗時間。
在準備國考的那幾年,我曾經嘗試不同的工作型態,有時半工半讀,有時專職備考,或是全職工作之餘兼顧課業。試過網路平台的行政人員、電話客服人員、電子教材的審查員等工作。每次進入一間新公司時,我總想著若工作合適,或許可以乾脆就此在一般企業工作下去,但這些職場我都無法久待。
放棄國考後,幸運地找到一份符合我興趣與能力又很安穩的全職工作,然而這是一份按時計薪的工作,無法帶來升職加薪的機會,在入職之初我便知道這裡不能久待,只是因為找不到合適的發展方向,讓我心裡漸感疲倦,便這樣待了四年之久。
接觸程式的開端
軟體工程師、程式語言,在我印象中是距離非常遙遠的詞彙,從未想過自己會與這些事物產生關聯。而我開始接觸程式,主要來自於兩個契機:
1. RPG Maker
在朋友的提議下,我們一群人組成遊戲製作團隊,開始製作一個靈異解謎探險遊戲。我在這個團隊中最初擔任的是劇本編寫,後來轉去支援系統組,也就是負責操作RPG Maker這個軟體,將遊戲本體實際做出來。
系統組原本有一位成員曾經使用過RPG Maker,由於他工作繁忙,能投入的時間有限,我便從最簡單的工作開始邊做邊學,逐漸熟悉操作。到了遊戲的第二部(這是一個系列作,預計共四部),那位成員決定退出團隊,便剩下我獨挑大樑,我也開始試著研究腳本,調整程式碼以做出更美觀的介面。
話雖如此,操作RPG Maker並不算真正意義上的程式語言學習,修改腳本也只是照著網路上查到的教學一步步執行。不過,這段經驗讓我對變數與迴圈等基本概念有了一些理解。
2. 工程師朋友
提議做遊戲的那位朋友,原本在遊戲公司擔任美術,後來因認為美術職位發展有限而決定轉職。他參加了政府補助的工程師就業培訓班(主要學習Java和Python),並在結訓後順利入職成為初階工程師。朋友入職的公司一開始是用 Java,後來主管認為用 C# 做網站是趨勢,朋友也就邊做邊學 C#,覺得是還蠻好上手的語言。至今他已經工作超過五年,對目前生活相當滿意。
眼見我職涯上的迷茫,他提議我也去學習程式語言,他可以幫忙我的學習。當時我下意識認為領域差距太大,不可能做到,但這個提議在我心中種下了轉職的種子。
試試看也無妨
1. 網路資源自學
2022年初,我對未來的憂慮漸漸浮現。這份領基本時薪的工作已經做兩年半了,差不多要開始另謀出路了吧?可是一想到要「找」工作,就覺得心好累……
當時我依然對自己的職涯感到迷茫,恰好在圖書館展示區看到一本C#程式語言的自學書,腦中勾起朋友曾經的提議,便找出他當時分享的自學資源網址(某位網友寫的教學網誌),想說先試著學看看也無妨。
結果我才學沒多久就眼花撩亂,那篇文章主要講說變數、常數、型別與型別轉換,我只覺得怎麼突然一堆名詞砸到我臉上?
我立刻意識到這樣不行,便在網路上搜尋其他自學教材,找到了YouTube上的「小山的C#教學」。小山老師自述這是為了教朋友而拍攝的影片(讓我頓生好感),每集時間不長,簡單介紹一個概念並安排小練習,難度適中,覺得很適合我!
於是我在年假期間跟著影片學習,年假結束時就看到第26課了,開工以後學習進度變得遲緩,最終只學到第31課。然而對我來說小山影片幫助很大,他讓我真正開始寫下第一行程式碼,讓我感受到學程式語言並不那麼困難。
2. 台大資訊系統訓練班
同樣在2022年初,我正在看小山影片學習的時期,在捷運站內看到台大資訊系統訓練班的海報,課程包括C#程式基礎班。一查之下發現價格僅五千元,心想先靠影片自學,之後有需要可以報名。
幾個月後,我開始認真思考轉職工程師的可能性,於是報名台大的C#程式基礎班,希望能藉此檢驗自己是否適合學程式,更重要的是,我究竟有沒有興趣。
考量到交通問題,我選擇線上課程,也就是實體課程的「錄影版」,課程期間大約兩個月,共計30小時。只要在課程期間觀看影片,並上傳五份作業,以作業分數來計算成績。
這個課程說難不難,說簡單也不簡單。值得肯定的是內容包含許多C# 的基礎知識,還有教到演算法(反而在資展國際沒有教)和物件導向,但可能對於純新手來說還是稍微太難。
課堂上不時以數學題來作範例,對於很久沒接觸數學的人來說會有點迷茫,因為要先理解數學題的意思,才有辦法寫程式來解啊!此外也許是課程是錄影檔的關係,超級有隔閡感,送交出去的作業也沒有回饋,搞不懂到底是寫得好還是不好。
我自覺學習成效沒有很好……很多概念似懂非懂,聽講感覺聽得很順,但寫作業時往往要花很長時間,最後一份作業甚至自己寫不出來,只能先理解老師的解法,再進行調整。
日後回想,最大的問題在於我自己。當時的我不知道,學習程式語言不是用聽就可以懂,非常仰賴學習者自己動手寫code,即使是照著打一次也沒關係。我應該把老師上課演示的範例題也自己寫過一次才能真正理解。
3. 看書自學
最終我仍是順利結業,儘管學習過程稍有挫折,大致來說還算覺得有趣,至少在成功寫出作業的時候頗有成就感的。經此一遭,我覺得自己對程式領域有興趣,但對資質仍缺乏信心。於是在課程結束後一個月左右,我就買了自學書,打算先將自學書學完。不過直到2023年初我才真正開始學習。
挑選自學書時,我參考了網路建議,也實地到圖書館或書店翻閱,確認哪一本比較適合自己,最後選擇《C#程式設計入門與實務:百分百自學手冊》(彭建文著,VS2019版)。
這個時期正好ChatGPT大流行,它真的是個很棒的幫手,書上有些未說清的概念可以問它,遇到Bug或完成練習題後,都可以向它尋求改進建議,不禁感嘆自己真是幸運,選在這個時期學習程式。
我扎實地照著書上的步驟跟著寫一遍範例題,完成每道練習題。整體而言題目不難,但有時題意難以判讀,特別是介面設計部分常需揣摩良久。陣列這一章對我來說稍顯困難,花費特別多時間和腦力在寫練習題上。
自學的進度仰靠自我規範的能力,最終只來得及學完基礎篇(也就是沒有進入到物件導向的部分)。
小山的影片幫助我入門,台大資訊系統班讓我體驗到正統程式語言學習的樣態,直到透過自學書學習,我才感受到自己真正學到東西。如前面所提,寫程式真的非常仰賴親自動手做,當真正理解後才有辦法舉一反三。
培訓班的選擇
原本預計完整自學完這本書,再考慮是否繼續。結果到了四月,由於一個契機,我對轉職的決心突然大增,決定今年一定要辭職去報名就業培訓班。
我開始找尋各種教學機構,包括緯育、資展國際、X School和Build School。
X School的優勢在於無需辭職,可以業餘學習,但我對線上課程的形式有點擔心,怕學習效果不好,而且沒有就業媒合,學費也只便宜一點,最後便排除它。
Build School我忘記淘汰它的原因,呃,好像其中一個理由是課程資訊的網頁排版不太好閱讀,給人一種不太專業的感覺,加上評價少,讓人難以判斷。
最後我鎖定緯育和資展國際兩家,資展國際的前身是資策會,扛著四十年的老招牌,權威性自不用多說;緯育的前身則是中壢資策會,雖然同為「資策會」,但感覺上稍顯資淺,且緯育的Java班似乎較受推崇,但是緯育整體顯得年輕有活力,感覺上課氣氛會比較輕鬆。
我預計十月離職,還有好幾個月的時間可以決定要報名哪一家。有將近五個月的時間都在這兩家之間反覆拉鋸,參加了四次說明會——緯育(線上)、資展國際(現場)、資展國際(現場)、緯育(聯合說明會,現場),也就課程大綱詢問工程師朋友的意見。
最終我選擇的是資展國際,必須要說這兩家實在是不分上下,是基於一些很細小又不理性的理由而讓我選資展,就像擲硬幣班是由機率決定。
後來開始上課後,還是蠻慶幸選擇資展,因為有專屬電腦和固定座位實在很方便!而緯育的方式則是配發筆電,想到每天都要攜帶筆電,就覺得有些麻煩(懶惰鬼)。