iOS | 跨越科系限制,成為軟體工程師——寫在分享會之前
猶記得去年的五月十七日,匆忙地從公司下班,搭著六點多的小巴轉到市政府捷運站,忐忑的心參加著第七屆招生的行前說明會,留到分享會後,和校長和講者們詢問著自己究竟是否要嘗試看看寫程式這條路。
時間說快不快,一年多後的現在,居然也換我有機會能夠上台和大家分享關於轉職和工程師之路。
在此之前,還先用 Instagram 發問大家會好奇什麼問題,根據大家的問題恰好將分享主軸分成四個部分:學習程式 v.s. 學科背景、自學者經歷、在 School 的生活、工作之後。
寫程式是否需要理科背景
無論是開始接觸程式、學習過程中以及面試時不斷被詢問的課題。
「校長,雖然我是中文系,你覺得我有沒有可能轉職寫程式……」
在分享會後,我有些膽怯的問了 Enid。
「過去也有許多不同科系的學員參與 School,我們在挑選人也不僅是根據科系去做挑選,最重要的還是你對學習程式有多少的熱忱。」
還記得當初 Enid 是這麼回答我。
「那妳覺得身為文組生,訓練邏輯是否會比較弱?妳會怎麼補強或解決?」
在練習模擬面試時,學姊看完我的履歷丟出這個問題。當下真的是腦筋一片空白,越講越心虛,自己不知不覺又落入文組生的框架。
「如果你未來的同事都是資工相關科系背景,你覺得在工作上會有什麼挑戰?你覺得自己有什麼獨特的優勢?」
在進入現在公司前,技術長問了我這個問題。
工作一段時間後,陸續發現很多強者也不是本科系出身,憑藉著他們自身對於程式的熱愛,會花大量的時間不斷自學精進,更何況現在線上資源豐富,自學程式風氣盛行、社群網絡也益加緊密,科系相較起來真的沒那麼重要。
因此,我建議如果對於寫程式好奇,不妨試著找些基礎的資源來玩看看,不要將科系做為自我的限制。
「我明白本科系是透過許多紮實的訓練所奠定而成,現在的我相較本科生就像入門的初心者一樣,但我會努力一步一腳印的練習,不斷學習和精進自己,克服一個個難關;而我自己過去有許多團隊合作的經驗,若有需要跨團隊的合作時,我很樂意擔任溝通這個角色。」
帶著一股初生之犢不畏虎的熱情,回答了技術長的疑問。
自學經歷
比起許多人有先嘗試使用線上資源自學,我第一次接觸 Swift ,就是遠端教學的第一天。
每週 5 -6 部影片,每部 40 分鐘到 2 小時不等,官網資訊寫著「每週約 15–20 小時的學習量」,我卻是每天都花了至少 8 — 10小時坐在電腦前,看完一遍影片、看不懂、再看一遍,反覆看了好幾遍,好不容易抓到感覺了,打開作業練習題……看起來很類似卻無法舉一反三的應用。
在第二週就感到痛苦無比,儘管導師 Luke 在 Slack 溫馨地提醒大家可以發問,但我的問題就是排山倒海而來,前一週還沒吸收完,下個進度再不動工就來不及,連問題該怎麼問都不知道,非常挫折。
還好,這些疑難雜症在駐點後漸漸改善,詢問身邊的同學們,互助找到答案,再真的不行,就 call out 導師…… 學習程式的瓶頸逐漸消弭。
因此,我強烈地建議,如果對學習程式有興趣,可以先從線上資源著手:
- Raywenderlich: https://www.raywenderlich.com/ios
有許多單元與主題式 Project 可練習,其中有 for beginner 入門規劃 - AppCoda: https://www.appcoda.com.tw/hello-world-app-swift/
許多內容為知名文章中文版,相當平易近人 - Swift Programming Language: https://docs.swift.org/swift-book/
Apple 官方 Swift 文件,非常詳盡
如果是完全沒有接觸過任何程式語言的人,推薦可以前兩個著手,比起瞭解「物件導向原理」,手把手的專案實作,相較起來比較容易獲得成就感。
待透過練習培養對程式的基本興趣後,可以再參考官方文件去瞭解基本原理,像是 class, struct、試著寫看看偏邏輯類的 for 迴圈運算。
對自學來說,最痛苦的就是沒有人可以問,Google 大神、StackOverFlow 、線上論壇或社團都將是你的解藥。(延伸閱讀:校正 3 個心態,跨越自學程式門檻)
當然,覺得自己相當幸運,能夠申請到 AppWorks School,將自學的痛苦降到最低。
在 School 的生活
在之前的文章 iOS|這只是開始 · AppWorks School ,有將各階段的學習規劃大致上簡介,在此就先不贅述。
透過各階段的訓練,我覺得在 School 的核心是累積與培養解決問題的能力。
而 School 也提供了最珍貴的資產——「人」。
- 陪你一起練功、解 bug、講屁話的好同學們
- 適時指點迷津的導師們與校長
- 前人種樹、後人乘涼,強大的校友圈
在畢業後,仍有分享會和技術讀書會交流,讓你在學習程式的路上不孤單。
畢業之後,工作之前
四個多月的學習,最後目標就是要找到軟體工程師的工作。
在經歷一個半月的面試期,投遞 40 封履歷、19 家面試,最後拿到 4 個 offer。(延伸閱讀:求職|轉職工程師之面試心路歷程)
相較之前面試公關行銷類,不得不說軟體工程師的面試非常看重技術,白板題、演算法和 Live coding 都經歷過,最長的一場面試還經歷了四個多小時……
這些都是在選擇轉職前的我所未曾想過的,建議若想下定決心以軟體工程師為目標,可以多到 104, Yourator, CakeResume 等網站瀏覽軟體工程師的工作描述(Job Description),更能瞭解工作內容與條件要求。
工作之後
不知不覺,成為 iOS 工程師也八個月了,比起以前的公關加班生活,現在生活日趨規律平穩,比起在 School 生活,也多了一點對軟工的體悟。
@ School
密集開發與時間壓力,常常都是能動就好,有空再重構(但很難有空 XD)
對於學習的態度有時會囫圇吞棗、不求甚解,施了小聰明、自以為繞過難關,但同時也欠下更多的技術債,越來越大洞。
@ Work
由於是開發公司產品,長期維護開發更為重要,所以比起很快做出功能,會更在意程式碼是否可以模組化以及再使用。
同時,學習多看官方文件(WWDC, Document),並且把過去所缺乏的基礎知識如演算法、資料結構等補強,簡而言之,
保持快速學習的能力與動力
我想,這也許才是在工程師這條道路繼續前進之道。
最後,如果現在在學習程式這條路上卡關的人們,很推薦可以參加 AppWorks School :)
Feel free to leave any comment or feedback.
如果覺得文章不錯的話,歡迎幫我拍拍手👏🏻👏🏻👏🏻