回顧一下轉行自學那年的一些心得體會,僅針對零基礎的同學。首先說明,我的學習方法,在我看來,並不是很科學,所以最後投了近百份簡歷,只拿到了兩個offer。但是,起碼我這麽學習,也轉行成功了,雖然有運氣成分。
如果我現在來看,我的學習計劃裏一定是缺了什麽,導致我險些轉行失敗。下邊我結合我當時的學習,以及後來的經驗,總結了一些學習心得。
1.零基礎轉行三個必備的要素
1.1 紮實的演算法理論知識
理論知識的學習,主要就是規控演算法了。這個之前的文章分享過學習資源了。這是轉行的前提,僅僅是前提。學會這些,並不能讓你轉行成功。
1.2 會寫程式碼
按照我的理解,一個小白轉行自學,如果是像我一樣,做演算法工程師,那麽留給c++的學習時間並不是很多,可能只有三四個月時間。所以想透過這幾個月從零基礎掌握編程,是比較困難的,起碼我沒做到。這三四個月更多的是針對面試去做準備,能夠應對面試就行,程式碼能力以後入行了,慢慢提高就行。所以大家不用太過於恐懼寫程式碼這件事,以後寫多了就好了,當前任務就是不要在面試中,被程式碼這項內容拖後腿了。c++學習資源,之前的文章裏有總結過。
1.3 相關的專案經驗
這個就比較難了,也是拉開差距,獲得面試機會的關鍵。我想,我當時一定是因為沒有相應的專案,導致得不到面試機會。因為理論知識,大家都了解,這個並不能引起面試官關註。而專案經驗,每個人都不同,遇到的問題也不同,這個才是面試官感興趣的地方。
其實github上很多規劃控制相關的開源專案,我之前的文章也總結過,大家完全可以找一個專案,去仔細學習,並且,最重要的是,仔細測試這個專案,去發現它的bug。透過bug學習,是很有效的。
2.兩個快速學習規控演算法的方法
2.1 透過寫程式碼去理解演算法
當我深入學習了規控演算法理論知識後,其實理解的並不深入,也無法透過這些理論知識,去和其他競爭者拉開差距。另外,單純去學習一個演算法,有時候會很難理解,這個時候,如果一邊寫程式碼,一邊學,或者對照著開原始碼去學,就更容易理解。所以學習規控演算法,學的差不多的時候,必須要透過程式碼去深入理解。
開源專案在我之前的文章裏總結過,可以挑一些看看,一邊看程式碼,一邊學加深演算法的理解。
2.2 透過分析和解決bug去真正理解演算法
真正能夠拉開差距的是,你解決過什麽專案bug,對經典演算法做過哪些最佳化。所以,透過專案裏的bug去學習程式碼和演算法,是非常有效的。就是在實際工作中,分析並解決一個bug,可以讓人快速且深刻的理解相應的演算法,這個是單純看理論知識無法比擬的。當然,紮實的演算法理論基礎是前提。
這一點,正是我當初自學時候欠缺的。即便我理論知識掌握的很紮實,但是沒有實際解決過專案bug,沒有對經典演算法進行過最佳化,這個就導致面試官沒有問題發起點,他只能問理論知識,這個就比較空洞了。理論知識很紮實的人太多了,為什麽要招一個零基礎社招轉行的人呢。
3.如何找專案及找bug
這個是拉開差距的關鍵,盡量去找專案,找不到專案,找開源專案也行,就仔細的去測試,找它的bug,並且修復這個bug,給它提pr。或者找到開源專案可以最佳化的點,去最佳化它。這些前提是,要先充分了解這個專案,並且自己做大量的測試。
那麽如何找專案呢?
程式碼能力足夠的,可以自己寫一個,然後去調研一下目前行業內的痛點,試著去解決它。
沒有實力自己寫專案的,就去github上找開源專案,去看這個專案的commit,分析作者如何去解決bug的。然後,自己去詳細測試這個開源專案,發現它的bug,修復它的bug。這些寫到簡歷裏,是非常適合當做問題來提問的。
4.關鍵的5分鐘自我介紹
現在想來,這個是我犯的一個很大的錯誤,我當時,就準備了一份自我介紹,背的滾瓜爛熟,但是我介紹的毫無目的,就是闡述簡歷上已經有的文字。如果是這樣的自我介紹,就完全浪費了這寶貴的5分鐘了。
首先,面試不同的公司,自我介紹得做相應的變動,雖然是自我介紹,但其實是在引導面試官,引導面試官去提問題。另外,不同公司的業務不同,自我介紹就需要結合公司業務,去做準備,重點強調與之相關的內容,讓面試官知道,你能帶給公司,帶給這個崗位什麽。
以上就是我的一些心得,僅供像我一樣零基礎轉行的朋友參考。寫的不對的地方,請忽略。