⑴ 算法工程师未来的发展方向35岁以后呢
技术能力是技术人员的立身之本。站在算法的角度,这里的技术能力主要是算法应用能力,包括阅读论文、算法实现、工程化以及相关文档的撰写。
技术人员常见的一个认知误区是技术大于一切,认为只要技术做好了,就应该得到认可或奖励。事实上,技术在大多数情况下只是商业中的一环,技术做得好不能确保商业上的成功。
以自营电商为例,技术人员做一款功能强大的购物APP不难,但同时必须有商品研发、供应链和物流配送才能完成一个极小的商业闭环。此外,要想商品卖得好得有市场和运营团队一起发力。在这样的背景下,购物APP只是诸多商业环节中的一个节点,因此仅仅依赖软件研发技术显然不足以实现商业上的成功。好的技术团队必须始终围绕各商业环节,有能力定位问题,并研发工具有效地解决问题。
作为算法工程师,在立项和需求评审时,需要有能力评估项目为业务带来的价值以及算法在整个项目中的价值,从而避免把精力浪费在“投入产出比”不高的事情上。如何做到这一步呢?除了有扎实的技术,还需要深入了解业务。
需要了解的业务知识包括(但不限于)商业模式、业务流程、业务限制以及与当前业务相关的技术等等。算法工程师了解业务的另一个好处是洞察需求,解决问题的同时可以发现更多的技术问题,从而推动业务的进步。
技术人员最难跨越的是从技术能力到业务能力的提升。有两方面原因:一是技术人员主观上不太愿意处理业务问题(扯皮的事情较多);二是技术人员晋升和跳槽时主要被考察的还是技术,因此业务能力在有些技术人员看来短期的收益不高。
架构能力是一种解决复杂问题的能力,它需要考虑业务的现状和未来,把复杂问题分解成简单问题,然后给出解决方案。与软件架构相比,算法架构更偏向业务,不仅要对业务进行建模和抽象,还要考虑工程实现,以便技术方案在实际业务中落地。因此,良好的技术能力和业务能力是算法架构能力的基础。
算法相关的技术项目可能涉及到与其它技术工种的配合,例如:产品经理、数据分析、数据开发、前端、后端、测试、运维等。因此,算法工程师设计的技术方案应该考虑到算法模块与其它技术模块的解耦与协同。
算法工程师做解决方案时应该从全局出发:一是技术上不仅考虑算法而且还要考虑工程实现和产品化(切忌手里有锤子,看什么都是钉子的想法);二是从整体业务的角度考虑项目带来的收益。例如,假设推荐系统的重构可以带来推荐模块的转化率提升。那么这件事情一定值得做吗?我们还应该评估这个提升效果对大盘利润的影响。如果对大盘利润的提升有限,或许应该把精力投入在更有价值的项目中。