1. 程式人生 > >我如何在1年內轉行成了一名軟體工程師

我如何在1年內轉行成了一名軟體工程師


作者 | Amanda Bullington
翻譯 | Mika
本文為 CDA 資料分析師原創作品,轉載需授權

在決定轉行前,我是科技公司的一名營銷人員。我嘗試過很多型別的營銷工作,具備活動、公關、搜尋引擎優化、內容創作、數字廣告、郵件營銷,但從未找到最適合自己的。

我的上家公司是個人理財的創業公司,品牌知名度很高。公司的座右銘是“內容為王”。與大多數科技公司不同,這家公司裡有大量的編輯和記者,只有少數軟體工程師。

在我入職一年後,公司決定改變策略。單純靠內容已經不夠了,許多個人理財初創公司在當年都推出了app,為了不被落在後面,我所在的公司開始減少內容方面的業務,同時迅速招聘產品人員、工程師和設計師。

在這一刻我意識到,是時候轉行了。在本文中,我將介紹我是如何轉行為一名軟體工程師的。下面讓我們開始吧。

第1步:沉浸式課程

我開始找軟體工程方面的沉浸式課程。App Academy和Hack Reactor都提供了一些免費的入門課程,幫助感興趣的人群入門。Hackbright也有針對女性開展一些程式設計課程。

最終,我選擇了Hack Reactor,它提供了為期一個月的結構化學習計劃(SSP)課程。課程設定很實用,我認識的三名學員在完成課程後都獲得了軟體工程方面的工作。

第2步:沉浸式程式設計

決定選擇Hack Reactor,之後我需要為SSP做準備。為此,我完成了Udacity上JavaScript的入門課程以及其他一些JavaScript線上課程。

針對SSP和Hack Reactor的沉浸式專案,我共花了四個月的時間學習程式設計,每週學習6天,每天12小時以上。這段時間,我不僅提高了解決問題的能力,還提高了對JavaScript的理解,而且還學習了前端和後端框架。

第3步:提高求職技能

在學習線上課程的過程中,我學習了很多概念,其中最主要的是演算法和資料結構。

沉浸式課程中涵蓋了工程師在工作中所需的技能。針對面試的練習時,掌握演算法和資料結構是關鍵。

在提高面試技能時,我用到了以下資源:

  • CodePath :為期8周的課程,涵蓋從資料結構到系統設計的所有最常見的面試問題。

  • InterviewCake:針對演算法思維中最常見模式的指南

  • LeetCode :海量練習題

  • Grokking the System Design Interview: 解釋如何權衡常見的系統設計問題,例如如何設計Instagram

第4步:諮詢經驗豐富的工程師

我向許多資深工程師詢問了求職建議。以下是一些最有用的建議:

  • 邁出第一步:每個工程師都是一步步成長起來的。許多工程師在找到心儀的工作之前,都經過了不斷的嘗試和努力。如果你沒有馬上找到合適的工作,也不要洩氣。

  • 重寫簡歷:如果你是剛入行的工程師,你的簡歷可能有些稚嫩。關注你所做的內容和技術決策,而不是實現了什麼。

  • 尋找指導機會:關注擁有30多名工程師的團隊,因為這將讓你很快提升程式設計技能,並獲得指導機會。

  • 進行個人專案:這將展示你在求職過程中對軟體工程的熱情,讓你在面試中脫穎而出。

第5步:忽略無益的建議

我找工作的時間是2018年的夏天,當時我收到了很多善意但無益的建議。有些來自招聘人員,工程師同事和一些朋友。以下是其中一些:

  • 過去幾年,初級工程師的市場需求已經放緩。中型公司只招高階職位,並暫緩招聘初級職位。

  • 過去幾年,不僅市場過度飽和,而且培訓機構學員的質量也有所下降,很難找工作。

  • 你是很有能力的求職者,但我們公司沒有足夠的資源來培養你。請保持聯絡,我們很樂意等你有更多經驗時再面試你。

  • 在暑假期間找工作很難,你還需要與電腦科學專業的學生競爭實習機會。請在秋季有更多職位空缺時再試試。

  • 秋招形勢也很嚴峻,隨著公司接近第四季度,招聘將放緩。如果你今年夏天找不到工作,你就得等到明年了。

  • 你可以試著找找產品經理的實習機會。等你有一定經驗了,也許可以轉行到軟體工程。

我確信很多工程師都聽過類似的建議,關鍵是要學會忽視它們並保持專注,否則很容易分心。

第6步:制定學習計劃

在學習Hack Reactor之後,我花了很多時間複習技術概念,為面試做準備。以下是我大致的學習計劃:

  • 學習演算法和資料結構
  • 學習系統設計
  • 完成一次黑客馬拉松
  • 建立個人作品集
  • 記錄下電話面試和現場面試的問題
  • 與他人一起練習

第7步:充分利用社交網路

讓招聘人員更容易找到你。以下幾個平臺都是不錯的選擇:

  • LinkedIn
  • Hired
  • AngelList
  • GitHub

向未來的僱主展示你的工作能力非常重要。專案連結,文件和清晰的程式碼更容易吸引招聘人員。

第8步:記住,這是數字遊戲

我經常聽到工程師說“這只是數字遊戲”,以下是我的一些數字:

投簡歷:156次 共26小時
電話面試:41次 共20.5小時
技術面試:11次 共11小時
程式設計挑戰:10個 共80小時
現場面試:6次 共28小時
總計:165.6小時 約6.9天

瞭解數字能幫助你進行分析,例如:

  • 所投簡歷的26%轉化為電話面試

  • 51%的電話面試將轉化為技術面試或任務

  • 28%的技術面試將轉化為現場面試

根據這些資料我發現,我的簡歷能夠引起招聘人員的興趣,在最初的電話面試中取得了成功,但在展示技術方面我有些薄弱。

因此我花更多的時間去提高技術能力,目標是提高從技術面試到現場面試的轉換率。

第9步:搞定現場面試

現場面試涵蓋的內容很廣,持續2到6個小時不等。我參加的現場面試中主要涵蓋了以下內容:

  • 演算法
  • 系統設計
  • 使用公司的API開發應用程式
  • 關於我的程式語言(JavaScript)的問題
  • 關於HTML / CSS的問題
  • 關於前端框架的問題
  • 關於各種資料庫的問題(SQL / noSQL)
  • 解釋你建立的GitHub專案,你做了哪些權衡,以及將來會採取哪些不同的做法

在每次技術面試和現場面試後,我會記下當中的問題,這構成了我之後面試的學習指南。

第10步:進行職業規劃

你認為5年後你的職業發展會是怎樣的?

在面試中我常常會被問到上面這個問題。

關於職業發展我有好幾種選擇,比如web端、移動端、網站可靠性和DevOps等等。

同時還有後端、前端和全棧的選擇。有時這些角色之間的界限很明顯,有時卻模糊不清。在學習和搜尋的過程,雖然我不知道只會會選哪條路,但有些工作我更喜歡做,而有些卻不喜歡做。

比如,我不喜歡涉及到網站畫素的問題,但我對移動端設計很感興趣;設計架構和建立資料庫有點乏味,但我喜歡獲取大量資料並對其進行操作或視覺化。

一些建議

  • 程式設計挑戰是學習機會

我進行過很多程式設計挑戰,但最終因為效果不好而沒有提交。也有一些未完成但提交了的。不過在進行這些挑戰中,我學習到了很多,也意識到自己的不足。

  • 坦然接受拒絕

每次技術面試和現場面試都是如此。被拒絕是很正常的,起初我會感到自我懷疑,但慢慢地我開始擺正心態,並從中學到了很多東西。

  • 尋找導師

我很幸運,在我參加面試過程中有導師的幫助。在求職的三個月中,導師每週會跟我交樓,詢問我求職情況以及面臨的困難。

結語

轉行比我想象的要困難得多。

成為一名工程師需要花費很多時間。這意味著我要擴大專業人們,坦然面對學習中的困難,忽視所有的反對者。

在學習中,我需要找到適合自己的學習資源。不斷參與新的專案,研究新演算法。

這些努力值得嗎?絕對的。

我很高興地說我找到了自己心儀的工作,並可以繼續學習和成長。最重要的是,我在工作中獲得了信心,不斷充實和提升自己。