與程式語言的距離──文科生跨域轉職全紀錄(下)

專業科目08_HTML&CSS(老師D)


以期中專題為分界,從這門課開始學習網頁程式相關的內容。

大體來說,學習 HTML 和 CSS 讓人還蠻有成就感的,沒什麼難懂的程式邏輯,就像是用程式碼在畫畫一樣,加個標籤、改個屬性值,畫面就會改變。

某方面來說也令我覺得很像在學英文單字,HTML 作為一個標記語言,有非常多標籤要記,重點是為了節省字數,都是取簡稱,一時之間很難記憶。我是採用較笨的做法,認真整理筆記,把每個標籤的原文都整理成表格,例如 <tr> 意思是 table row,透過這樣的方式來記憶。

班上似乎有一部分的人認為 CSS 很無聊,或者對於刻版面極度沒興趣,隱約聽到有人在 murmur 「之後做專題都是用 Bootstrap 套版,學 CSS 沒用吧~」。當時我不知道什麼是 Bootstrap,只是單純認定既然我都花這麼多學費,每堂課就都要認真上的精神,並沒有輕忽它。

就我這種完完全全沒接觸過前端的人來說,我認為 CSS 還是要認真學。確實在期末專題我們是套用 Bootstrap 沒錯,可是如果沒有前面的 CSS 基礎,我應該也很難上手。


專業科目09_JavaScript(老師E)


這門課可以榮登我在培訓班中最難以理解的課,實在大大出乎我的預料,說好的 JS 很簡單呢!!就同學們的反饋,讓我知道老師的教法恐怕是最大的因素,我就不多說什麼了。

在期末專題中會大量使用到 JS,甚至比 C# 還多,理論上來說是個投資報酬率高的課程,應該要好好學。而且聽說 JS 近年來發展的範圍越來越廣,學了不吃虧!

回想起來,我發現這類「程式語言」的課程往往讓學生較難掌握。就以這個培訓班來說,C# 和 JS 這兩門課都讓人感到困惑。對於 C# 課程,由於我在上課前已有基礎,倒還應付得來;JS 課程則感到很無所適從。

我覺得其中的原因在於實作的缺乏。像 C# 和 JS 這樣的程式語言,通常在課程中僅教授概念和邏輯,練習題大多設計得像解數學題一樣,解題的過程雖讓人有種「理解了」的錯覺,但實際應用時卻發現依然不會用。

例如,C# 直到後來的元件開發課,才開始實作如何操控 WinForm;而在 JS 課程中,對於像我這樣對網頁應用完全沒概念的學員來說,很難想像 JS 如何在網頁程式中應用,因此在學習過程中相當迷茫。直到後來上了一門 Ajax 的課,才比較有概念。

此外,還有一個不容忽視的影響因素就是開發工具的轉變,在這門課我第一次接觸到 VS Code,儘管老師清楚說明每個套件分別是什麼作用,還是讓人霧煞煞,很不能適應,大概是太習慣強大又方便的 Visual Studio 了。後來在 Angular 課也是使用 VS Code,到那時就有比較適應。

由於學得不好,在期末專題時大量仰賴 chatGPT,而它傾向於教導使用者使用 jQuery。我只能說,至少還是有成功將期末專題負責的部分做出來,只是程式碼很醜,讓人頗為心虛。


專業科目10_GIT(導師)


期中專題時小組專案是靠著傻瓜合併法,像是接力般讓檔案在組員間傳遞,用雲端來作版本控制;到了期末專題就要使用 GitHub 作為版控工具。導師會從 Git 開始教起,理解基礎概念後才會教怎麼用 VS 和 GitHub 進行版本控制,以及如何解衝突,不過這部分就教得很簡略,導師表示可能發生的狀況太多太多了,沒辦法作教學,等發生問題再說。

學會使用後,真心覺得太方便了!好希望別的軟體也有這種功能喔!

補充:還好培訓班有讓我們學這項技能,太實用了!在培訓班時我主要用到推分支,合併版本和解衝突都是其他組員負責。雖然我沒有深入使用,但至少有接觸過,這在公司工作時幫了大忙,否則我會擔心搞亂版控。個人認為即使培訓班沒教,也最好能夠自學的技能。


專業科目11_ASP .NET Core MVC(老師F)


最重量級的課程,表定上課時數為 42 小時。事前就知道這是最難也最重要的一門課,嚴陣以待,實際上沒有想像中那麼可怕,但確實是不容易學。

MVC 是一種網頁程式的開發模式,很難說明到底是在學什麼,就是……持續進行認識。我覺得像是在一個大宅邸,這門課的老師就像是長年在這間宅邸服侍的老管家,對於任何細節都瞭若指掌,而我們這群學生是初來乍到的小僕人。

宅邸裡有很多房間,有很多東西。你要東記記、西記記,要知道這個東西是什麼用途,有時還要知道它的上一代是什麼,新品舊物的差異是什麼。

想要達成某件事,你得知道分別要去哪幾個房間拿東西、放東西;要知道在這個房間做設定,會影響到的是那個房間的什麼東西。同時,宅邸還有很多供應商可以呼叫來支援,你還得認識這些商人,知道要怎麼把他們找來,要放在哪個位置。

結論:當小僕人好累。

補充:我現在的公司用的是 ASP.NET,因為程式系統實在太龐大了,我覺得學過 MVC 之後,對理解整個系統有幫助。雖然裡面的子程式很多,但還是比不上 MVC 那種分離的複雜度。


專業科目12_AJAX & RESTfulAPI(老師G)


Ajax 是一種運用數個技術來達到非同步處理的技巧,最直觀可見的差異是「畫面不會刷新」,例如在搜尋引擎輸入文字,下方會出現一個清單提示有哪些常被搜尋的字詞,這便是運用到 Ajax,讓畫面只有局部發生變化,並且不影響使用者繼續輸入文字。

基本上期末專題會用到大量的 Ajax,否則網頁使用的體感實在太差了。這門課並不太難,建議要好好學,許多課堂練習期末專題就會用到,相當實用的課。

可能是因為這個培訓班主要以 MVC 為核心, RESTful API 相對不被重視,老師只花了一堂課(3 小時)來教這部分。雖然期末專題有用到 RESTful API 的概念,但並沒有真正寫出獨立的 WebAPI,讓我對這部分的理解有些一知半解。

在業界,有不少公司採用前後端分離的開發模式。如果想要應徵後端工程師,面試時會對 WebAPI 有一定程度的重視,幾乎都會被問到。每次被問到這個問題時,我總會感到有點尷尬。


專業科目13_PowerBI(老師H)


PowerBI 應該是最簡單的一門課,操作介面和 PPT、Excel 等 Microsoft Office 應用程式類似,只要匯入資料,選擇圖表類型,設定設定,就能變出美觀的圖表,相當方便。

老師會提供帳號給各組,可以使用 PowerBI 來製作圖表嵌入專題中,我原本是有打算用在 Web 後台,但後來來不及做就放棄了。


MVC小專題


上完 PowerBI 課後正好遇上春節假期,導師在 MVC 課結束時就有先宣布,年假期間要用 MVC 製作專題後台,簡單來說就是把之前 Winform 版翻修成 Web 版。這個作業並沒有要求完成度,主要目的是希望同學們不要放個假就忘記 MVC。有鑑於期中專題的慘痛回憶,我決定要在年假期間仔細觀察自己的開發速度,以作為期末專題時的事前規劃參考。

原本以為和期中專題相同的概念,只是改個寫法而已,應該不至於太難,沒想到超級受挫!對前端不熟,連偵錯都手忙腳亂,常常找不出問題在哪,已經被搞到看到 404 就想暴怒的程度;花在畫面排版的時間也相當多,課程安排中沒有正式學習 Bootstrap,只有 Ajax 課時老師有教一點點,所以花費不少時間在研究要怎麼用 Bootstrap 排出我想要的版面。

九天的假期共花了 55 小時左右,平均每天 6 小時,我個人覺得應該沒有其他同學能比得上。但這同時也讓我感到氣餒,花了這麼多時間,成果竟然只有這麼一點點。然而我事後無比感謝認真做這份作業的自己,若沒有這幾天的練習,就變成要在期末專題時才會經歷這種混亂與氣餒,而面臨極大的壓力。


專業科目14_Angular(老師I)


Angular 是現在盛行的三大前端框架之一,有傳聞說它是最難的一個,不過這好像沒有定論,據說是較常用在大型專案。導師表示不要求大家要使用 Angular 來開發,不過建議可以有一兩個頁面是使用 Angular。就結果來看,似乎只有兩三個同學有做。

我必須坦承 Angular 課沒有學得很好,因為這時已經開始在煩惱期末專題,上課有點無法專心。不過 Angular 並沒有我最初想像得那麼難,多少可以感受到前後端分離的好處,只是它和 MVC 真的是完全不同的模式,當我在被 MVC 搞得一個頭兩個大時,實在很難再多花心力另外空出一部分的腦去做 Angular。

實際上我也沒有要走前端工程師的路,我最終沒有使用 Anglar,最大的缺憾是因此沒有去寫獨立的 WebAPI,倒與 Angular 本身無關。


專業科目15_Azure AI Service(老師F)


這是最後一門專業課程,是相對輕鬆的一門課。

簡單來說就是學習如何去使用 Microsoft Azure 提供的一些服務,老師挑選其中幾個讓我們做練習。我個人最想學的是文字分析、語言理解的部分,想要使用 AI 服務來實現履歷與職缺資料的相似性比對,可惜老師沒教到。

最終期末專題我還是有自行研究,使用文字分析中的關鍵字提取功能。要「使用」是非常的簡單,但效果並不好就是了。有很多想做的效果都必須進行模型訓練,這對我來說太耗心力,就簡單地使用關鍵字提取而已。


期末專題


第18周是最後一個有排專業科目的星期,第19周幾乎是空堂,第20-23周是正式的「期末專題課」。最後一周是安排來練習上台發表以及預演,實際上只有三週的時間就要完成專題,中間還要抽空準備履歷、小組專題介紹等等文件,時間相當緊迫。

以我們小組來說,第18周開始決定小組共用的網頁版型,在第19周時將專案切好分版、切好區域,讓大家在第20周就能分工各自去寫。

基於期中專題的陰影以及年假時的狀況觀察,我體認到自己的開發速度並不快,為了解決 Bug 常常需要耗很多時間,而我無法預料到底會遭遇到多少 Bug,於是煩惱一陣子後,決定更動我的構想,把工作媒合的功能集中在學生角度,企業角度就全數割捨掉,應徵流程改成用 Email 寄信。

我以導師的進度安排為基準,來規劃我自己個人的開發時程,並且盡量不安排週末的進度。我的想法是「當成在上班」,「上班時間」認真寫專題,「下班時間」就不要碰程式,讓自己好好休息。而我的「上班時間」是周一到週五,朝九晚九。

實際上周末我還是會寫一點程式,尤其是相對比較不重要的部分,像是履歷匯出成PDF的版面,就是我用周末時間排出來的,美觀程度比數字求職平台還要好,相當讓我得意(但這跟後端工程師能力無關,加不了什麼分數)。

期末專題期間,儘管也是有一些艱難的時刻,但大體來說是處於相當有餘裕的狀態,沒有過分逼迫自己。我在第22周時就只調小細節和做測試而已,對專題已經沒什麼擔憂,轉而對即將到來的結業與面試感到憂慮。


專題發表會與就業媒合


在培訓班的最後一週,我們主要用來進行專題發表會的練習。由於班上人數眾多,每個人的發言時間大約只有 4 分鐘,非常短暫。只要有認真做期末專題,隨便講都能超過 4 分鐘,因此大多數人的問題都是如何刪減講稿以符合時限。

由此可見,專題發表會既重要又不重要。這 4 分鐘的時間其實很難全面展現自己的能力。我個人認為,比起能力的展示,能否好好表達並展現自信更為關鍵。對於能力的展現,面試時才是重點。

專題發表會在上午舉行,中午吃過飯後,下午便是就業媒合會。導師會一直催促大家去和廠商談談,我勉強去了三家,同學們也會彼此交換情報。有的廠商很認真在進行面試,有的則像是來介紹公司,也沒問我什麼問題,甚至直接說有興趣請透過求職平台來投履歷。

以我的個人經驗來看,參加媒合會的廠商比我後來自行去找的公司要親切得多,而且他們對我的作品(期末專題)也更為重視。在我離開培訓班後,共面試了六家公司,只有一家會詢問我專題的相關細節。因此,我的感想是,專題本身未必是最重要的,反而是在開發專題過程中所學到的硬實力和軟實力,才是最關鍵的。面試官未必會深究專題的細節,但如果沒有製作專題的經驗,在回答問題時,所依據的底蘊就會顯得不足。



結語

經過為期五個月的培訓班和一個月的求職過程,我已順利在現在的公司待滿半年,這份工作比我預期的還要適合我。前三個月,由於經驗不足,我常常感到緊張和焦慮,壓力也因此變得很大。不過,現在我的心情已經穩定了許多。

在這系列文章的開頭,我提到過有兩篇前人的心得對我幫助極大,一篇是透過培訓班轉職成功的案例,它讓我獲得激勵;另一篇則是失敗的案例,它讓我提前知曉可能會遇到那些困難。我很感謝他們願意分享出自己的經歷。

對於轉職這件事,究竟是依賴自學還是參加專業培訓班,這個問題一直以來都受到廣泛討論,但最終答案真的因人而異。對我而言,參加規劃好的課程更為合適,即使有些課程的安排和老師的授課方式並不那麼令人滿意。

無論如何,希望這系列文章能對那些正在猶豫是否要透過培訓班轉職,或者已經決定參加培訓班並想提前了解上課樣態的人,提供一些參考價值。

評論