自學轉行軟體工程師 — 網路教材、工具篇

我花了九個月的時間,在加州矽谷自學轉行找到全職軟體工程師(front-end web development)的工作(沒有參加 bootcamp,就是在網路上找資源、自修。)我是台大土木工程碩士畢業,後來到美國讀創意寫作碩士。我沒有在職場上當過工程師,以前主要的工作以當 technical writer 寫技術文件為主。(更多關於我轉職的動機、轉職前的履歷

這篇想整理一下我自學期間用過的教材、工具,但這些都僅供參考,畢竟每個人的狀況、目標都不一樣。我始終相信「盡信書不如無書」。我這九個月中學到最重要的一件事就是凡事要有自己的想法、相信自己。像我這樣的文章網路上有很多,每個人用的方法都不太一樣。參考別人走過的道路很好,但更重要的是規劃最適合自己的一條路,然後自信地走下去。

以下就是對我最有用的網路資源、工具:

  • 一篇 Medium 上的文章 by Andrei Neagoie 


這是我還在當 technical writer 時,某天上班無聊隨便 google 找到的。那時候還不太確定自己要不要轉行軟體工程,所以常常在網路上參考他人的經驗。我不時地都會回來看這篇文章,這篇文章可以說是貫徹我自學期間的一個中心思想。我很欣賞他的理念,尤其是以下這段話:

“I spent the first month avoiding any tutorials or books. Instead, I spent this month looking at the best way for me to learn and get hired. I studied other people’s experiences, looked at job postings, spoke to established developers, reviewed online courses, looked at bootcamps, and even read articles by futurists on where we will be with technology in 20 years. Based on those, I created a curriculum for myself focused on efficiency: The critical amount of learning in order to be employable in the shortest amount of time.”

Andrei 有幾個重點理念我很欣賞:
    • 不要直接開始讀書。先花一個月擬好戰略、設計讀書計畫。
    • 目標明確:Andrei 清楚地知道他不要等到完全 ready、很強才開始找工作。他只想要先學會「能讓他找到第一份工作」的最低技能門檻,然後他在職場上便能一邊賺錢一邊學習。
    • 讀書的期間,他還到處旅行。讀書不等於當一個苦行僧;要認真,但也要記住人生還有其他的事情。



這是一個免費的網路課程,內容舉凡 web development front end (JavaScript, React, Redux), back end, database...都有涵蓋。

我就是從這邊入門開始學 HTML、CSS、JavaScript 的。這個教學平台設計地很像一個遊戲,每一個關卡小小的、很簡單,我第一天就破了大概一百關,從 Hello World 學到 CSS 的一些基本概念。我幾乎停不下來,因為很有成就感。而且每個關卡很小,我有時候就是在上班的空檔玩個幾關。

這個免費教學平台對於不確定自己喜不喜歡寫 code、想要入門體驗一下的人很有幫助。


  • Udemy 上的課程

經過幾個月在 freeCodeCamp 上玩來玩去,我已經確定我喜歡 coding,想轉行當軟體工程師了。有些人會問該學什麼? Web development? Mobile development? Machine Learning? Cryptocurrency? 前端?後端?老實說我一秒鐘就決定了,因為我老公是寫 JavaScript 的前端工程師,而且他也有參加 coding bootcamp,我知道這是最好入門的管道;為了方便有人讓我問問題,我就選了學 web development。

但 freeCodeCamp 上到 React、Redux 那邊之後,我就開始完全不能理解他的邏輯了。因為他還是維持每個關卡短短那種風格,沒有什麼說明,只是要你寫幾行 code 破關,但沒有前後文讓我覺得沒頭沒尾的。我感到很瓶頸,於是又開始在網路上到處看看找教材。這時再次回到 Andrei 那篇 Medium 的文章。重看一遍這篇文章,我才發現原來 Andrei 是 Udemy 上的名師,開了三、四門課都是暢銷課程。從他的文章中,我看得出來他是做事有方法、教學理念和我相近的人,於是我就買了他的一門課來上:

The Complete Web Developer in 2019: Zero to Mastery

才 $9.99 USD,反正不喜歡就算了。但開始上之後,我發現他的教學方式我非常能夠接受,這門課就變成我自學期間 60% 的資訊來源。

後來我也上了他另一門 Udemy 的課:Master the Coding Interview: Data Structures + Algorithms
     


  • Online developer groups

我有一個一歲的女兒,所以我讀書的時間就是她每天去保姆家的九個小時(這也是我沒有參加 bootcamp 的原因)。晚上跟週末基本上沒有什麼時間。也因為這樣,雖然我住在科技業重鎮的矽谷,但我沒有什麼時間去參加常常辦在晚上及週末的 networking 活動。

但我發現很多 networking 其實是可以在網路上發生的。我加入了好幾個 women developer 的臉書群組,有些有好幾萬個會員,有些只有一百個,但著實對我幫助不少。在這些群組中我找到歸屬感,知道很多人正經歷跟我一樣自學、找工作的掙扎,大家會互相分享經驗、吐苦水。也有好幾個人熱心地跟我視訊,提供我一些找工作的建議或分享當純 freelancer 的生活型態。我組隊跟一些人參加一個線上 coding 競賽。這些事情看似微不足道,但這些過程一點一滴地讓我慢慢以 software engineer 的身分看待自己。

我甚至在這些群組中找到了一些 freelance projects 的機會,用我新學成的 coding skills 賺到了第一張支票。這對於我的信心、堅持下去的動力幫助很大。

這樣的群組很多,我就列兩個比較大的:


這是一個找工作的平台,你把履歷放上去,公司有興趣就會主動找上你,你不需要自己去投履歷。這種平台很多,特別介紹這個是因為我有很多面試機會都是在這裡找到的。

我必須說這上面的公司都是蠻小的公司、新創公司,有些公司品質甚至不太好。但有時候找工作就是寧可多一點面試機會、練習的機會。把這當作一個開始,面試機會就會愈來愈多,總比投履歷完全沒有回應的那種感覺好。


我投履歷一陣子之後發現我缺的不是面試機會(至少一個禮拜會有好幾個 recruiter calls),但我常常過不了 technical interviews。

Software Engineer 的 technical interviews 八成是考 algorithm & data structure,然後有些小公司要你在幾天內照他們的指示做出一個 app。

做 app 的部分我只能一直自己練習,重複看 Udemy 上 web development 的課程,繼續累積 projects 實戰經驗,但 algorithm & data structure 部分我開始覺得有些瓶頸。

但因為 Udemy 是自己控制進度的課程,我學的不是很有效率。

這時我找到了 Outco 的課程。你可以把這個想成一個面試軟體工程師職位的補習班,專門教你 algorithm & data structure 以及幫你 mock interview 練習回答 behavioral questions。這個課程總共五週,一週上四天,一天上三個小時,可以去舊金山的教室上,也可以上線上課程。

它的教學進度快得有點嚇人,今天上 linked list,明天上 trees,後天上 graphs。雖然每天只有三小時的課,但那三小時中真的是滿到無法喘息。這個課程不便宜,要 $5000 USD(可以選擇找到工作後再慢慢還學費),但我覺得有它的價值。至少如果靠自學、沒有他人的督促,我沒有辦法在五週內把大部分的 data structures 學完。

但這個課程對我而言最有幫助的部分,是遇到了幾個目標相同的同學,我們常在課餘時間一起在線上 pair coding,討論我們對於 data structures 的理解、一起解題(就是每個人放一個白板在電腦前面用白板筆解題)。這個腦力激盪的過程對我幫助超級大;除了我們可以互相補足彼此不懂的部分,我也漸漸理解我解不出問題時,不一定是因為我比較笨或什麼的,因為這些題目真的就是需要不斷地練習。同學中有些是當了好幾年的軟體工程師,都當到 engineering manager了,但為了面試,還是得練習刷題。

進入 Outco 還有一個面試的過程。有人問這個面試難嗎?大概至少需要知道 array, hash table, 解過 LEET code 上一些 easy 的問題吧!

如果你對這Outco 的課程有興趣,歡迎聯絡我讓我 refer 你吧!



以上就是我整理的網路教材、工具。




Comments

  1. 現在是什麼人都可以當工程師了嗎? 門檻真低 前端真是把行情搞壞

    ReplyDelete
    Replies
    1. ? 这个评论是针对作者吗?不是人人都在大学18岁一上来就找到了自己喜欢有可以糊口的专业的。如果你是科班出生,恭喜你是那一个幸运儿。(也希望coding就真是你内心所爱,而不是为了吃口饭而勉强为之)。半路出家,只要是有决心,有毅力,有一些天分也可以成为很好的工程师。所以,半路出家的工程师真的是要更加努力,不要成为被看不起的随便什么人都可以做前端的前端码农。

      Delete
  2. 謝謝你的分享,我現在也在自學。
    想請問你在家自學的時候會容易分心嗎?是怎麼樣去安排專注學習的時間的呢?
    (話說我沒有辦法勾選左下角的notify me...?)

    ReplyDelete
    Replies
    1. 會分心,但每個人都會。沒有人能夠 100% 有效率的利用時間,所以不要過度在意分心的時間。發現自己分心的時候提醒自己快點回去讀書就好了,或者不然乾脆就好好的休息一下出去走走。

      Delete

Post a Comment