釐清自我的非本科系新鮮人,在 AppWorks School 成功從商管轉職前端 Batch #15 Front-End

被臨時叫上台發表畢業感想,慌亂程度堪比第一次寫專案¯\_(ツ)_/¯

前言:建立心態

相信你自己辦得到

這條路上,我曾被 PTT 的文章唬得很焦慮、因為存款餘額感到急迫、也因為學習不彰而感到非常挫敗,所以如果看到文章的你正在面臨這些,我想跟你說你並不孤單。

也許沒人能理解你處在什麼樣的困難,但我想跟你說光是踏出這一步嘗試,本身就是件很有勇氣的事。

記得每次快被逼到想要放棄的時候,把自己的初衷跟已經完成的成就拿出來看一看,不停前進會不知不覺達到目標!而我這篇文章,希望也能帶給你堅持下去的動力!

紀錄與分享轉職上不同時期的進修方式

我決定寫下自己的轉職方式,除了是想讓更多人相信努力的價值,也是想分享我如何自我安排與獲得資訊。原本在轉職之初,我打算全程以網路資源自學,但最後申請也成功加入 AppWorks School 的前端班,作為我轉職工程師的最後一哩路。究竟我看到了背後哪些不足、又是如何去補足,希望可以把這些資訊都傳達給正在閱讀的你!

自身背景:過往帶給我的啟發

我是 Weil,發音同 well,這是我決心轉職前取的名字。它除了結合我中文名字的羅馬拼音,同時我也期許未來面對任何挑戰與未知都要相信自己能度過。(If I trust myself, everything would go Weil.)

  • 學歷:國立臺北大學 企業管理學系
  • 其他經歷: 系學會美編 / 社群內容行銷 / 本來大四要去泰國交換一年接觸廣告行銷與設計
  • 加入 AppWorks School 前的身份:大學畢業半年的新鮮人
  • 也許能給你勇氣的 Fun Fact:我國中邏輯 PR 只有 27,現在做類似測驗一樣低分

意外接觸到 Python

我大三的時候曾經自己接案,協助將法律質化內容轉成量化數據與圖表。職涯上本來是決定大四先出國交換,回臺灣再繼續攻讀市調相關的研究所。然而因為疫情的緣故,大四那年我延後了交換計畫,留在台灣繼續完成畢業專題的必修學分。既然暫時出不了國,也沒有額外的實習工作,我決定給自己新挑戰,於是進行第一次撰寫 Python 的旅程。

能在寫程式的挫敗下不斷找到成就感

雖然當時有大神隊友罩著,但從 0 到 1 的學習曲線非常陡,基本上每天都是看文件到半夜,亂拚找到的程式碼,虔誠相信宇宙天地賜的力量能跑出我想要的結果。但也是在這幾個月的過程中,我第一次發現我可以對學習這麼有熱情、可以在這麼操勞的情況下還感受到愉快,於是我非常確定,我之後的工作一定要跟寫程式有關。

但為什麼想轉成前端?

我覺得寫程式最大的魅力是「當有不同想法與技術時,可以用不同流程解決問題,永遠不會被設限、永遠有新的內容可以摸索」。就在快畢業之際,我原本想延續自身領域,因此在尋找其他資源,學習用 Python 做更多模組與自動化來達成數據分析。但這段自學的過程,我意外認識到網頁開發,而其中又有個領域叫做「前端」。

我高中時最想唸得是視覺藝術傳達,雖然考量到現實層面,因此先選擇比較穩定的商管。但我心中仍然對排版充滿執著,也很好奇人是在理解畫面後會產生什麼行動。前端正是一個結合「程式開發、畫面呈現、理解使用者行為」的綜合體工作,完完全全命中了我所有熱情的事物!

決心轉換跑道:快速試誤的方法

軟體業的快速變化與技能眾多,學習初期很容易因為目標發散、學習曲線陡峭、時間與金錢成本等因素,讓人打退堂鼓,甚至懷疑自己根本不可能辦到。而我初期的自學狀況,是根據過往自學統計到實際接案的經驗去嘗試,大致上我整理出了比較通用的 3 個方法。

當然,如果你身邊已經有朋友在軟體業打滾,或是知道對方已經走過這段坎,找對方聊天也是很好的方式!那因為我幾乎沒有這個領域的朋友 (笑著哭最痛),但自己過往在學習其他技能上踩過雷,所以歸納出這些方式:

(一) 從免費資源接觸:不要急著下重本

我一開始先從 YouTube 頻道去接觸前端可能的工作內容,以及基礎的 HTML、CSS、JavaScript。轉職是人生一個很大的轉捩點,除了考量到經濟層面,初期更該先建立自我認知。透過瞭解如何有效蒐集資源,同時也可以從這些過程中,去發現缺少了哪些不足,像是內容會不會太零散而很難吸收、自己在接觸哪一塊東西時特別痛苦、看了影片會不會倦於跟著動手做、又或是學完要怎樣才不容易忘記。

找出學習習慣不光是在釐清轉職的決心,更是這條職涯上長久的生存之計,而免費資源可以很有效幫助建立學習新事物時的大觀點。

(二) 觀察接受挑戰會有什麼心情變化:決心會不會被挫折動搖

除了學習的規劃,我也有直接去投遞前端實習。在台灣雖然非學生找實習確實不常見,但我認為不常見不代表它不可行。重點不在於現階段馬上找到一份工作,而是幫自己找機會去直接接觸未來的相關內容。我認為透過面試與作業,可以最快速知道市場的真實需求,同時減少初期走歪或學得太廣泛的可能性。

我投遞的當時是連前端的三項基礎都沒有,但是收到任務完全是學習上好幾倍困難。對方寄給我一個 document,要求是根據它們指定的前端框架來開發 SPA ,並實現 spec 要求的功能。該功能主要是希望透過使用者輸入的內容去打對方提供的 API,並把內容呈現在畫面上,最後將完成的專案放到 Github,而設計稿和其他附加功能則自由設計。

被洗臉一定會非常難過,但如果在這樣的情況下還能保持學習的步調與轉職的決心,基本上這個嘗試就是一個確定要補足、鎖定哪些技能的 Bonus。同時,之後回過頭再寫同一份作業,那個進步的感受能帶給人非常大的成就感!

(三) 檢視不同學習方式的自律性:建立維持學習的模式

學習的管道非常多元,相信只要在 Google 搜尋 「前端 非本科系 轉職」,後幾天的 FB 或 IG 推播,會有各式各樣的培訓與線上課程拔山倒樹而來 (那個數量之龐大)。

我認為這一步的嘗試,可以透過幾個重點去劃分:

  • 學習上能不能自己歸納與統整 > 資源要怎麼搭配免費與付費的內容
  • 是否需要有人監督與安排進度 > 是不是該加入培訓請人找初期的方向
  • 能負擔的費用與時間 > 該如何消化現實考量會造成的壓力
  • 獨立解決問題的能力 > 需要助教還是能憑 Google 找到解答
  • 語言能力 > 閱讀文件、上課內容、以及能搜尋到的資訊、英打速度
  • 同儕對自身的影響 > 他人的存在會拖累還是激勵自己的上進心

嘗試完自學還是有很多不足很難補齊

我當時沒有額外再找打工跟接案,全心專注在學習上,因此有充分的時間做規劃。我瞭解自己善於整合學習到的東西,也夠自律去安排進度,所以先以線上課程進修;接著考慮到軟體工程師未來發展與常見文件會大量接觸英文,因此只選擇上英文課程來習慣常用辭彙與表達。

綜合下來,在轉職的前半段時期,因為方向很明確,我靠著自己打下不錯的基礎。花了大約 4 個月的時間,HTML、CSS、JavaScript 算有程度、也寫過 React、知道 CSS Module 和 CSS-in-JS 的使用、還碰過一點 node.js,總共累積了大約 1000 小時的學習與 3 個小作品。

後來我發現到自己的進步有些停滯,同時也感受到自己寫專案的侷限與孤獨,於是決定轉換模式,開始又一次的求職計畫,希望能找到實習的機會,再累積半年的實務經驗。而也是在這個階段,我無意間發現到 AppWorks School。

為什麼決定要申請 AppWorks School ?

AppWorks School 的培訓方式:貼近真實工程師工作的訓練強度

在求職的同時,發現光是單純會用技術是很不足的。其他能力像「實際與多人進行版本控制」、「練習為 features 排程」、「refactor 和 testing 觀念」、「模組化程式碼」、「解釋自己領域背後的難點與原理給他人理解」……,這些幾乎都需要靠著「經驗累積的實戰」。同時,「履歷撰寫」與「面試練習」也是轉職的一大挑戰,而培訓的內容正好可以磨練這些能力,這邊列出一些我感想比較多的階段:

  • 遠距線上 (約 1 個月)
    讓完全沒有程式經驗、或有一些經驗的人能建立更扎實的基礎,同時第一次練習在 Github 上建立 repo。完成作業後,會收到導師 review 完的 feedback。更重要的是,如果你覺得作業有可以延伸、或想學習更多內容,也可以跟導師討論更多補足基礎的方向!反之,遇到瓶頸勇敢提出來,大家都會非常熱心的幫忙解答。
  • STYLiSH:電商網站 (約 3 週)
    跟著網站的需求,實際利用技術實踐出來。以網頁的前端來說,除了要精確刻板做出 RWD,同時要知道如何串接 API、研究文件來做金流與第三方驗證 (OAuth)。我自己在這個階段是練習用 JavaScript 的 Object 去根據 features 分拆邏輯的檔案、並利用 Sass 與 BEM 模式管理 CSS。這時候還是先寫 Vanilla JS (不過後來的課程好像有調整成在部分 features 提早使用 React),可以讓基礎更扎實,而且未來要繼續使用框架開發、或是瞭解效能的時候,會因為對 DOM manipulation 的問題、CSS 很難管理、全域污染等的行為特別有感,因而更明白為什麼會有那麼多延伸出來的新技術。
  • 協作練習 Firebase / 自己領域的讀書會 (約 1 週)
    後面會需要自己完成一個全端的專案,所以也會有一個階段讓我們自主研究 Firebase 的功能;同時,由於大家幾乎都是如火如荼完成 STYLiSH,可能還是有很多不熟悉的背後運作原理、以及對 React 與它的相關生態系很陌生,所以也會有自己領域的讀書會,給大家時間去統整學到的東西,並練習怎麼樣去表達這些學習成果。
  • 協作:擴充 STYLiSH 的功能 (約 10 天)
    我自己最喜歡 co-work,因為它有更長的時間能與其他端合作,而且合力構思出想要擴充的功能會有密切的團隊溝通,藉此會看到不同專業有不同在意的點!以 type 來說,網頁前端因為 JavaScript 的彈性,其實完全不會想到要特別在意;但 Andriod 的夥伴會因為語言是強型別,在 null 跟 undefined 上就會有定義不同;而後端的同學也因為要先定義 Scheme、並注意儲存空間的使用,所以很在乎每支 API 是怎麼給資料,同時資料需要定義成什麼型態。這個小問題延伸到實務上,就會有像是「有無庫存」要使用什麼資料結構的討論、以及「修改商品內容」時該怎麼做到更新的方式。
  • 個人專案 (約 5 週)
    每個人都會事前構思出一個作品,AppWorks School 有排時間給大家思考,導師也會再聚集與單獨與大家討論想法、並評估可行性與完整度。整個專案會以 Scrum 跑 5 個 sprint,在這期間,自己必須身兼 PM、UI / UX、全端開發,同時每週會需要上台解釋進度。我在這段時間最辛苦的事情是挑戰新技術,但我非常鼓勵在釐清自己的需求下,多去嘗試能解決問題但沒試過的技術。像我主要功能有需要再額外撰寫 API,同時原本預計能再嘗試 SSR,所以嘗試用 Next.js 作為框架、並因為想穩固型別而選擇以 TypeScript 做為開發語言。
  • 履歷撰寫 & Hiring Partner (約 4 週)
    準備跟自己過往經驗完全不同的履歷與面試實在是很大的挑戰,但在這邊,導師、校務、同學們都可以幫你檢查缺失,陪你練習技術與軟性的應對。同時,因為有與 Hiring Partner 配合,所以多了很多職缺的面試機會,就算沒有成功錄取,也能整理出很多 Feedback,繼續調整自己的狀態,進而找到適合自己的工作。

關於參加 AppWorks School 的總結:成長變成一件溫馨的事

整體而言,我很喜歡 AppWorks School 的這幾個特性,這塊算是做一個小總結與補充:

  • 【技術】有 code review 和 recap,能找到改善方向,進而做出能達到業界水準的完整專案
  • 【技術】累積與其他端協作,練習擴充功能與溝通的機會
  • 【求職】彷彿得到 OAuth,就算沒與 Hiring Partner 成功 Match,在市場也很被企業認可
  • 【求職】能更貼近實務去理解現在技術要求與流程結構的企業參訪
  • 【夥伴】跟一群積極的人相互砥礪、交流技術
  • 【夥伴】也曾經這樣苦過來的學長、姊,大家都很樂意協助解惑與分享心路歷程
畢業後,大家還是會為了補強技術而自發性參與讀書會 (私心很喜歡這張XD)

我是容易因為投入事情就讓自己過勞而不自知的人,所以對我來說,在 AppWorks School 除了給我更多磨練、給了我籌碼向企業展現我的潛力,更大的收穫是有一群夥伴常常提醒我吃飯與睡覺,也會給我精神上的打氣。而且遇到工作上的困難與辛苦,在 AppWorks School 認識的夥伴還是會繼續扶持,也可以向導師詢問職涯上的意見 (我畢業了還是常常找導師喇嘞XD)。因此我相信如果你同樣是認真的人、或願意開始對自己負責的人,這種環境會讓你的效率更加成,也可能帶給你意料之外的啟發與收穫!

--

--