最近为中文社区写了一篇developer career path的稿子
lvalv
2020-10-19 06:53:23
( reads)
职坛很多资深的同行,希望有机会和大家分享讨论。
=======================================================================
今天借这个平台和大家聊聊developer的career path。我思考这个问题很多年了, 一直试图找到适合自己的道路。希望和有类似困扰的朋友们分享, 帮初入行的朋友少走弯路。也借此机会和群里资深的朋友们讨论, 互相启发。
Developer是比较generic的岗位,几乎所有的行业都需要,市场需求一直强劲。初级岗位对相关学历和交流要求较低,收入不错,机会多。 因此吸引了大量的理工背景的移民转行,新生代年轻人也源源不断加入。
说说负面的。Developer工作强度高(大概率加班),在非科技行业visibility低(升职机会少), 知识更新的速度快,入行要有终身学习的觉悟。
Developer的career path有三个方向:
- 横向的不同的技术领域间的切换。比如Web转Mobile,backend转Big Data。
- 纵向的成长,就是内部升职,承担更大责任,
属于leadership层面的成长。 - 斜向的发展 (念着真别扭),转行其他岗位,比如:PM, BA, DA(Data Analysis),QA, Product Manager等等。
几个方向可以在不同时期组合进行。 比如早期更换技术领域扩大视野, 中期在稳定的公司多做几年争取升职。因人而异,没有定式。
当然还有一个方向,创业自己开公司。大话题,咱今天就不讨论了。
先说横向的发展,我根据市场需求,粗分成:Web, Mobile, Data Engineer, Machine Learning Engineer, DevOps几个领域,每个都有自己的技术stack和特点。 新手入门到成为senior至少需要几个industry level的项目,5年+的时间沉淀。
Web Developer是个大类。细分有web frontend, backend和full stack等等。
很多转行新人从web frontend开始,自学流行的framework( 比如REACT, Angular,Vue)开启职业生涯。
Full stack是这几年才流行起来的title,但是职责并不新, 要全栈技能:Frontend UI开发和后台(比如数据库)都有涉足, 可以独立完成中小型项目。
Backend 需要一定的经验或相关学历,database, streaming, distributed system, 一般大型复杂度高的系统会有专门的backend developer岗位。归在web里不太精确, 可以单提出来算一类。
Web的技术stack最多样化,几乎所有的主流语言都有web framework。Backend的技术更是源远流长、 百花齐放,篇幅有限不展开了。
Mobile Developer。Mobile是继Web后的一大热点, 大约10年前开始爆炸增长(iPhone问世)。很多web developer在这个时期转到Mobile领域。 主要技术stack有iOS 的SWIFT/Objective C,Android的Kotlin/Java等等。还有hard core用C/C++写底层模块。这些年一些IoT embeded system也用Android开源系统。
我的观察,Mobile和Web fullstack developer是市场需求最大的岗位,大中小企业都需要。 做contract,自己创业,或者“接私活”的机会也很多。 当然同时竞争者也多。
Data Enginner。随着Mobile/IoT的增长, 服务器端更大的数据量催熟了Distributed System和Big Data产业化。Big Data技术是Hadoop stack和近年更流行的Cloud solutions。Data Engineer这几年供不应求, 有做ETL和传统backend的developer进来, 同时因为是新技术,相关专业毕业生竞争起来也不落下风。
Data Enigneer经常和Data Scientist紧密合作, 需要一定数据建模和数据分析的能力。有机会成长为Data Analysis和Data Scientist。
Big Data的技术本身并没多hard core, 今后会合并到传统backend工具箱。在Cloud的大潮下, 会有越来越多business friendly的工具,技术门槛将持续降低, 会SQL就能做Big Data正在发生。
Machine Learning Engineer(MLOps)。Machine Learning的技术理论几十年前就有, 但是没有海量的数据train model一直停留在lab阶段。近年Big Data的成熟,直接引爆了ML/AI市场。 据说现在Computer Science的在校生,10个有9个想做Data Scientist。我这几年参与了几个Big Data, ML的innovation类型的项目, 说说我对这个方向的观察。
Data Scientist不一定要PHD和计算机背景, 最重要的是很强的数学和分析能力。AI/ ML类型的项目从实验室走向工业化, 需要大量的automation, 模块化和传统的软件开发流程衔接,涌现了新岗位。 比如侧重programing(而不是分析)的ML Engineer。各巨头也纷纷推出MLOps framework和solution。 又是一个硝烟弥漫的新战场。
DevOps。顾名思义,Development + Operation。前面的大牛们做了很多讲解, 还有系统的培训。据我观察, 更多DevOps从业人员来自Operation方向。 Developer community反响相对平静(可能因为热点太多)。 我理解DevOps的终极理想是取消Dev和Ops之间的壁垒。 DevOps应该是一个从开发到部署all in one的岗位,不仅限于局部automation。 这不是单纯的技术革新,更涉及流程和机构重组。Cloud technology会催化这个趋势。又一个大坑,不展开说了。
以上technical domains是比较通用,市场需求大的分类, 不涵盖研发类的领域,比如数据库、操作系统研发,底层算法, 量子计算机(!)等等,欢迎有insights的朋友来扫盲。
花了很大篇幅说横向的技术domain展开。我个人的经验,早期职业生涯应该尽量多做不同的项目,尝试不同的技术stack,坚持持续学习的好习惯。有效的办法是每几年换一次工作或公司内部转组。
有一条略显投机的”高薪“之路是追新技术,打市场的时间差。比如ML Engineer现在方兴未艾,有准备的朋友在市场井喷的时候大概率能拿到高薪工作。但是这个领域是不是真的适合自己,有没有发展空间,是每个人自己的功课。
科技行业从不缺机会,每几年就一波新技术的浪潮。如果觉得自己不适合现在的领域,或者缺乏发展空间,观察、等待、为下一个适合自己的浪头做准备,不失为一个好的策略。
技术说到底是为business服务才有价值。 追技术不是唯一的出路,也不一定是最好的出路 。很多朋友积累行业知识和人脉,最后会稳定在一个行业里。比如金融银行业,能源行业,广告行业等等。
纵向发展,内部升职。这方面大家身边的例子很多,有自己的理解。 值得一提的是技术路线v.s.管理路线。 一般大的公司有这个划分,小公司可能不分这么清楚。
- 技术路线管项目不管人,比如tech lead, architect。
- 管理路线是people manager,有人report给你,
要做performance review,要花更多精力coach team。 比如manager, director, VP, CTO。
两者都是leadership role,但侧重不同。
我做过两年管理兼技术(team lead),后来回到了技术方向做solution architect。现在看管理的经验很重要, 即使不立志去爬大公司的梯子, leadership对扩大视野和技术职位升迁都有帮助。
斜向发展(还是念着别扭),转岗到BA, PM,QA, Product等等岗位。这是另一个角度的职业思考。 Developer是个需要耐得住寂寞的工作。 特别在非科技行业,责任相对小、visibility低。 也许你的性格和抱负更适合其他的岗位, 有开发经验对这些职业发展也是bonus。 建议有兴趣的朋友向这些方面的大牛们咨询。
说了很多,感谢您的耐心阅读。以上总结基于我平时的观察思考, 与同行的交流,还有阅读。可能有bias,欢迎交流讨论。
美国老土
2020-10-19 07:50:18好文章!读完了。 多谢分享!