1. 程式人生 > >演算法工程師程式設計師職業規劃

演算法工程師程式設計師職業規劃

自從碩士畢業後,一直從事演算法方面(視訊編解碼,深度學習,全景VR)的工作,目前人到中年,感覺有點在十字路口,不知道未來規劃是什麼樣的,因為最近搜尋了網上關於程式設計師的職業生涯規劃。
根據自己理解,找出我認為值得我後面注意的地方,記錄下來,朝著正確的方向前行。目前下面的內容基本贊向,唯一不確定的是到底是在某個技術方向深耕好,還是在某個方向有優勢的前提下發展多個方向。
非常感謝視訊編解碼群裡一位工作14年的大牛提出他的想法:一直在一個方向深耕的可能發展更好。
我一直相信這樣一句話:真正的危機,來源於在正確的時間做不正確的事。沒有在正確的時間,為下一步做出積累,這才是危機的根源。
如果有相同困惑的朋友,或者技術上的交流可以加我QQ進行討論:81664352

1.知識結構

因為一個清晰的目標,可以讓你的職業成長圍繞著一個點去積累經驗,而這種日積月累的經驗積累,也是你日後升職加薪的籌碼。
要脫離具體的操作層面的問題,把你看待問題的眼光放得更高一些,更遠一些,成為一個具有“遠見卓識”而不是“鼠目寸光”的人。
你要向這個行業裡最優秀的人看齊,並以他們為目標,作為自己修煉成長的榜樣,一步一步彌補與優秀之間的差距。這個時候,在職學習、進修等等都需要提上日程,學會用新的知識充實自己的頭腦。
你的能力沒有提升可能是:
• 一種是頻繁跳槽,沒有在一個方向上積累,無一技之長;
• 二是雖然在一個方向上長期積累,但只是第一年是成長的,剩下的幾年都是在做重複勞動,原地踏步。

2. 不斷學習的能力,這裡有兩種方向。

(1)要堅持使用一個開發平臺,框架或語言
在過去十年間,我所犯的最大錯誤是:幾乎每次我換工作時也轉換了開發平臺。
我的經歷從 Java 企業開發開始,到嵌入式 C 程式設計,到用 VB、C# 和 C++ 開發 Windows 桌面應用程式,然後用 Objective-C 寫 iOS 應用程式,到用 NDK 編寫 Android 庫,最後到寫 Android 應用。
這個職業經歷聽起來令人敬畏,但實際上僱主並不關心。僱主們並不會重點關注你擁有 10 年各式各樣的開發經驗,但如果他們看到你沒有足夠的 Android 應用開發經驗,你就不可能獲得一個 Android 開發的工作。
轉換平臺會對你的簡歷產生巨大的負面影響。對於一個僱主來說,實際上他沒辦法通過簡歷來驗證你是不是某一特定開發領域的專家,為你付出大量資金是否合理。
大多數公司都不關心你的過去,技術面試會更加重要。這就是為什麼很多經歷尚淺但專業對口的開發者可以找到工作的原因。
那麼我們如何適應市場的變化呢?只要你不停地敲程式碼,你就能自然而然地適應市場,但你也需要投入一些時間在新技能上,應在空閒時抽出時間來學習新技能,而且你也要降低期望薪水。你需要後退一步,才能前進兩步。
一旦你找到一個讓你覺得舒服的平臺,框架或語言,就應該堅持下去。從長遠看,你期望的薪水和你的工作能力都會比頻繁跳槽來得更高。找到最需要你的專屬技能的好公司,然後踏實地在那裡工作。我知道這聽起來很簡單,但我花了很多年才意識到這點。
(2)在某個方向上深耕
我們會在很多場合聽到對「精鑽」這個詞語的推崇,包括在職場上,我們常常聽到前輩教導我們對待工作要精益求精,但事實上,在某一方面做到萬里挑一的大牛是一條可取的道路,卻不是職業發展的唯一道路。
尤其是對於那些未來的職業發展規劃是進入明星創業團隊擔任技術負責人的程式設計師來說,在之前的積累過程中尋找機會盡量多地接觸各類業務場景並尋找解決方案,可能是一條更可行的路徑。
這裡的業務場景分為大業務場景,也分為小業務場景。大業務場景即不同的細分行業,如電商、內容、視訊、共享平臺等等。我建議程式設計師們在進行工作選擇的時候不要被自己原先所屬的細分領域太過限制,認為自己原來在電商公司以後也必須在電商公司。事實上,多去嘗試不同領域的公司,去了解不同領域的公司在技術實現上有什麼異同,對於程式設計師更深入地理解技術是很有幫助的。
尤其是當今行業發展日新月異,某一細分領域很難在一個人 15-20 年的職業生涯中一直處於蓬勃發展的狀態,如果之後又出現了新的細分市場,複合背景積累的經驗會幫助程式設計師快速切入到新的細分市場。
而小業務場景則是指同一個技術在同一家公司的不同業務範疇。例如演算法方向,可以分為排序、推薦、NLP、影象識別和使用者行為研究等,攻堅某一領域是一條發展路徑,但橫跨不是一個領域也是一條發展路徑。這就需要程式設計師自己把握機會,不斷跳出舒適區去承擔新的業務和需求。

3.樹立自己在行業內的影響力。

你要想成為優秀的職場人士,也必須向那些最優秀的人看齊,樹立在這個行業內的影響力,用你的思想去影響別人。
成為開發者社群的一員
當我還在大學的時候,我總是懶得參加各種社團和俱樂部活動。當我找到我的第一份開發工作時,最不樂意做的也是和其他開發者閒聊閒逛。
但是我錯了。
同行聚會和進入開發群是很有趣的事情,是結識開發者夥伴的好地方。如果你想在這個行業裡做到最好,就儘量不要消極被動。與坐在你旁邊的人交談,提供你的幫助,分享你的經驗。每個人都喜歡談論自己的經歷,更何況你也許會遇到很多潛在的僱主。
在那裡你會碰到許多需要教練的初學者團體,你可以指導新手,給他們提供練手的機會,甚至贊助活動。
當然,要學習別人的開發技巧並且勇於實踐,要熱情地歡迎不同意見的人講話,勇敢地聽取他們的意見。

4.鍛鍊其他方面的能力,

(1) 你的人際關係處理能力這其中包括與你的上司的關係,以及與你的同事的關係。
(2)除了程式設計之外,程式設計師要儘量培養一些其他方面的技能,例如演講、寫作等等。這樣做一方面可以為程式設計師提供一些兼職機會,如主講技術相關的直播課程、參考文章或書籍的撰寫等。類似的機會在提供報酬的同時也會增加員工的知名度和行業影響力,更有甚者,在社交媒體上發表了相關文章之後,吸引了一批志同道合的同行,開始合夥創業,有了更大的機遇。

5.不要為高工資追求管理角色

以前我總是以為那些穿著西裝,作行政決策的管理者拿的薪水高得令人神往。雖然在一些情況下這沒錯,但這所佔比例很小,經驗豐富的開發者的薪金一般會比中等管理者更好。
在我早期的職業生涯中,我一直想進入專案管理。我自修了管理碩士,在那裡我學到了很多有趣的東西。最後,我在一家西班牙公司作了一陣開發經理,然而我意識到這不併適合我。
在做開發者的時候,我總是感到公司缺乏企業文化,尤其是缺少技術因素的企業文化。然而在做了管理者之後,不僅程式設計水平無法提高,而且在企業文化的孤獨感甚至更加強烈。最終當我離開這個崗位重歸技術開發時,我終於開始重新欣賞我的開發工作。
如果你對敲程式碼感到厭煩了,那麼轉成管理崗並不是解決方案,更好的辦法是橫向移動,換一個部門,換一家公司,或者是旅行,甚至可以選擇在國外工作來解放你的思想,在全世界有許多技術中心,那裡對開發者的要求很高,這能幫助你開啟眼界。

6.保持緊密溝通

有些程式設計師認為自己做的是技術性工作,只要寫好程式碼就可以了。這是錯誤的認知。根據以往服務候選人的經驗來看,那些有意識在工作之餘關注行業動態,積攢人脈資源,並且樂於與同行溝通的程式設計師,往往在職業發展的路上走得更遠。
一方面,程式設計師可以通過這些方式隨時評估自己在市場上的價值和優勢,當行業和技術的風向發生轉變時,及時對自身查漏補缺,避免被時代拋棄。另一方面,人脈資源的積累,有時也能對自己下一次換工作起到雪中送炭的作用。
可見,行業資訊、公司動態的互通有無對於職業發展有著至關重要的影響,準確地把握行業動態有助於員工抓住一些轉瞬即逝的機會。
而對於資訊的獲取,自己的朋友、前同事、公司 HR 還有靠譜的獵頭、100offer 的職業顧問等,這些都是可以利用的資源,同時也可以參加一些展覽、峰會等線下活動。尤其對於那些自己感興趣的技術方向,儘量積累一些人脈資源,一次有效的內推往往比海投簡歷更有效果。