我如何在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步:充分利用社交網路
讓招聘人員更容易找到你。以下幾個平臺都是不錯的選擇:
- 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等等。
同時還有後端、前端和全棧的選擇。有時這些角色之間的界限很明顯,有時卻模糊不清。在學習和搜尋的過程,雖然我不知道只會會選哪條路,但有些工作我更喜歡做,而有些卻不喜歡做。
比如,我不喜歡涉及到網站畫素的問題,但我對移動端設計很感興趣;設計架構和建立資料庫有點乏味,但我喜歡獲取大量資料並對其進行操作或視覺化。
一些建議
- 程式設計挑戰是學習機會
我進行過很多程式設計挑戰,但最終因為效果不好而沒有提交。也有一些未完成但提交了的。不過在進行這些挑戰中,我學習到了很多,也意識到自己的不足。
- 坦然接受拒絕
每次技術面試和現場面試都是如此。被拒絕是很正常的,起初我會感到自我懷疑,但慢慢地我開始擺正心態,並從中學到了很多東西。
- 尋找導師
我很幸運,在我參加面試過程中有導師的幫助。在求職的三個月中,導師每週會跟我交樓,詢問我求職情況以及面臨的困難。
結語
轉行比我想象的要困難得多。
成為一名工程師需要花費很多時間。這意味著我要擴大專業人們,坦然面對學習中的困難,忽視所有的反對者。
在學習中,我需要找到適合自己的學習資源。不斷參與新的專案,研究新演算法。
這些努力值得嗎?絕對的。
我很高興地說我找到了自己心儀的工作,並可以繼續學習和成長。最重要的是,我在工作中獲得了信心,不斷充實和提升自己。