作為一名從傳統行業成功轉行算法工程師的老人,經常會有想轉行互聯網,或者是算法工程師的朋友詢問我轉行的經驗。為了能夠幫助到更多希望轉行的朋友,特在此記錄下自己的轉行歷程及心得。
1 轉行的動機
轉行的動機基本上可以歸納為四點:
1)現在的工作工資太低,
2)現在的工作前景黯淡,
3)對現在的工作毫無熱情,
4)對意向的行業特別感興趣。
而對大多數年輕人來說,工資太低是原罪。畢竟現在的年輕人壓力太大,碩士畢業都二十好幾了,有女朋友的面臨著結婚,買車,買房;沒女朋友的還可以瀟灑幾年,但幾年之后同樣要面臨這些問題,當然不排除有的同志立志做一輩子的單身狗,^_^。回到正題,大多數人轉行都是因為工資低,我同樣也不例外,但卻也有所不同。開始因工作太低而轉行,最終因興趣而成功。
2 轉行的歷程
簡單自我介紹,17年7月從某中下游985材料專業畢業,畢業后就職于上海某汽車零部件公司,從事模具開發的工作,校招簽約是一年13w,然而實際工作中每個月到手6300左右,轉正之后也才7300左右,每個月需要1300(嘉定郊區)的房租外加早餐和晚餐的費用(公司提供免費午餐)。享受應屆生落戶政策,把戶口落在了上海,本想著一直在上海待下去,然而17年上海的房價又在快速增長,這讓我根本看不到留下來的希望,因此大概在17年9月份的時候就開始考慮轉行。
開始打算轉行的時候考慮了兩個方向:金融和互聯網,這兩個方向也是大多數人的轉行歸宿,一開始嘗試的是金融,大概半個月之后發現自己不合適:一是自己根本沒有任何興趣,都是強迫式的去學習;二是自己的學歷一般,本科雙非,碩士也只是個普通的985。這樣也就放棄了金融這條路,那就只剩下互聯網了,那好吧,那就只能走這條路了。
對于互聯網我是很陌生的,連互聯網有哪些職位都不知道,技術方面更別說了,除了大學考過計算機二級,就沒接觸過編程,真的是連hello world都不會寫的小白,不過既然打算轉行了,就不管自己現在是個什么水平了,先擼起袖子干吧,但是該怎么干呢?百度唄,知乎唄。
萬事開頭難,第一步總是最難的。于是乎開始去網上各種找別人轉行的經驗,有成功的,有不成功的;有告訴你上培訓班的,有告訴你不要上培訓班的,有告訴你python好入門的,有告訴你java才是王道,甚至還有零星地喊著PHP是世界上最好的語言的;有告訴你前端容易些的,有告訴你后端前景好的;有告訴你算法工程師是當前最火的,而且工資高;有告訴你算法門檻太高了的,諸如此類……。在這個時代信息獲取更容易了,但也需要你有更清晰的判斷力,不過我就比較簡單,只看工資高的,那好吧,那就算法工程師了,大家不是都說xxx幾個月帶你成為年薪40w的算法工程師嗎?
既然確定了目標,那就開始規劃學習路線吧,然后又去網上各種找資料,算法工程師的語言首推python,然后不少人又說python計算性能差,你還需要學java,c++;算法方面除了機器學習,深度學習,還有各種線代,概率論,高數,算法導論等等要學,那好吧,既然打算學了,那就開始吧。首先就從python開始吧,然后就去網上開始下視頻,找了好幾份視頻,最后發現還是某馬的視頻通俗易懂些(此處非廣告),此時已經過完國慶了,也就是說從17年國慶之后真正的開始了轉行之路。
剛開始自學的時候真的挺痛苦的,我既沒有報班,也沒有選擇裸辭,好在每天下班都挺早,基本上每天晚上能抽出四個小時的學習時間,周末大概每天八小時。就這樣開始了自學之路,從linux的簡單操作開始,然后是python的簡單語法,一直到這都覺得挺簡單的,看來轉行是分分鐘的事情,直到學到類這一章,開始有點蒙了,這里一個對象,那里一個方法,什么封裝,繼承,多態,感覺腦子要炸了。沒辦法,那就照著別人的代碼抄吧,抄完之后就一行行的讀,在紙上一個對象一個對象的畫,就這樣勉勉強強的理解一些,在這個時候我的心態也有了一些變化,轉行好像也那么容易,但我是誰,二十幾年前拿過冠軍的人,這點困難算什么,平靜下內心后開始繼續,但此時我腦子里也在想一個問題,轉行所需要花費的時間。
我是不敢裸辭的,這樣一旦沒成功損失太大,而且那時自己也沒攢到錢,然而邊工作邊自學不僅效率不高,而且真的很累,所以我需要快速轉行成功。算法工程師需要的時間太大,當時大概估計了一下,以這種邊工作邊自學的方式大概需要半年甚至更久,而我給自己的時間是大概四個月,在這時做了一個大膽的決定,先轉后臺開發,再轉算法工程師。至于為什么選擇后臺開發,僅僅是因為和算法工程師聯系大一點。那就這樣決定了,然后就開始去看python后臺開發的招聘需求,總結下來需要掌握的最基本的技能:python,django,數據庫(mysql,redis),計算機網絡(http,tcp/ip),面試還需要掌握數據結構和算法。那就一樣一樣的來吧,具體時間如下:11月底學完python,12月中旬學完數據庫和計算機網絡,12月底看完數據結構和算法:python描述這本書。1月底學完Django,并搭建一個個人博客。2月開始準備面試題。
總結一下這部分的學習心得:
python:主要以視頻為主,不建議看書學習,多寫代碼,寫代碼的時候最好規范,多用類去封裝自己的代碼。重要點有python中的各種數據結構的特點,裝飾器,生成器等特性,線程,進程,協程,內存機制等。
數據庫包括mysql和redis:這兩個用起來很點單,但是理論上的知識點卻挺多的,尤其是mysql,在面試之前建議多刷寫經典的面試題,一些不懂的點配合著別人的博客和書來看可以取得很好的效果。redis一般問的都是里面的數據結構,相對簡單些。
計算機網絡:http協議,tcp/ip協議,推薦看一些簡單的書,比如圖解HTTP協議,然后還是刷高頻面試題中的知識點,這是針對面試最優效的方法。
數據結構和算法:推薦數據結構和算法:python描述這本書,主要關注鏈表,棧和隊列,二叉樹,hash表這幾塊內容,然后再去刷劍指offer,劍指offer的題相對leetcode少很多,難度比較大的可以放棄。
基本上這樣你只要做一個漂亮一點的簡歷,然后要求不要太高,基本上工作就能找到了。
18年3月初,也就是過完年回到上海我就開始投簡歷,這時你不用去考慮公司,只要稍微符合的就投,我總共投了將近100份簡歷,前前后后大概收到了6,7個面試,都是很小的公司,最大的也才150人左右,我只面試了兩家,都給了offer,選擇了最大的那一家,也就是這150人的公司。
18年3月8號辭職,3月11號入職新公司,當時的薪資是稅前8000,轉正后10000。工作地點在市區,房租1600,但住宿條件較之前差了100條街。吃飯也很貴,日均50-60。轉行之后感覺生活更加緊迫了,好在自己對未來比較看好,也就都能接收。
不得不說在工作中學習效率真的是很高,在這里很感謝我們的“俊哥”,在工作上給了很多幫助,不僅代碼寫的越來越好,也接觸到了很多以前沒接觸過的東西,比如FQ谷歌,各職位各部門之間的協作流程,git的工作流程,docker的項目部署,數據庫的使用等,這些在之后從事算法工程師時都有用到。說到這是不是有種忘記了初心的感覺,no,并沒有,轉行算法是必然的,尤其是在現在做后端開發工資也不高的情況下,還有一句不能漏了,在這個時候我對寫代碼已經是非常有興趣了。
新工作有個很大的優點,就是很少加班,而且上班時間靈活,我又住在公司附近,走路十分鐘,這也給我提供了很大的幫助。18年3月底開始決定重新轉行算法,如出一撤,打算先從看視頻開始,去網上一找,大家都推薦吳恩達的機器學習課程,可是聽不懂英文真的是很大的障礙,即使有字幕也學的很難受,就這樣又去找其他的視頻,不少人在推薦林軒田的機器學習基石。說實話林軒田的機器學習基石真的挺難的,尤其是對初學者而言,而且機器學習基石沒有涉及到太多機器學習算法,主要是講一些機器學習的理論,但這也沒辦法,知道是硬骨頭也得去啃,就這樣配合著別人的學習筆記磕磕絆絆的花了半個月學完了,但此時感覺自己還是啥都不懂。然后就開始去買書來看,第一本就是西瓜書,一開始是泛讀,了解有哪些機器學習算法,大概一兩天就看一章,每天大概能騰出三四個小時,而且只讀到了第十一章。此時大概4月中旬,還是基本懵逼的狀態,沒辦法,就開始買一些簡單的書來看,比如機器學習實戰,python機器學習實戰,然后就照著書上的代碼去運行,并結合西瓜書還有別人的博客來一個算法一個算法的啃。這整個過程花了一個月左右的時間,也就是到了5月中旬,個人認為已經算是入門了,但此時并不能說對算法有多熟悉,而且對各種的算法推導并沒有統一,機緣巧合下有個同事推薦我去看統計學習方法這本書,現在也是我目前最喜歡的一本書,面試之前必定翻一遍,周志華老師的西瓜書是大而全,適合入門;而李航老師的書就是小而精,適合進階。依然是堅持每天推導一個算法,就這樣大概花了半個月的時間,自認為對機器學習中的各種算法算是比較熟悉了。
理論掌握的差不多之后就需要實戰了,去真正的領略算法的實際用途。kaggle競賽平臺是個不錯的選擇,里面有很多機器學習入門的項目,最經典的就是泰坦尼克和房價預測,正好對應著分類問題和回歸問題。這個時候你就可以用各種算法去嘗試,比較結果,還要去熟悉各種特征處理方法,比如缺失值的處理,離散化等等。總之這個過程你不僅要大概的知道各種算法的優缺點,還需要知道各種特征提取,特征選擇,特征組合的方法。此外你可能還會碰到過擬合,欠擬合的問題,那恭喜你,你會獲得更多的經驗。
本以為經歷了上面這些,對機器學習的算法應該是掌握的比較好了,然后就去刷面試題,發現自己很多都不熟悉,也就是之前見過,甚至是理解過,但現在就不記得了,看來自己掌握的還是不夠好,怎么辦?那就復習做筆記吧,可是手寫筆記也太麻煩了,那就寫博客吧,大家也可以看到我的第一篇機器學習的博客是6月底,此時也是我對整個機器學習算法的總結開始,說實話這個階段起到了質的飛躍,一開始對很多概念還很模糊,但你寫完一篇博客后對這個算法就清晰很多了,強烈推薦。
與此同時,在7月初開始接觸深度學習,其實到了這一步你也需要確定方向了,你是選擇推薦,計算機視覺,自然語言處理還是其他等等。說實話計算機視覺很火,因此那時也想朝視覺的方向發展,可是電腦配置太差,又沒有GPU,當時在做Kaggle上的一個圖像分類的項目,每次電腦都卡死,沒辦法,客觀條件不允許我做視覺了,對推薦興趣不是很濃,那就自然語言處理吧,雖然當時知乎上各種看淡NLP的未來,覺得這個方向短期沒有突破,然決定了那就共同面對興衰吧。
相對于機器學習,深度學習的內容要少很對,無外乎幾種網絡,CNN,RNN,LSTM,自編碼,受限玻爾茲曼機,GAN等。特別是當你對機器學習很熟悉之后,學起來就非常快了,但是tensorflow可較sklearn難多了,什么計算圖,什么tensor,尤其是tensor的維度,三維,四維太常見了,但是學框架總比你自己去實現CNN,RNN要簡單多了吧,所以深度學習很多時候都是在學tensorflow怎么用?當然深度學習中也有不少理論需要掌握,比如梯度彌散,激活函數,反向傳播,優化函數,LSTM和RNN,Attention的原理。而現在可能還會問Transformer,NLP中的預訓練模型。BERT的使用等等。但總的來說深度學習學起來還是簡單些,難點主要在調參。
回過頭來,說說深度學習和自然語言處理,首先推薦大家去找一些優質博客,理解清楚什么是CNN,RNN,LSTM等,理解它們的結構,輸入和輸出等。了解了基本的網絡結構之后,可以去看吳恩達的深度學習視頻,在網易云課堂中有,包括了深度學習理論,計算機詩覺和自然語言處理。另外深度學習這本書也是必不可少的,不用全部看完,畢竟太厚了。自然語言處理一開始沒必要去看那些傳統的書,給你講語法,語義之類的書,主要還是以實戰為主,了解自然語言處理中有哪些應用任務,比如文本分類,詞性標注,機器翻譯,問答系統等。推薦從文本分類入手,因為這是自然語言中最基礎也是最常見的任務,我目前也主要是在做一塊,接下來會入坑知識圖譜和問答。
整個深度學習大概花了不到一個月的時間,而且此時還在總結機器學習和刷面試題。所以深度學習上花的時間真的不多,當然此時對深度學習除了理論比較熟悉,幾乎是沒有任何實戰經驗,而且tensorflow只能說能用,當很不熟悉。本打算把這些進一步扎實一點,但因為其他原因,不得不在8月9號辭職離開上海來到深圳找工作。
在求職算法的時候感覺市場一片大好,相對當時3月份求職后臺開發的艱難,這次真的好了很多,不但收到不少面試,而且其中還不乏一些大廠。可能當時這個行業還是缺人,再加上已經有了五個月的開發經驗,相較那些無任何互聯網經驗轉行算法的朋友來說還是有些優勢的,而且求職時我的博客也給加了不少分(至少能證明你是有認真學習的,而不是幾天培訓班,跑幾個項目就來找工作的人)。
在這里還有一點,我面試基本是100%拿offer,這次總共面了7家,收到了6個offer,拒絕的那一個還是因為我的期待和它提供的崗位不符,所以就沒有后續了。這里有一點點小經驗分享給大家:
1)基礎:只要你的簡歷不作假,面試官就不會期待你有多少項目經驗,他更在乎的是你的基礎,所以理論基礎一定要打好。
2)信心:很多轉行的朋友可能都會懷疑自己是不是能做好這份工作,較科班人士是不是差的很多,我只能說科班也有很多普通人的,你只是較那些大神差很多而已。所以信心要足。
3)態度:當面試官問你為什么轉行的時候,你不用避諱因為錢多,可以說絕大部分人的動機都是因為錢,但這個過程中你是不是真的感興趣,面試官還是很在乎的,所以我一般都會說因為錢多才決定轉行,但因為興趣才堅持到現在。
3 一些建議
雖然現在進入了互聯網寒冬期,轉行越來越難了,但還是給那些想轉行的朋友一些建議:
1)你需要能擠出大量的時間來學習,學習需要連貫性,不然效率會非常低下,低下到你懷疑自己的能力,甚至放棄。
2)你需要能靜的下心來學習,不要受過多的干擾,包括身邊的朋友,網上的言論,尤其是那些告訴你轉行有多難,那些勸退的人,要退縮也是你因為自身的原因主動退縮,而不是被別人給嚇退縮了。
3)放下你的過去,很多人都覺得轉行浪費了自己所學的專業,尤其是對于碩士和博士,我并不認為這是浪費,在學校最大的收獲絕對不是一點點專業知識,而且打算轉行的人一般也是專業沒學好又對自己的專業沒興趣的人。
4)認清現實,雖然現實很殘酷,但你必須去面對,對轉行算法有三不建議:一,絕大部分本科生不建議;二,從小到大數學差的不建議;三,普通學校的碩士不建議。雖然說的有點直白,在中國對學歷的歧視是很赤裸裸的,算法工程師確實大多都要求碩士,對于非CS,數學等專業的還會要求是好大學的碩士,如果達不到你的發展可能會受限,當然這里面肯定會有個例,很多普通大學也有很多大牛。另外數學差學算法還是挺痛苦的,之前說到的線代,高數,概率論等都是需要的,在這里我沒有重頭學是因為我大部分都記得,哪怕這些書我好幾年沒翻過。
最后,祝各位想轉行的朋友在19年都能成功!
-
工程師
+關注
關注
59文章
1586瀏覽量
69036 -
算法
+關注
關注
23文章
4682瀏覽量
94341
發布評論請先 登錄
相關推薦

如何成為一名合格的KaihongOS南向驅動開發工程師
如何成為一名合格的KaihongOS北向應用開發工程師
如何成為一名嵌入式軟件工程師?


月薪 3 萬的嵌入式工程師都在用,串口屏到底神在哪?

如何成為一名合格的南向驅動開發工程師
如何成為一名合格的北向應用開發工程師


評論