⑴ 演算法工程師未來的發展方向35歲以後呢
技術能力是技術人員的立身之本。站在演算法的角度,這里的技術能力主要是演算法應用能力,包括閱讀論文、演算法實現、工程化以及相關文檔的撰寫。
技術人員常見的一個認知誤區是技術大於一切,認為只要技術做好了,就應該得到認可或獎勵。事實上,技術在大多數情況下只是商業中的一環,技術做得好不能確保商業上的成功。
以自營電商為例,技術人員做一款功能強大的購物APP不難,但同時必須有商品研發、供應鏈和物流配送才能完成一個極小的商業閉環。此外,要想商品賣得好得有市場和運營團隊一起發力。在這樣的背景下,購物APP只是諸多商業環節中的一個節點,因此僅僅依賴軟體研發技術顯然不足以實現商業上的成功。好的技術團隊必須始終圍繞各商業環節,有能力定位問題,並研發工具有效地解決問題。
作為演算法工程師,在立項和需求評審時,需要有能力評估項目為業務帶來的價值以及演算法在整個項目中的價值,從而避免把精力浪費在「投入產出比」不高的事情上。如何做到這一步呢?除了有扎實的技術,還需要深入了解業務。
需要了解的業務知識包括(但不限於)商業模式、業務流程、業務限制以及與當前業務相關的技術等等。演算法工程師了解業務的另一個好處是洞察需求,解決問題的同時可以發現更多的技術問題,從而推動業務的進步。
技術人員最難跨越的是從技術能力到業務能力的提升。有兩方面原因:一是技術人員主觀上不太願意處理業務問題(扯皮的事情較多);二是技術人員晉升和跳槽時主要被考察的還是技術,因此業務能力在有些技術人員看來短期的收益不高。
架構能力是一種解決復雜問題的能力,它需要考慮業務的現狀和未來,把復雜問題分解成簡單問題,然後給出解決方案。與軟體架構相比,演算法架構更偏向業務,不僅要對業務進行建模和抽象,還要考慮工程實現,以便技術方案在實際業務中落地。因此,良好的技術能力和業務能力是演算法架構能力的基礎。
演算法相關的技術項目可能涉及到與其它技術工種的配合,例如:產品經理、數據分析、數據開發、前端、後端、測試、運維等。因此,演算法工程師設計的技術方案應該考慮到演算法模塊與其它技術模塊的解耦與協同。
演算法工程師做解決方案時應該從全局出發:一是技術上不僅考慮演算法而且還要考慮工程實現和產品化(切忌手裡有錘子,看什麼都是釘子的想法);二是從整體業務的角度考慮項目帶來的收益。例如,假設推薦系統的重構可以帶來推薦模塊的轉化率提升。那麼這件事情一定值得做嗎?我們還應該評估這個提升效果對大盤利潤的影響。如果對大盤利潤的提升有限,或許應該把精力投入在更有價值的項目中。