演算法工程師應該具備哪些工程能力?

2021-09-26 18:59:07 字數 2685 閱讀 5714

作者 | 木東居士

** | data_engineering

對於一名優秀的演算法工程師,他(她)要具備的不僅僅是出色的技術能力,也要有很深的業務理解能力和對外溝通能力,總之,要求可以很高!

但是,從職責能力的劃分上來講,演算法工程師首先是一名工程師,因此本文主要從工程能力要求上進行一些**。

開始之前先放乙份思維導圖,這將是這篇文章要分享的核心內容:

演算法工程師,從名字上我們就能看出,一名演算法工程師首先應該具備演算法能力工程能力,我們可以認為這是基礎的技術能力。由於現在開源技術的普及,sklearn、tensorflow 和 spark ml 基本已經成為大部分演算法工程師標配的工具庫了,因此,熟練的調包能力也是決定了一名演算法工程師能否快速實現需求。

其次,在真實的生產環境中,演算法的落地會遇到各種各樣的業務場景和資料環境,這也要求演算法工程師需要具備pipeline 構建能力,將整個生產環境中的資料流和模型打通。同時,在生產環境中,會出現各種「疑難雜症」等待你去解釋,比如說為什麼實驗效果特別差?為什麼模型效果不穩定?這就要要求演算法工程師需要具備一定的資料分析能力

很多時候,你會發現,你用在資料分析和pipeline構建上的精力可能佔據了你8成以上的工作內容。

當你具備了上面的能力時,你已經可以稱自己是一名演算法工程師了。此時,你可以去對著資料分析小得瑟一下:「你看,我能構建整個模型的pipeline,你卻只能拿到別人提供的資料後調調包吧。「或者,你也可以去找開發得瑟:」你看,我懂了很多演算法哦,你就只會寫**吧。「

得瑟完之後,我們還是回歸正題,演算法工程師只具備這樣能力是否已經夠了?答案當然是不夠的。由於不同公司的團隊成熟度不同,工具化和流程的成熟度都不同,這就會對演算法工程師有不同的要求,比如說模型發布能力報表開發能力,當然也會有一些其它能力,雖然可能不是特別重要,但是當這些工作沒人幫你做的時候,演算法工程師可能依然要承擔起這些工作內容,比如說灰度測試的能力、負載均衡的能力等等。

將上面的內容整理後,就是這樣乙份思維導圖了(一張圖多看幾篇更能加深印象,因此我再貼出來一遍)

演算法能力

演算法能力就不多說了,演算法工程師的基本能力要求,不懂演算法對於一名演算法工程師來講是不太合理的。這裡居士把統計學的內容也放進來了。

程式設計能力

程式設計能力主要分為兩部分:

調包能力

大家雖然會調侃調包俠,但是說實話,能調包調的很溜的人,也是不多的,比如說現在讓你自己用tensorflow構建乙個複雜網路,不能google,你能寫出來嗎?能記清楚用法嗎?

pipeline 構建能力

實時和離線模型一致性問題?

離線和實時特徵一致性問題?

實時特徵構建的問題?

資料延遲的問題?

很多時候,模型發布之類的工作是可以由其他同學支援完成,但是資料流這種問題更多的是需要演算法工程師來解決的。

資料分析能力

這裡的資料分析能力不是指商業分析或者業務分析,更多的是指特徵分析、演算法效果分析和各種異常問題定位分析的能力。

很多時候,兩個演算法工程師能力水平的強弱從資料分析能力上也能窺得一二。

輔助的技術能力是指,你會不會的影響不會特別大,但是也都是有用的能力,特別是不同公司的發展情況不同,很可能會出現乙個演算法工程師既要做資料接入、又要做資料清洗、還要做演算法平台

也要搞前端、還要負責模型上線、系統運維。

這裡就不再細講了。

聊一下對技術能力、工程能力和資料分析的思考。

居士個人的理解,技術能力更多的是偏向於乙個乙個的技術點,而工程能力更多就是在乙個團隊中將專案做好的能力。很多演算法出身的工程能力不行,那麼他做的單純的乙個模型是無法應用到實際生產中的,而工程就是指把理論落地實際生產的過程。那麼工程包含了什麼?它包括了系統架構設計和模組設計、資料流搭建和平台搭建、調包或演算法開發、分布式、上線以及各種落地的**開發。報表和監控,其實本質也是做資料流,邊緣性的可能要做些後台和前端的開發。

然後資料分析能力是什麼?資料分析(不是純粹的資料分析)除了分析方**和套路外,是乙個很綜合性、相對偏軟一點的能力,比如說你通過分析發現了我們的系統有哪些可以優化的點,通過分析發現了問題的原因是什麼,這些都是分析能力。

針對前面的內容,和 cathy 討論後,對整個思路做了新的梳理,大家直接看圖就好,居士也認為這樣描述可能更為合理。

這裡再補充乙個模型復現的能力,比如你看了一篇**,發現這個模型可能很適合自己的業務場景,那麼你是否能力將**裡面的模型快速用公司現有的平台和工具來復現?

居士認為,這乙個是乙個非常重要的能力,但是沒有想好具體該怎樣劃分。

優秀工程師應該具備哪些素質 優秀工程師的必備素質上

什麼是工程師?工程師是為解決問題而生的。應用工程技術科學和其他有關科學知識,解決工程技術中的各類具體問題。現代科技發展迅猛,使現代工程和工業生產出現了自動化 智慧型化 資訊化 動態化等許多新的特點。為了適應這些情況變化,工程師必須不斷提高自己的主觀在內素養,培養全面的技術能力和社會工作能力,建立合理...

工程師應具備的能力

工程師不僅需要熟練地技術能力,而且需要優秀的職業能力。技術能力體現為解決工程實際問題的能力,即必須擁有一項或多項專門技術。職業能力體現為職業道德溝通能力及團隊合作能力。我國大學傳統教育對前者有系統的教學方法,而後者則沒有得到重視,甚至被忽略然而在實際工作中,後者往往比前者更能為社會創造價值。1.技術...

測試工程師應該具備的軟性能力有哪些?

作為測試工程師,我們不僅要掌握相應的技術,還要了解一些必備的軟性能力,這樣才能在工作中游刃有餘。那麼有哪些軟性能力需要掌握呢,且聽我細細道來。這個毋庸置疑啊,現在每個招聘崗位,都有這個,但是我覺得作為測試,我們的溝通表達能力真的很重要。比如 1.在和開發溝通問題的時候,讓你描述乙個問題的現象,你支支...