隨著大數據和以深度學習為代表的人工智能技術的飛速發(fā)展,算法工程師這個職業(yè)逐漸成為國內互聯(lián)網行業(yè)的標配。2016年3月,谷歌旗下DeepMind公司的圍棋程序“AlphaGo”戰(zhàn)勝職業(yè)九段棋手李世石。這場著名的科技秀把人工智能的熱潮從學術界席卷到工業(yè)界、新聞媒體和廣大群眾。
外行人眼中的算法工程師是高收入和高科技的職業(yè);而新入行的人往往覺得算法工程師門檻低導致內卷化(人才飽和導致過度競爭)。隨著算法相關的工具越來越成熟,很多算法工程師自嘲為調包俠、調參俠,于是也開始有人唱衰這個職業(yè)。
本人作為有一些算法研究和實踐經驗的過來人,想分享一些自己在企業(yè)做算法工作的心得,順便為想入行做算法以及剛從事算法工作的朋友提供一些參考。本文的觀點基于個人的工作經驗和理解,如有不對的地方歡迎指正。
本文接下來的內容分為六個部分:
1. 什么是算法
2. 算法的應用場景
3. 算法技術介紹
4. 算法工程師的職業(yè)定位
5. 算法工程師的職業(yè)發(fā)展
6. 總結
1. 什么是算法
提到算法,有人可能會聯(lián)想到人工智能。個人覺得人工智能是個非常大的概念(很多算法技術似乎都可以歸類到人工智能),所以為了使敘述更清晰和聚焦,本文會避免用“人工智能”這樣的術語,而是盡量用更精確的詞匯來描述算法相關的技術。
狹義地看,算法是用計算機程序求解 計算問題的方法。定義一個計算問題有兩個要素:輸入和輸出。
例(素數判定問題):給定一個整數,判斷它是否為素數(素數是只能被1和自身整除且大于1的整數)。
以素數判定問題為例,它的輸入是一個整數,輸出是一個布爾值:“是”或“否”。求解素數判定問題的算法是一個滿足上述輸入和輸出條件的計算機程序。
在實際應用中,首先要明確算法需要解決的具體問題,以及對應的輸入和輸出,然后才是設計與實現(xiàn)算法。我們可以把一個算法理解成一個滿足輸入與輸出要求的硬件裝置或軟件模塊。從這個角度來看,算法工程師與軟件、硬件工程師的工作是相似的:實現(xiàn)滿足輸入與輸出要求的算法(軟件、硬件)模塊。
算法工程師的工作目標是實現(xiàn)“又快又好”的算法。具體來說,需要關注兩個要素:
解的質量算法輸出的結果稱為“解”。它的解是否“正確”或者說有多好?
解的效率算法的計算時間有多長?
更多關于算法的介紹可以參考經典教材《Introduction to Algorithms》(中文:算法導論),作者:T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein。
前面介紹了算法的基本概念,接下來我們看看算法在商業(yè)中的應用價值。
2. 算法的應用場景
算法產生商業(yè)價值有兩個思路:
產品研發(fā) 算法本身是商業(yè)產品的一個核心模塊。例如,“詞典筆”可以直接“掃一掃”書本上的文字就能實現(xiàn)單詞或句子的查詢和翻譯功能。
與傳統(tǒng)的詞典相比,它不僅提供了更方便的查詢方式,而且體積小巧、方便攜帶。為了實現(xiàn)這樣的產品功能,背后的一個核心算法是文本圖像識別(稱為OCR技術)。它解決的算法問題是這樣的:輸入一張文本照片,輸出照片中的文本內容。我們不難發(fā)現(xiàn),決定這個產品體驗好壞的關鍵因素之一就是文本識別的準確率。
降低業(yè)務的復雜性 當企業(yè)的規(guī)模增大,業(yè)務必然會變得越來越復雜。這個時候可能會導致兩種問題:
組織運轉效率降低,典型的表現(xiàn)就是人力成本高、協(xié)作困難、決策流程冗長;
各業(yè)務節(jié)點之前存在依賴關系,導致需要決策的“變量”太多以及決策“空間”太大。
由于任何一種決策結果都會帶來顯著的成本,因此尋求低成本高收益的決策變得非常困難。在這樣的背景下,只有把復雜的業(yè)務抽象成一個個高內聚、低耦合的模塊,然后用算法代替人工決策,才能達到降低成本、提高效率的目的。
接下來我們從三個角度介紹一些算法的商業(yè)應用:
自動化解決重復勞動。
車牌識別汽車進入單位、小區(qū)、上高速、停車等日常場景,管理人員一般都需要記錄車牌號以及出入場地時間。有了車牌識別技術,在這些場景下軟件系統(tǒng)可以代替人工,精準地記錄車輛號牌和出入場時間。
人臉識別人臉識別技術為金融和安防領域提供了廉價、準確且高效的身份核驗能力。以安檢為例,以往身份核驗流程是首先由被檢人提供證件,之后檢查官做人證對比,最后在后臺查詢被檢人的犯罪記錄。整個過程既費人又費時。有了人臉識別技術,被檢人只要面對攝像頭,系統(tǒng)就可以在1秒內完成身份核驗。
紙箱推薦在網絡購物中,商品發(fā)貨時一般需要被裝入紙箱。而紙箱的大小對用戶體驗和成本有著直接的影響。如果選擇更大的紙箱,對工人來說裝箱比較容易,但是成本高而且容易造成商品損壞;選擇稍小的紙箱,對工人來說裝箱耗時更長,會降低工作效率。
基于選擇紙箱這個頻繁操作的場景,我們設計了一套裝箱算法,為打包工人推薦最合適的紙箱,不僅節(jié)省了裝箱成本而且提升了用戶體驗。
個性化解決用戶需求。
內容推薦基于人的瀏覽行為與“內容”進行匹配,其中內容包括文章、商品、廣告等,素材形式有文本、圖片、語音和視頻。好的推薦算法可以讓用戶在APP中看到更多自己感興趣的內容,就會沉迷其中難以自拔。
換句話會說,用戶在APP上停留的時間越長,APP就可以把更多的廣告呈現(xiàn)在用戶面前,于是賺取更多的廣告費。
地圖導航生活中出差、旅行、接人、上班等場景大概率需要用到地圖導航。輸入出發(fā)地、目的地、交通方式等信息,背后的路徑規(guī)劃算法會根據地理信息自動幫我們規(guī)劃出一條路徑,甚至能避開擁堵和限行。
由于出行是人們的剛需,因此地圖導航是人們的必需品。它的商業(yè)價值不僅體現(xiàn)在廣告的觸達能力,更重要的是可以直接獲取珍貴的“線下”數據(出行數據),從而為其它的商業(yè)決策提供有價值的輸入,例如商業(yè)選址、餐館和景點的推薦等。
客服機器人在電商業(yè)務中,客服需要回答用戶的售前和售后提問,例如商品、活動、物流、保修等各種咨詢。尤其是在大促期間,常常會出現(xiàn)用戶咨詢量過大導致等待時間長的問題。
我們通過知識圖譜技術構建商品和物流相關的知識庫,然后把用戶經常咨詢的問題進行分類,基于自然語言處理的技術對用戶的提問進行解析和回答,從而在一定程度上提升用戶體驗并降低客服成本。
系統(tǒng)化解決復雜問題。
客服排班給客服安排上班的班次。當客服人數多達百人時,這個問題往往變得非常棘手。原因是現(xiàn)實中考慮的約束條件非常多,例如:
每個班次的客服人數不能低于指定的數量;
一個客服每個月必須休息8天,至少保證每月一次2天連休;
客服安排晚班之后,第二天不能上早班(因為需要休息);
一天同一個人只能安排一個班次;
每個人的晚班天數差異盡可能??;
當客服規(guī)模達到一定數量時,這個問題的復雜程度顯然出過了人的經驗能力。我們因此研發(fā)了一套排班算法來解決上述問題。
庫存調度用戶在網上下單之后,商品一般會從用戶所在區(qū)域的倉庫發(fā)貨,稱為本地發(fā)貨。由于不同客戶購買的商品和數量可能不同,因此單個倉庫的商品可能會發(fā)生供需不均的情況。
我們需要對全國各倉庫之間的商品進行調撥,目標是提高倉庫的本地發(fā)貨率。這樣一來不僅能節(jié)約配送成本,而且能提高配送時效。
庫存調度要解決如下問題:
哪些商品需要調度?
從哪調到哪?
調撥量如何計算?
安排幾輛貨車?
實際中需要考慮的限制因素也非常多:
箱規(guī):按整箱調撥;
調撥限制:有些商品在只能調撥到特定倉庫;
倉庫產能:倉庫每日可調撥的件數有限;
貨車容量:貨車的長寬高有尺寸限制;
大促和平銷的目標:平銷控成本,大促控本地缺貨;
我們自研了一套調撥系統(tǒng),可支持日均10萬商品的調撥計劃自動生成。試想一下,如果這背后沒有算法的支持,我們的人力成本、溝通協(xié)作成本以及軟件成本將會隨著業(yè)務的發(fā)展呈指數增長。
用戶觸達隨著互聯(lián)網技術的發(fā)展,商家觸達用戶變得越來越容易。常見的線上觸達方式有APP內的消息推送、短信和在線廣告。在這樣的背景下,商家觸達用戶需要從全局的角度來考慮,否則不僅浪費成本而且可能帶來極差的用戶體驗。
例如:一個用戶可能在同一天內被短信、消息推送和廣告彈窗的騷擾,從而引起用戶對商家的反感。因此,我們觸達用戶時需要對四個要素做決策:觸達人群、觸達時機、觸達方式和觸達內容。
由于不同的觸達方式對應不同的成本與收益,我們自研的這套全渠道觸達決策系統(tǒng)不但可以從全局優(yōu)化“投入產出比”,還能為被觸達用戶提供個性化的文案和紅包等權益。這背后的算法系統(tǒng)除了要考慮商業(yè)價值和用戶體驗,還要考慮如何在現(xiàn)有業(yè)務中以低成本、低風險的方式進行落地。
通過前文介紹的案例,我們可以看到算法既能作為商業(yè)產品的核心模塊輸出價值,也能簡化業(yè)務、降本提效,從而讓業(yè)務更快更好地發(fā)展。值得注意的是,算法是一個寬廣的技術領域,涉及的技術方向較多。下面我們列舉一些常見的算法技術。
3. 算法技術介紹
本節(jié)介紹的算法技術(或方向)僅限拋磚引玉,不宣稱公認的分類,也談不上深刻的理解。技術方向之間或多或少有重疊,也無法涵蓋所有算法方向。之所以列出這些方向,要么出于本人在工作中發(fā)現(xiàn)了它的應用價值,要么源自于本人的興趣。
算法理論
這里提到的算法理論實際上是指算法相關的基礎知識,主要分為兩塊:1. 數據結構;2. 算法設計與分析。數據結構是算法的基石,掌握必要的數據結構才有可能去實現(xiàn)一個算法。前文提到算法工程師還關心解的質量和效率,而算法設計與分析的理論可以有效地指導我們如何做這件事。
在實際工作中,或許90%以上的項目都可以使用現(xiàn)有的算法工具求解,而不需要我們親自設計算法。但是一旦遇到真正棘手的問題,它需要我們有能力應對,這也是算法工程師的價值所在。
我們曾經做包材推薦項目時需要求解一個三維裝箱問題。根據算法理論,三維裝箱問題是一個 NP-難 問題。這意味著(在NP不等于P的假設下),它不存在“又快又好”的算法(即,多項式時間的精確算法)。于是我們設計算法方案的時候分兩部分考慮:
當問題規(guī)模較小時采用精確算法;
當問題規(guī)模較大時采用啟發(fā)式算法。
在求解小規(guī)模三維裝箱問題時,我們對計算效率有較高要求。當時開源的求解器不能滿足我們的需求,因此我們決定自研一套算法。這個時候就要求我們對算法設計的方法有一定了解。在項目中,我們用到了 規(guī)約(Reduction)的技巧,把一個三維裝箱問題轉化成 圖(Graph)上的搜索問題,然后利用圖相關的數據結構簡化三維裝箱操作。
概率統(tǒng)計
數據往往是企業(yè)的寶貴資產,因為它不僅可以為商業(yè)決策提供依據,還是業(yè)務的護城河。數據之所以會有價值,還依賴于正確的數據加工和使用方法。而概率統(tǒng)計提供了描述數據規(guī)律的方法,利用數據的規(guī)律,使得我們可以預判未來的趨勢、提高決策效率、降低決策成本。
雖然這是個大數據時代,但不意味著我們想要的數據應有盡有。在實際項目中,我們常常面臨樣本量不足的問題。以銷量預測為例,假設我們要預測每個商品在 “雙十一”期間的銷量。這個時候我們發(fā)現(xiàn)一共才搞過四次雙十一活動。換句話說,每個商品關于歷史雙十一的銷量最多只有四個樣本點。如果簡單地擬合這個規(guī)律,在實際中容易出現(xiàn)過擬合的問題,即導致預測值與真實值偏差很大。
在這種情況下,我們可以考慮結合主觀經驗與客觀事實。例如,假設雙十一的銷量與平銷的差異服從某個規(guī)律,然后借助歷史上幾次雙十一的銷售數據來修正這個規(guī)律。這套方法在統(tǒng)計上稱為貝葉斯估計(Bayesian Estimation):主觀經驗得到的規(guī)律稱為 先驗分布,利用客觀事實修正后得到的規(guī)律稱為 后驗分布。貝葉斯估計提供了一套主觀經驗與客觀事實結合的方法,能有效地彌補實際情況下樣本量不足的問題。
機器學習
網絡上每天生產著海量的文本、圖片、語音和視頻信息,它們也是企業(yè)珍貴的數據資產,有著巨大的商業(yè)價值。那么如何用算法對這些信息進行分類、理解以及分發(fā)?
深度學習普及之前,業(yè)界主流仍然是采用基于統(tǒng)計的方法處理這些數據,即,利用概率分布函數來表示數據的規(guī)律。注意到數字媒體這一類數據的維度非常高,例如,一張手機照片的像素點就高達千萬,好處是它能表達的內容非常豐富。但是從算法的角度來看,這一類高維數據非常難以處理,因為已知的概率分布函數難以表達這種規(guī)律,即使這些規(guī)律在人看來很簡單。以文本識別為例,人可以快速識別出照片中的文字,但是我們很難找到一個函數把圖片上的像素值和它表達的文字關聯(lián)起來。
而深度學習提供了一種“逼近”這種復雜函數的方法。它通過定義“元函數”(稱為激活函數)和仿射變換,然后利用海量的數據來擬合出這種復雜的函數關系(這個步驟稱為“訓練”),從而可以表達“樣本”與“標簽”之間的聯(lián)系。
例如,通過輸入大量包含水果的照片“訓練”一個深度學習模型,從而讓計算機有能力識別照片中的水果。這背后并不是數據讓計算機有了真正的智能,而是它把照片的像素值作為算法模型的輸入,用類似于最小二乘回歸的方法擬合出了一個復雜的函數,把像素值與“水果”之間的規(guī)律表達出來。
深度學習這種自動化的擬合能力使它可以在海量數據中學習數據與標簽之間的聯(lián)系,因而非常適合用來解決分類問題,例如人臉識別、圖像分割、語音識別、機器翻譯等。隨著機器學習工具和相關計算硬件(GPU、TPU、FPGA等)的發(fā)展成熟,機器學習應用的門檻進一步降低,模型的訓練和部署已經變得非常便捷。我們有理由相信,未來有只要數據的地方就有機器學習算法創(chuàng)造價值的機會。
建模與優(yōu)化
數學建模是一種把復雜問題抽象化的技術,它用數學語言描述現(xiàn)實世界的問題,使得我們可以用系統(tǒng)的方法對它求解和分析。而優(yōu)化方法可以看作是求解數學模型的工具,例如前文提到的深度學習技術,本質上是用梯度下降的方法解一個優(yōu)化問題。
在企業(yè)經營中,利潤和成本結構往往是非常復雜的。以網易嚴選的電商業(yè)務為例,我們的業(yè)務鏈路包含商品研發(fā)、采購、倉儲、質檢、配送、營銷、渠道和售后。業(yè)務節(jié)點之間的成本(或利潤)可能同時存在依賴和沖突的關系,因此各節(jié)點做好自己的業(yè)務不一定意味著整體業(yè)務會好。
如何站在全局的角度來思考并解決業(yè)務中的復雜問題?需要分三步:
充分理解業(yè)務;
把業(yè)務問題抽象化;
用數學語言表達然后求解。
構建數學模型可以使用一套標準方法,即梳理數學模型的四要素:參數、變量、目標和約束,其中參數是指問題的輸入。
以數獨游戲(Sudoku)為例,把數字1-9填入下圖的空格子中。
填入的數字必須滿足三個條件:
每個區(qū)塊包含數字1-9;
(圖中灰色方框包含的3×3小格子代表一個區(qū)塊)
每行包含數字1-9;
每列包含數字1-9。
問題的 輸入參數 是圖中給定的數字;變量 是空白處需要填入的數字;約束 是上述三個條件。這個問題沒有優(yōu)化目標。這樣一來,我們可以得到求解數獨問題的數學模型:
利用通用的求解工具求解這個數學模型,即可得到數獨問題的解。
我們研發(fā)的決策產品, 例如庫存平衡系統(tǒng)、自動補貨系統(tǒng)、排班系統(tǒng)和全渠道觸達系統(tǒng),都是以抽象的數學模型為基礎,并持續(xù)地迭代模型和算法。這些算法產品在提升業(yè)務目標的同時,推動業(yè)務沿著低復雜性的方向發(fā)展。
個性化技術
在電商業(yè)務中,一個殺手級的功能是可以為用戶帶來個性化的購物體驗(俗稱“千人千面”),因而使得網絡購物比線下購物更高效。個性化技術的典型代表是內容推薦技術,在電商業(yè)務中,推薦的內容以商品為主。
為了實現(xiàn)更精準的推薦,技術層面要不僅要參考商品和用戶的特征,甚至還需要考慮營銷活動、庫存、用戶體驗等因素。這背后可能還需要圖像處理、音視頻處理和自然語言處理等技術的協(xié)同。
以生成商品頁面為例,一般它包含了賣點文案、圖片和視頻介紹。為了給用戶呈現(xiàn)個性化的文案、圖片和視頻風格,從而刺激用戶下單,我們用自然語言處理技術抽取商品信息并生成賣點文案,用圖像生成技術制作不同風格的商品圖片。
通過算法挖掘商品評論,我們可以自動化地提取商品賣點并呈現(xiàn)給用戶,促進用戶下單;對差評原因分類,從而改進商品和提升購物體驗;通過建立商品知識圖譜,用對話生成的技術回答用戶的售前和售后提問,從而提升用戶體驗并降低客服成本。
回顧前文提到的深度學習技術,它的成功離不開它在圖像、音視頻和自然語言領域的突破。而個性化技術本質上也是在海量非結構化數據中擬合人與內容的聯(lián)系。因此,應用深度學習技術可以有效地實現(xiàn)多種場景下的個性化能力,例如猜你喜歡、新品推薦、個性化文案等。
更多的技術
前文提到的算法技術只是工業(yè)應用中的冰山一角。還有非常多不同的算法在工業(yè)界中大放異彩,例如計算機圖形學用于動畫、游戲和工業(yè)設計中的三維建模,有限元分析用于建筑和橋梁設計,同步定位與地圖構建技術(SLAM)用于機器人和自動駕駛等等。
世界在變化,用戶需求在變化,因而企業(yè)面對的問題也在不斷變化。技術人員應該意識到沒有哪門技術能解決所有問題,而技術交叉越來越普遍,因此我們需要保持技術嗅覺和好奇心,堅持學習,然后用適合的技術解決問題。
4. 職業(yè)定位
前文介紹了一些算法技術,但實際上并沒有在技術細節(jié)層面展開,而是始終圍繞技術在商業(yè)中的應用價值,目的是想強調兩點:一是在企業(yè)中技術必須創(chuàng)造商業(yè)價值,這樣才能讓企業(yè)在競爭中領先,同時促進行業(yè)的進步;二是算法工程師的職責以“應用”算法為主,不能脫離業(yè)務。
我把算法工程師分為三種類型(我承認可能過于狹隘,畢竟某些企業(yè)還存在學術型的算法人才):
產品研發(fā)型
為產品研發(fā)提供技術支持。這種情況下,算法一般是商業(yè)產品的一個模塊。例如:詞典筆的文本識別功能、汽車的自動駕駛系統(tǒng)、電商APP的搜索功能等。
產品研發(fā)型的算法工程師主要關心產品的技術實現(xiàn),用算法技術為用戶提供極致的體驗。這種情況下,只要產品賣得好,算法的價值就能充分體現(xiàn)。因此,產品研發(fā)型的算法工程師一般出現(xiàn)在商業(yè)模式比較清晰的業(yè)務(例如賣產品、賣廣告)。
業(yè)務優(yōu)化型
當業(yè)務發(fā)展到一定階段可能會面臨兩種局面:一是規(guī)模太大,例如用戶數、員工數、設備數、產品數等非常龐大;二是業(yè)務復雜,業(yè)務節(jié)點之間依賴與競爭并存,導致成本和利潤構成復雜。這樣會造成業(yè)務的運轉效率降低,企業(yè)成本增加。
在這樣的背景下,算法工程師需要為企業(yè)降本提效。例如:
實現(xiàn)業(yè)務節(jié)點的自動化;
做精細化的決策;
業(yè)務建模與流程仿真。
以零售中的補貨為例,庫存量的多少直接影響到企業(yè)的成本和利潤。一般來說,從下采購單到貨品入庫需要制造和運輸時間(稱為提前期,短則數周長則數月),因此商家需要預估未來一段時間的銷售量,依此計算采購量。由于預測不可能精準,所以會導致計算的采購量與實際需求有偏差。采購多了不僅占用資金而且會增大庫存積壓的風險;采購少了就會造成缺貨,從而損失銷售利潤。因此,采購量的計算模型直接影響到商家的成本和利潤。
類似這樣的決策問題在零售業(yè)中比比皆是,算法工程師需要建立符合業(yè)務的數學模型,用科學的方法為企業(yè)做出最優(yōu)決策。
業(yè)務優(yōu)化型算法工程師的價值在于創(chuàng)造“增量”價值,即帶來成本的節(jié)約、效率的提升或利潤的增加。在日常工作中,我們需要評估算法項目帶來的增量價值,避免把過多的精力放在價值不高的事情上。
需求洞察型
技術研發(fā)最難的地方有時候不是解決問題,而是發(fā)現(xiàn)問題。比如復盤業(yè)務數據的時候,發(fā)現(xiàn)用戶規(guī)?;蚪洜I利潤不達標,這個屬于業(yè)務癥狀。那么造成這些癥狀背后的主要原因是什么?這是我們需要回答的問題。算法工程師要有能力從數據的角度發(fā)現(xiàn)問題、抽象問題以及提供解決方案。
有人可能會質疑,難道這不是數據分析師的職責嗎?沒錯,數據分析師當然可以做這件事。但是對其能力的要求可能不僅限統(tǒng)計分析,還要有一定的建模和計算能力。事實上,發(fā)現(xiàn)技術問題的本質是定義技術問題,而定義技術問題需要對技術有較深的理解。
下面我舉一個例子來說明這個觀點。我們曾經做一個包材項目,目標是降低消耗紙箱的成本。我們的技術思路是研發(fā)一套三維裝箱算法,給倉庫打包的工人推薦最優(yōu)箱型,從而節(jié)省裝箱成本。事實證明這套算法確實產生了顯著的效果。那么后續(xù)如何進一步降低紙箱成本呢?
經過思考我們發(fā)現(xiàn),這套三維裝箱算法還可以用來優(yōu)化紙箱的尺寸,從而達到進一步降低紙箱成本的目的。之后我們用算法設計的新箱型,用歷史訂單進行了一次模擬,評估發(fā)現(xiàn)確實可以顯著降低紙箱成本,于是推動了新箱型在業(yè)務中的落地?;仡欉@個案例,我們從紙箱推薦問題出發(fā),進而研發(fā)紙箱設計算法。這個研發(fā)需求的變化來源于我們對業(yè)務的理解和技術的認知。
算法工程師走到這個階段,除了對技術能力的要求,還需要承擔部分數據分析、產品設計甚至是業(yè)務操作的職能。從另外一個角度來看,數據分析師、產品經理、業(yè)務人員也應該掌握一些算法能力,以便從技術角度思考問題或者讓技術人員更快速地定位問題。
小結隨著技術工具越來越成熟,技術應用的門檻越來越低,個人覺得未來對復合型人才的需求會越來越旺盛。作為算法工程師的你,不妨問自己幾個問題:
我們的商業(yè)產品是什么?它是否以算法為核心的產品?
我參與的算法項目,產生的商業(yè)價值是多少?
我們的商業(yè)模式是什么?業(yè)務的機會點在哪?
企業(yè)在不同的發(fā)展階段和不同的項目中對算法人才的要求是不一樣的,因此要求我們能夠在不同角色之間切換。技術是我們的出發(fā)點,但解決問題才是我們的終點。只有站在商業(yè)的角度思考技術,才能洞察需求和創(chuàng)造商業(yè)價值,進而提升自身的競爭力。
5. 職業(yè)發(fā)展
技術在進步,需求在變化。只有洞察變化,才有可能引領技術創(chuàng)新,進而提升自己的職場競爭力。下面我站在職業(yè)發(fā)展的角度,探討一下算法工程師需要具備的能力(我承認又狹隘了,畢竟作者本人菜雞一只)。
技術能力
技術能力是技術人員的立身之本。站在算法的角度,這里的技術能力主要是算法應用能力,包括閱讀論文、算法實現(xiàn)、工程化以及相關文檔的撰寫。
技術人員常見的一個認知誤區(qū)是技術大于一切,認為只要技術做好了,就應該得到認可或獎勵。事實上,技術在大多數情況下只是商業(yè)中的一環(huán),技術做得好不能確保商業(yè)上的成功。
以自營電商為例,技術人員做一款功能強大的購物APP不難,但同時必須有商品研發(fā)、供應鏈和物流配送才能完成一個極小的商業(yè)閉環(huán)。此外,要想商品賣得好得有市場和運營團隊一起發(fā)力。在這樣的背景下,購物APP只是諸多商業(yè)環(huán)節(jié)中的一個節(jié)點,因此僅僅依賴軟件研發(fā)技術顯然不足以實現(xiàn)商業(yè)上的成功。好的技術團隊必須始終圍繞各商業(yè)環(huán)節(jié),有能力定位問題,并研發(fā)工具有效地解決問題。
業(yè)務能力
作為算法工程師,在立項和需求評審時,需要有能力評估項目為業(yè)務帶來的價值以及算法在整個項目中的價值,從而避免把精力浪費在“投入產出比”不高的事情上。如何做到這一步呢?除了有扎實的技術,還需要深入了解業(yè)務。
需要了解的業(yè)務知識包括(但不限于)商業(yè)模式、業(yè)務流程、業(yè)務限制以及與當前業(yè)務相關的技術等等。算法工程師了解業(yè)務的另一個好處是洞察需求,解決問題的同時可以發(fā)現(xiàn)更多的技術問題,從而推動業(yè)務的進步。
技術人員最難跨越的是從技術能力到業(yè)務能力的提升。有兩方面原因:一是技術人員主觀上不太愿意處理業(yè)務問題(扯皮的事情較多);二是技術人員晉升和跳槽時主要被考察的還是技術,因此業(yè)務能力在有些技術人員看來短期的收益不高。
架構能力
架構能力是一種解決復雜問題的能力,它需要考慮業(yè)務的現(xiàn)狀和未來,把復雜問題分解成簡單問題,然后給出解決方案。與軟件架構相比,算法架構更偏向業(yè)務,不僅要對業(yè)務進行建模和抽象,還要考慮工程實現(xiàn),以便技術方案在實際業(yè)務中落地。因此,良好的技術能力和業(yè)務能力是算法架構能力的基礎。
算法相關的技術項目可能涉及到與其它技術工種的配合,例如:產品經理、數據分析、數據開發(fā)、前端、后端、測試、運維等。因此,算法工程師設計的技術方案應該考慮到算法模塊與其它技術模塊的解耦與協(xié)同。
算法工程師做解決方案時應該從全局出發(fā):一是技術上不僅考慮算法而且還要考慮工程實現(xiàn)和產品化(切忌手里有錘子,看什么都是釘子的想法);二是從整體業(yè)務的角度考慮項目帶來的收益。例如,假設推薦系統(tǒng)的重構可以帶來推薦模塊的轉化率提升。那么這件事情一定值得做嗎?我們還應該評估這個提升效果對大盤利潤的影響。如果對大盤利潤的提升有限,或許應該把精力投入在更有價值的項目中。
管理能力
在互聯(lián)網行業(yè),多工種協(xié)作是常態(tài),但管理能力卻恰恰是技術人員最容易忽略的一項能力。這里說的管理能力不是站在管理人的角度,而是站在取得業(yè)務結果的角度。它主要體現(xiàn)在:溝通協(xié)作、項目管理、目標管理和風險管理。
簡單來說,就是把自己負責的事情做好而且講明白,即:
把要做的事講清楚;
按要求交付工作內容;
把業(yè)務結果講清楚;
把風險講清楚。
我在工作中發(fā)現(xiàn),不重視管理能力的技術人員常常面臨這樣的尷尬局面:辛辛苦苦寫了很多代碼,最后項目卻沒有上線;或者項目上線了卻說不清收益。然后看著自己的同事,覺得他代碼能力不如自己,研究能力也不如自己,卻屢次升職加薪。于是內心抱怨著命運的不公:寫代碼的不如寫PPT的!
管理能力的提升不是一朝一夕,希望算法工程師們重視管理能力,在實際項目中不斷磨練自己。說不定升職加薪不過是水到渠成的事。
6. 總結
本文花了較大篇幅介紹算法的概念、應用場景和算法技術,目的是強調算法技術必須創(chuàng)造商業(yè)價值。隨著科技進步和全球數字化時代的到來,商業(yè)決策只會變得越來越復雜,而算法產生價值的空間一定越來越大。
從前文提到的應用場景,我們看到算法工程師這個職業(yè)的工作內容是非常多元化的??鋸埖卣f,算法工作簡直沒有邊界,這也對算法工程師提出了更高的要求。我總結成兩點:
1. 算法工程師有三種類型:產品研發(fā)型、業(yè)務優(yōu)化型和需求洞察型。企業(yè)在不同階段以及不同項目中,對算法的需求是不同的。我們需要有能力洞察需求,并按需切換自己的角色。
2. 從職業(yè)發(fā)展的角度來看,算法工程師需要掌握四種能力:技術能力、業(yè)務能力、架構能力和管理能力。業(yè)務能力和管理能力非常重要,但往往容易被技術人員輕視。
最后聲明一下,文中的觀點基于個人工作經驗,由于個人經歷的狹隘和認知的不足,難免有不正確的地方,歡迎讀者指出。
?推薦閱讀:2022新疆高考防疫須知
?推薦閱讀:西藏:2022年度房地產估價師職業(yè)資格考試報名工作的通知
?推薦閱讀:吉林2023年二級建造師考試準考證打印時間:考前一周內
?推薦閱讀:營養(yǎng)師證報名入口是什么 一年有幾次機會
?推薦閱讀:高中美術教師資格證考試科目有哪些 報名條件有哪些
以上內容由河南考試信息網為您收集整理!如果您覺得有用,歡迎分享給朋友!掃描下方二維碼關注我們,獲取更多有用考試信息!
速覽!注冊城鄉(xiāng)規(guī)劃師拿證后別忘抵個稅!
已通過2023注冊城鄉(xiāng)規(guī)劃師考試的同學們想必都已順利下載了注冊城鄉(xiāng)規(guī)劃師電子證書啦!拿到證書后,同學們可以抵扣個人所得稅啦,抓緊時間辦理吧!注冊城鄉(xiāng)規(guī)劃師證書屬于專業(yè)技術人員職業(yè)資格中的準入類證書。一,最新增加為7項附加扣除2023年12月1日-12月31日,納稅人需對次年享受個稅專項附加扣除的內容進行確認。...0人閱讀時間:2023-12-26好機會!二建報名條件放寬!
在報名二級建造師執(zhí)業(yè)資格考試的條件中,許多省份要求申請者必須滿足以下條件:擁有工程類或工程經濟類中等??苹蚋邔W歷,并且從事建設工程項目施工管理工作至少2年。只有符合這些條件的人員才能參加考試。然而,由于市場緊缺,部分地區(qū)放寬了二級建造師報名條件。在以下七個地區(qū),即使沒有相關專業(yè)背景,也可以報考。重慶具備其他...0人閱讀時間:2023-12-26最新整理!24年一級注冊消防工程師報名條件相關問題及解答!
2024考季即將開始,你對2024年一級注冊消防工程師報考的相關信息了解多少呢?哪種學歷可以報考?畢業(yè)多久后可以報考?如何計算工作年限?今天我將帶你了解考取一級注冊消防工程師的報考條件!什么樣的學歷和專業(yè)可以報考?大專以上學歷,沒有專業(yè)沒有限制,消防工程及相關專業(yè)與其他專業(yè)都可以報考,只不過所需要的工作年限不...0人閱讀時間:2023-12-26速覽!2024年5月CFA考試安排及費用發(fā)布!
2024年5月考期時間安排已正式公布!快來看看CFA考試時間安排、報名要求及流程吧~很多同學尤其是小白黨,學習進度一直提不起來的一個關鍵原因就是對CFA不夠了解,沒辦法制定全周期的復習計劃。所以小編今天給大家?guī)砹薈FA考試指南!一、CFA考試時間安排及費用協(xié)會在官網已正式公布24年CFA考試時間!小編已經將...0人閱讀時間:2023-12-26想要成功報名,必須注意!2024初級會計報名開啟!
部分地區(qū)已發(fā)布了2024年的初級會計考試安排!不少地區(qū)要求考生需要做信息采集,但是很多小伙伴是第一次備考,可能有很多疑問:信息采集是什么?哪些地區(qū)需要做信息采集?需要哪些材料?今天小編給大家匯總了相關解答,一起來看看吧!信息采集是什么?會計人員信息采集是指當地的主管機關采集會計從業(yè)人員或者會計考試報名人員的基...0人閱讀時間:2023-12-26