问问---技术成长路线

这篇博客详细阐述了初级、中级和高级算法工程师的能力要求,从编程语言到操作系统,再到Linux基础和计算机语言理论,提供了一条清晰的学习路径。强调了在技术路线图上不断深化和拓宽知识的重要性,特别提到了Scala和Java在大数据处理中的应用,以及对JVM、操作系统和Linux基础的掌握。同时,鼓励工程师关注非技术部分的成长。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工程师能力层级概览

对于不同级别的算法工程师技能要求,我们大致可以分成以下几个层级:

  • 初级:可以在一些指导和协助下独立完成开发任务。具体到算法方面,需要你对于工具框架,建模技术,业务特性等方面有一定的了解,可以独立实现一些算法项目上的需求。
  • 中级:可以基本独立完成一个项目的开发与交付。在初级工程师的基础上,对于深入了解技术原理的要求会更高,并且能够应对项目中各种复杂多变的挑战,对于已有技术和工具进行改造适配。在整体工程化交付方面,对于代码质量,架构设计,甚至项目管理方面的要求会开始显现。另外从业务出发来评估技术选型和方案也变得尤为重要。
  • 高级:可以独立负责一条产品线的运作。在中级工程师的基础上,需要更广阔的技术视野与开拓创新能力,定义整个产品线的前进方向。解决问题已经不是关键,更重要的是提出和定义问题,能够打造出在业界具有领先性和差异性的产品,为公司创造更大的价值。
  • 事实上对于不同层级的工程师,非技术部分的要求都有一定占比。本文主要聚焦在技术路线图上,对于其他方面的学习进阶路线不会做覆盖。

阅读建议

以下内容分工程基础,算法基础,算法工程交叉,工程深入方向,算法深入方向几个部分,在各个部分内部会进一步区分一些主题。在各个主题内部,也是有深入程度的区别的,不过限于篇幅没有进行详细的说明。建议学习路线可以先把两个基础部分与工作中较为相关的内容做一个整体基础的夯实,然后可以在后续交叉和深入方向的主题中选择感兴趣的进行深入了解和学习,过程中发现基础部分欠缺的,可以再回到基础部分查漏补缺,迭代前行。

 

工程基础

编程语言

Python  基础语法+编程规范

Scala/Java

Java目前是企业级开发中最常用的软件,包括在大数据领域,也是应用最广泛的语言,例如当年的Hadoop生态基本都是基于Java开发的。Scala由于其函数式编程的特性,在做数据处理方面提供了非常方便的API,也因为Spark等项目的火热,形成了一定的流行度。在进行企业级的软件开发,高性能,大规模数据处理等方面,JVM上的这两门语言有很大的实用价值,值得学习。

顺带一提,Scala本身是一门非常有意思的语言,其中函数式编程的思想与设计模式又是非常大的一块内容,对于拓宽视野,陶冶情操都是挺不错的选择。

考虑到算法工程师的工作内容属性,这边给出一个Scala的学习路线:

  • 学习掌握Scala的基本语法,开发环境配置,项目编译运行等基础知识。这里推荐Coursera上Martin Odersky的课程,《快学Scala》或《Programming in Scala》两本书也可以搭配着浏览参考。
    • 自我考核:能使用Scala来实现一些简单算法问题,例如DFS/BFS。或者使用Scala来处理一些日常数据工作,例如读取日志文件,提取一些关键信息等。
  • 学习使用Scala来开发Spark应用,推荐edX上的《Big Data Analytics Using Spark》或者Coursera上的《Big Data Analytics with Scala and Spark》,另外有些相关书籍也可以参考,比如《Spark快速大数据分析》等。
    • 自我考核:能够使用Spark的Scala API来进行大规模的数据分析及处理,完成lag feature之类的特征工程处理。
  • JVM的原理学习,Scala/Java都是JVM上运行的优秀语言,其背后是一个非常大的生态,包括在Web,Android,数据基础架构等方面有广泛的应用。JVM相比Python虚拟机,发展更加成熟,有一套非常完善的JDK工具链及衍生的各类项目,便于开发者debug,调优应用。这方面推荐学习周志明的《深入理解Java虚拟机》。
    • 自我考核:理解JVM GC原理,能通过JDK中相关工具或者优秀的第三方工具如arthas等,排查分析Spark数据应用的资源使用情况,GC profiling,hot method profiling等,进而进行参数优化。
  • 计算机语言理论。Programming Language作为计算机科学的一个重要分支,包含了很多值得深入研究的主题,例如类型论,程序分析,泛型,元编程,DSL,编译原理等。这方面的很多话题,在机器学习方面也有很多实际应用,比如TVM这类工作,涉及到大量编译原理的应用,知乎大佬“蓝色”也作为这个领域的专家在从事深度学习框架相关的工作。llvm, clang作者Chris Lattner也加入Google主导了Swift for Tensorflow等工作。Scala作为一门学术范非常强的语言,拥有极佳的FP,元编程等能力支持,强大的类型系统包括自动推理,泛型等等高级语言特性,相对来说是一门非常“值得”学习的新语言,也是一个进入PL领域深入学习的"gateway drug" :) 对这个方面有兴趣的同学,可以考虑阅读《Scala函数式编程》,《冒号课堂》,以及Coursera上《Programming Languages》也是一门非常好的课程。另外只想做科普级了解的同学,也可以读一读著名的《黑客与画家》感受一下。

 

基本概念

我们所编写的算法应用,都是通过操作系统的环境运行在物理硬件之上的。在实际运作过程中,会碰到不少相关的问题,例如为什么程序报了资源不足的错误,为什么notebook在浏览器里打不开,为什么进程hang住了没有响应等等,都需要一些操作系统的知识来帮助理解和分析问题,最终排查解决。操作系统涵盖的内容比较多,建议一开始只需要了解一些主要概念(例如硬件结构,CPU调度,进程,线程,内存管理,文件系统,IO,网络等),对于整体图景有一些感觉即可。后续碰到了实际问题,可以再在各个部分深入学习展开。优秀的学习资料也有很多,基本都是大部头,重点推荐《深入理解计算机系统》,《Operating Systems: Three Easy Pieces》,以及《现代操作系统》。

  • 自我考核:能够基本明确运行一个模型训练任务过程中,底层使用到的硬件,操作系统组件,及其交互运作的方式是如何的。

Linux基础

平时工作中最常用的两个操作系统CentOS和macOS,都是Unix/Linux系的,因此学习掌握相关的基础知识非常重要。一些必须掌握的知识点包括:Shell与命令行工具,软件包管理,用户及权限,系统进程管理,文件系统基础等。这方面的入门学习资料推荐《鸟哥的Linux私房菜》,基本涵盖了Linux系统管理员需要掌握知识的方方面面。进阶可以阅读《Unix环境高级编程》,对于各种系统调用的讲解非常深入,可以为后续性能调优等高级应用打下基础。

  • 自我考核:开发一个shell小工具,实现一些日常工作需求,例如定时自动清理数据文件夹中超过一定年龄的数据文件,自动清理内存占用较大且运行时间较久的jupyter notebook进程等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值