Astro Camp 紀錄 - 邁向工程師之旅

成為軟體工程師快一個月了,感謝五倍紅寶石的邀請撰稿,讓我能把轉職過程的點點滴滴記錄下來,參加 Astro Camp 絕對是2020年最棒的決定沒有之一!

一、轉職軟體工程師成功的海歸背包客

10年前就想朝著資訊相關工作邁進,但是成為軟體工程師之路並沒有想像中的順遂

我在大學本科系是企業管理學系,本來是個電腦麻瓜,某年夏天因為用壞了老爸的電腦被嚴厲責罵之後心中了出現「我要如何修好一台電腦?」的疑問,而開始對重灌電腦、組裝電腦充滿興趣,還因緣際會成為學校的電腦社長。回首過往,其實蠻感謝自己有那段弄壞電腦的經歷,算是是人生的第一個轉折點。(XD)

大學畢業後報考資訊管理研究所,碩士論文寫的是網路使用者日常線上資訊行為的探勘研究,因為自己程式基礎沒有打得特別好,畢業後也沒有太大的信心走往軟體工程師的業界,而是決定先在台灣大學做國家科學委員會的計劃研究助理,當時上班的業務是使用使用 php + mysql 作網站、資料庫、以及網路管理等,雖然好像什麼都會碰到玩到,但專案規模也很小,自認離真正的軟體工程師還有段距離,也沒有想好好認真面對寫程式這件事情。

真正開始想要認真轉職的原因是後來出國當背包客,趁著年輕到處旅行走走看看(2013-2019,主要待在澳洲與日本),這段除了自己外語能力有顯著提升之外,也開始思考自己該如何提升國際移動的能力及國際競爭力。我在國外認識不少網站工程師朋友,看到他們能透過自己的程式專業技能成功移往海外國家工作,讓我既佩服又羨慕。

在2018年底起了轉職工程師的念頭而在澳洲開始自學Ruby,並且透過參與2019IT邦鐵人賽熟悉Ruby這款語言,為了方便製作學習筆記、也開始學git、並且在GitHub自架我的學習blog,我非常驚訝於Ruby簡潔、優雅的語法,跟以前在學校學習其他語言的感受很不一樣,當時寫完30天修煉Ruby面試精選30題後有幸得到鐵人賽佳作後,決定以Ruby這款語言作為轉職工程師的起點。

當時的我在自己的錢包裡放了一張手寫紙條:「在2019年底前成為Ruby on Rails工程師!」隨時提醒自己莫忘初衷,好好朝著目標前進。

自己覺得自學能力還算不錯的我,上網在Udemy平台買了課程,但是學到Rails框架的時候遇到最大的瓶頸就是我只會照著教材跟著一步一步做出網站,但是沒辦法推導、變化出我想要做的功能。知其然而不知所以然的學習方式,讓我覺得十分挫折。

於是,2019年的年底到了,我沒有順利成為工程師,而是轉於忙碌於人生的其他的事情。

轉職工程師加速器,非 Astro Camp 莫屬!

2020年因為疫情的關係,我回到了台灣,不過成為工程師這項代辦事項仍然在我的清單上還沒有放棄(畢竟當時參加鐵人賽時,我的參賽文章裡都向世界宣告我要努力成為軟體工程師了!)

剛好那陣子參加了五倍紅寶石 Astro Camp 第四屆的Demo Day,當我看到三個月的程式素人經過進鑼密鼓的扎實訓練之後,竟然可以發表厲害的網站作品(如GitHub、程式解題網站、打字遊戲網站等,兼具美感和充滿創意的功能),看到台上發光發熱的學長姊們讓我大受鼓舞,對於自己報名 Astro Camp 這個決定充滿了信心。

Astro Camp 是小班制的教學,在開課前三個月五倍紅寶石的課務就會積極地聯絡學員的狀況,除了提供先修的課程連結、關心我們自習的學習進度之外,也會在班上群聊的channel關心大家的生活大小事,任何問題都可以提出來,我很喜歡這種營造學習型社群的氣氛,同學們之間也會分享上課的心得、提問題,或是看到什麼有趣的內容就分享給大家。五倍的課程都會有上課錄影,所以就算真的因為某些原因沒辦法出席課程,也不會錯過任何重要的課程內容。

Astro Camp :業界首屈一指的課程師資

教HTML和css的Amos老師教切版時非常帥氣,雖然我對於前端一直都不是特別在行,但上完課之後,對於常用的flex排版、inlineblock的比較、position等基礎概念都更佳熟悉。Amos老師啟發我們去觀察各種形形色色網站的架構,讓我們不再只是個只會上網的麻瓜,上完課後,我們會用心去看網站的動線與設計、排版有沒有歪掉、以及RWD的規劃,從此看網站的角度再也不一樣~真是太神奇了!Amos同時還是IT邦鐵人賽的常勝軍,連三年的冠軍作品金魚都能懂的網頁設計入門金魚都能懂的網頁切版教學金魚都能懂的Bootstrap5網頁框架開發是每位網站前端學習者必看的系列影片!

教JavaScript的泰安老師同時熟悉三種語言,上課時會比較js、Ruby和、Elixir的不同寫法,超級酷!但老師帶給我最多收穫的部分,是思考程式語言背後的哲學,因為每個語言之所以被創造出來,都是有它自己的世界觀,用來解決不同情境上的問題。上完泰安老師的課,你會對於「在javascript裡函數是一等公民,可以把函數傳給另一個函數當做一般的參數。」有更深的體會。泰安老師還啟發我們對於Functional Programming的好奇心,在現在我自己公司的專案裡都用得到。 Astro Camp 也安排了五場JavaScript的Workshops,讓我們在一整天的時間研究出用JS刻出能夠在前端跟使用者互動的功能(記帳軟體、代辦事項等小專案),真的做不出來詢問助教都會熱心地給予提示,讓我們像是透過「破關」、「解謎」的步驟,把龐大的功能拆成一個一個的小功能,並且帶領我們一步一步地完成看起來艱難的題目,每次workshop結束後都超累,但是也慢慢地累積「原來這個功能雖然看起來複雜,但我也做得到!」…等身為工程師的成就感。

教git, Ruby和Rails的龍哥是Ruby圈令人尊敬的大大,從以前我在自學Ruby時期就很常看龍哥的文章,因為龍哥會把看起來很難懂的東西解釋地深入淺出。龍哥上課的方式是會帶領我們討論出想要用Rails開發的網站,再一步一步地打造出來這個網站應該有的功能(例如我們這一屆選的是開發網路版的批踢踢PTT),我覺得這樣的設計很棒。龍哥會問我們想學什麼,然後來教學(像我就有提出想學Vue、其他的同學也提出想學Tailwindcss),此外龍哥也會不定期地在晚上直播加課,我們上過兩三次討論javascript。所以上龍哥的課,你要積極提問,知道自己想要什麼,為自己負責。

我覺得龍哥最厲害的是很會利用激將法(?XD)讓我們突破自己的潛能,我們第四屆許多同學都被龍哥推坑參與今年的IT邦鐵人賽,在忙碌的分組專案同時,還要每天連續寫30天IT技術文章不中斷,其實不是一件容易的事。不過在大家的互相勉勵和監督之下,包括我以及大部分同學都憑著一股毅力完賽了,也為後來面試找工作的履歷上,增添一筆努力過後的甜美果實。

我認為像 Astro Camp 這樣的實體課程,跟線上課程最大、也最重要的差異就是進行分組專題製作及為Demo Day的發表做準備了!因為我自己也是被上一屆參加Demo Day的網站作品震撼到,才更有信心加入Astro Camp 進行轉職工程師的計畫。為了準備能讓自己未來面試時能夠驕傲展示的作品,我們每一組無不盡全力準備,在為期一個月的時間裡,每天都從早密集討論、寫code到晚上。

製作畢業專題,準備Demo Day成果發表

分組方式:

課務們會根據面談的結果,將每個team分為學習程度較平均、約四~五人的人數適合團隊上的溝通,每一組也會分配在業界工作的現役工程師為助教。我們這組的助教大大KT已經在軟體開發領域累積快20年的經驗了,只要在開發上遇到問題及困難,我們會帶著自己的想法和卡關的情況跟助教討論,助教都會非常細心、盡力地帶我們找到適合的解決方案。

團隊作品:

我們這組的團隊作品叫做(中文譯名皮老闆),顧名思義就是Project Master - 專案管理大師。那時候想做這個題目的idea很簡單,就是我們可以用自己的專案管理網站 + 工作聯絡室發訊息 + 線上開會的功能,來管理我們自己的Demo Day專案。XD。網站功能的詳情可以參考我們的PMaster GitHub Page

業界講座:

因為我們這屆同學詢問了龍哥關於團隊開發流程的問題,很幸運的是龍哥就透過自己的人脈請來業界非常有名的Ruddy老師來跟我們分享敏捷開發Agile的概念。

敏捷Agile最重要的精神:
「小增量、高迭代;讓使用者儘早參與、並儘早取得回饋」。

我們這組吸取Ruddy老師的講座經驗分享後開始在團隊裡導入Scrum(Scrum這個字的英文是橄欖球的爭球動作,在軟體界沒有翻譯成中文),透過每一期(長度約一到兩週)的衝刺短跑Sprint加快產品開發速度。並且用看板法(Kanban Method)來規劃團隊專案的每張票ticket(有可能是feature,有可能是bug,也有可能是hotfix)的進度。因為這場講座的啟發,我們這組的團隊開發效率很高,從每次sprint開會討論到新功能完畢、測試到部署的時程也很有紀律,大家git commit時的衝突也不常見。整體而言我十分享受這次跟 Astro Camp 同學們一起小組合作專案的經驗,更重要的是,自己進了公司之後也是採用同樣的模式,感謝因為有在 Astro Camp 的分組專題先重複練習過這樣的流程,進業界工作後也無縫接軌,在公司內的sprint時自己能好好的掌握時程,對團隊有所產出和貢獻。:)

除了團隊流程開發外,AstroCamp也請來Keynote製作專業的簡報老師給我們提點修改Demo Day簡報的建議、潤飾簡報時台詞、用語的風格,讓我們能夠在當天上台發表時不會怯場、更有大將之風,最終能把辛苦製作的網站產品,以最高規格呈現給觀眾們看。

準備面試,成為工程師的這一刻終於來臨!

參加完Demo Day成果發表完後並不是結束,而是面試馬拉松的挑戰開始,因為我們的最終目標是要進入業界,成為一個有自信、也有一定技術能量的網站工程師。這次 Astro Camp 跟業界合作的聯合快速面試活動就是在Demo Day的三天後舉行,總共有7家廠商參與。因為AstroCamp在為期三個月課程內也穿插了「職涯講座」、「履歷健檢」、「模擬面試」的活動,因此基本上照著課程的規劃走,除了自己的技術能力大部分主要靠自己努力提升之外,快速面試的那一天,我們其它該有的技能(例如面試的應對、履歷的重點呈現、自己優勢的掌握等軟實力)AstroCamp都在課程進行的過程中,都幫我們一起準備好了!五倍紅寶石公司也有準備一系列的技術題目(俗稱十八銅人)給大家練習,同學們之間也不會藏私,一起互相分享去其他公司面試的心得。

十分幸運的是,雖然我的十八銅人題目還沒做完,但是透過AstroCamp快速面試的活動取得三家廠商的第二次面試機會,得到兩家offer,一個月內順利轉職成功。這一切都非常感謝 Astro Camp 包括講師們、助教、課務,這屆一起打拼的同學們、回來分享的各屆學長姊們等,我才能順利完成邁向工程師之路!

我很喜歡龍哥告訴我們關於Ruby社群的一句話:

MINASWAN: Matz is nice and so we are nice.
Reference: Wiki

寫Ruby的工程師通常是樂於分享、把自己的知識回饋給社群的工程師,然後讓整個社群互相學習、一起往前進步。除了找到工作後,有幸回去跟 Astro Camp 的學弟妹分享自己轉職成功的心路歷程,我也期許自己未來在軟體工程師這條路上能夠持續精進、持續分享,為社群貢獻自己的能力~ 我的工程師故事,未完待續!