专栏首页Keegan小钢程序猿们那些可选的职业发展路线

程序猿们那些可选的职业发展路线

时不时会有一些做开发的小伙伴向我咨询一些职业发展的问题,比如:该不该跳槽?遇到了职业天花板该怎么破?如何才能成为架构师?等等。这些问题,说白了,其实都是如何选择职业发展路线的问题。那我们就来聊聊那些可选的职业发展路线,需要注意,每个人都并非只走一条路线。

1. 纵深发展

所谓纵深,就是纵向往技术深度发展,不管是 Android 开发、iOS 开发、前端开发,还是后端开发,都可以根据技术能力划分为初级、高级、资深、技术专家/架构师、高级技术专家/高级架构师、首席技术专家/首席架构师等级别。在阿里的话,技术专家/架构师一般为 P7,高级技术专家/高级架构师则一般为 P8。每个特定领域都有不少大牛在前方引路,Android 有朱凯、任玉刚、郭霖等,iOS 有唐巧、王巍(喵神)等,前端有阮一峰、尤雨溪等,后端的牛人就更多了,不同细分领域都有不同的牛人。

对这些牛人来说,所谓的职业天花板并不存在,中年危机也不怕,裁员也裁不到他们,实现年薪百万更不是事。这些不同领域的牛人向我们证明了,就算只往一个特定领域深耕技术,也可以发展出非凡的职业道路。

往纵深发展也是大部分程序猿毕业之后首选的路,但越往深会越难,就像登山一样,不是所有人都能登上山顶的,能登上珠穆朗玛峰山顶的人又有几个呢?

想要在纵深方向发展得好,尤其是想达到技术专家甚至以上级别,有几个基础能力要培养:

  1. 技术基础要扎实,这是基本功。就比如跑马拉松,如果你的耐力、肌肉、肺活量,任何一项不够,都很难支撑你跑完马拉松。而技术的基础无非就是数据结构、算法、语言基础、编程思想等。
  2. 要掌握高效学习的能力,提高技术进步的速度。为什么程序猿会有中年危机?为什么年纪越大越容易被裁?为什么工作经验越多越难找到新工作?假如,面试者有两个技术能力处于同一水平的人(薪资水平也相同),一个是工作了三年,一个工作了十年,如果只能留一个,你觉得面试官更愿意留哪一个呢?
  3. 要养成「知其然并探知其所以然」的思维习惯。优秀的程序猿,对某项技术,不会停留在只知道怎么用的程度上,而会去探究背后的原理。比如,很多人都会用 HashMap,但是否会去研究 HashMap 背后的数据结构、实现原理?比如,大家都知道 MVC/MVP/MVVM,但是否有深究过各自的优缺点、适用的场景?

其实,后面讲到的任何发展路线,不管你选择了哪一条,以上三个基础能力都是必须培养的。

优秀的程序猿一般每 2~3 年就可以提升一个级别,用不了 10 年就可以达到技术专家/架构师的级别,我自己目前也是处于该级别。不过,优秀的程序猿一般也不会只在一个方向上发展。

2. 横向拓展

纵深发展是在特定领域的技术深度上进行深耕,而横向拓展则是开拓其他领域,从广度上拓宽自己的技术能力。比如,原本做 Android 开发的可以拓展 iOS 开发,也可以涉猎前端开发,还可以涉足 Java 后端开发。

横向拓展有什么好处呢?我们可以反过来看看,如果只专注于一个方向的纵深发展有什么弊端?第一个风险,请参考塞班(Symbian)。虽然中短期来看,Android 和 iOS 不会出现 Symbian 一样的下场,但未来谁也说不准。另外,随着跨平台框架(比如 Flutter)的不断完善和优化,原生开发的路是否会越来越窄呢?Java 也一样,随着区块链技术和人工智能的发展,越来越多公司和团队选择 GolangPython 应用于这两个领域的开发,那 Java 生态是否也会慢慢没落呢?

俗话都说,不要在一棵树上吊死,不要把鸡蛋放在一个篮子里,所以,最好也不要只专注于发展单一的技术领域。

每个特定领域的开发者进行横向拓展时都可以有各种不同选择,具体到每个人,就要结合各自的具体能力水平、兴趣爱好、长远的职业规划等进行综合考虑,最终选定一个适合自己的拓展路径。我在这里给出一些建议,仅供参考。如果你是做 Android/iOS/Web 前端开发,除了继续在原有技术领域上纵深发展,横向上我建议首选 Flutter,往大前端方向发展,这是前端方向的必然趋势。Android 人员的第二选择我建议选择拓展 Java 后端,往 Java 全栈的方向去发展,后端的路相比会宽很多,慢慢就可以发展成既懂前端又懂后端的架构师、高级架构师等,这会比单纯只懂后端的架构师更有优势。iOS 和 Web 开发人员的第二选择我则建议直接从 Golang 或 Python 起步,尤其是 Golang,如果说未来 Java 真的没落了,那有望能取代 Java 的领头位置的,我觉得 Golang 最有潜力。

从长远来看,横向拓展不一定只拓展一个方向,可以逐步拓展多个方向,但刚开始不建议同时拓展多个方向,建议至少让拓展的第二领域达到高级或资深级别后再去拓展下一个方向的技术领域。以我自己为例,我一开始是做 Java 后端的,后来逐步拓展了 Android、iOS,近一年多则拓展了 Golang。

3. 管理方向

不管是纵深发展,还是横向拓展,都只是在不断精进技术。有些技术极客会一直热衷于钻研技术,不太喜欢也不擅于与人沟通,更不擅于从事管理工作,我有部分前同事就是这样的人。但不少程序猿还是倾向于慢慢转向管理岗位,从主管经理,再到总监,最后到 CTO,逐步向上攀爬。成为 CTO,成为一个公司的最高技术领导人,这是大部分技术人员在职业道路上的终极目标。

但管理之路的晋升,比技术之路难得多,尤其要成为 CTO,除了一些特例,一般需要熟悉全栈技术,需要精通架构设计,需要具备全局思维,需要懂商业模式,等等。做管理,不同于做技术,除了要管理团队,也要管理项目,其实就是管理人和事。管理人,核心在于管理人心;管理事,核心是要做正确的事

大部分程序猿应该是在工作了 4~6 年、达到资深开发级别之后,才开始有机会步入管理岗位,担任技术主管或技术经理。在这之前,可能也会做一个小组长的角色,指导一些初高级程序猿,从中锻炼管理能力。在阿里,主管是 M1,对应于技术岗的 P6,经理是 M2,和 P7 相对应,再往上 M3 则是高级经理,M4 为总监。

每个垂直领域都可以做到总监级别,比如 Android,最高也可以做到 Android 总监,但只有大公司才会有这样细分领域的总监岗位,中小企业基本是没有的,中小企业的总监一般都特指后端的技术总监。还有很多小创业公司,整个公司就一个技术管理岗位,可能挂职技术总监或 CTO,总之就是一个技术负责人,除此之外,没有其他技术管理人员了。

想晋升为管理人员,首先需是出类拔萃的程序猿,不然,那么多程序猿中,领导为何要提拔你。低层管理,其实更多的还是偏技术,只是同时兼点管理职责。中层管理,一般就是技术和管理各占一半了。高层管理,则更偏管理了,对技术的要求主要在于广度和全局观,对技术深度则没多大要求了。

4. 转型产品

从技术开发转型做产品设计,走产品经理的路线,也是一些人的选择。我的朋友中,就有一位本来做 iOS 开发的,后来转型产品经理;另一位本来做 Android 开发的,也转型做产品了。这两位朋友目前都在自主创业中。

就连马化腾也一直将自己定位为一个产品经理。我们都知道,马化腾、张小龙、张一鸣,都是国内顶尖的产品经理,但他们其实都是程序猿出身的。其实,很多程序猿出身的企业大佬,虽然不是挂着产品经理岗位,但都是「产品经理」。所以,不要将产品经理狭义地定义为具体的岗位,不管什么岗位,只要具备产品思维、主导或参与产品设计、产品决策的人,都可以称为产品经理。比如,我在公司担任的是技术负责人,但我将自己也同时定位为一个产品经理,因为公司里的产品目前主要是由我主导的,虽然我并不担任实际的产品岗位。

我一直推崇每个技术人员都应该学习下如何做产品,培养产品思维,不一定是为了转型做产品,但懂产品的技术人员是很受欢迎的。

要学习如何做产品,我推荐读过的几本书:《用户体验的要素》《启示录:打造用户喜爱的产品》《精益创业》《腾讯方法》。

如果是要转型做具体的产品岗位,那还要学习需求分析、原型设计等。

5. 开拓副业

我认识一些大佬,通过发展副业,当副业的稳定收入超过主业之后,毅然辞职,全身心投入到副业中,让人羡慕不已。

程序猿做副业也有很多选择,大部分会选择做自媒体,通过写文章吸粉,通过收费社群、付费内容或写书等实现知识变现,一旦实现稳定变现,就能够产生复利增长。做自媒体是一条漫长的路,需要坚持输出高质量内容,而且可能长时间都很难变现,但一旦形成了一定知名度和影响力,会有各种提升的机会向你招手,比如,有人邀你写书,有人邀你录制课程,有人给你推荐好工作,等等。做自媒体的价值不止在于知识变现,还存在很多隐形价值。

还有不少人会不定时接外包项目,可能自己一个人单独做一些开发工作,也可能和其他几个小伙伴一起组队,合作完成整个项目。接外包单次的收入相对会高一些,但并非总是长时间有外包项目可做,且较难实现复利增加,还会大量占用自己的休闲时间,还经常会遇到拖欠尾款的问题,又累又不稳定,所以大部分人都只是偶尔接一两单回来做,或只接一些短期、轻松的项目。对于长期接项目的人,更多情况是做着做着就自己成立外包公司了。

也有人会自己开发一些小产品,比如一些简单的 App 或网站,然后提供收费服务或直接卖产品源码。比如,我有个朋友就自己业余时间开发了一个给外国人用的招聘网站,对招聘企业收取服务费。还有另一个朋友会开发一些区块链游戏,然后卖给想要的人。

有一些大佬还会为企业或个人提供咨询服务,比如帮企业做架构设计,或为解决技术难题提供方案,或给人提供职业发展建议等。有一个平台叫「在行」,不少行家就通过该平台对外提供咨询服务。

还有兼职开滴滴或送外卖的,以及,这段时间社交电商很火,所以不少人也加入了其中,在朋友圈、微信群卖起货来了。

所以程序猿开拓副业,是有很多选择的,但我倾向于做那些能实现复利增长的副业,即要让自己投入的一份时间能卖多份,比如做自媒体、卖课程、卖服务、开发自己的产品等。

最后,要发展副业的话,我推荐两本书:萧秋水和剽悍一只猫合著的《知识变现》,以及安晓辉的《副业赚钱之道》。

6. 弃疗转行

最后一条路,那就是放弃治疗转做其他行业了,比如开个小饭馆,或开个咖啡馆。中国是全球最大的消费市场,随着迈入中产阶级的人越来越多,存在很多赚钱的机会。消费升级、婴幼儿的吃穿、教育等,到处都是机会。

我还有朋友从程序猿转行做保险推销员,其实,现在也是越来越多人开始注重购买保险,主要还是为家人和自己购买医疗险,尤其是为孩子,不少人从孩子出生就给宝宝购买各种保险了。

也有朋友转做股票操盘手。从去年开始,更多资金已经从房地产向股市转移,政策上也在大力扶持股市。

还记得当年那个卖猪肉的北大学子吗?被称为「北大屠夫」,人家身价早已过亿了,他和同是北大的师兄陈生一起创立的「壹号土猪」,估值已经超过 40 亿元,年营业额达 18 亿。还有一个中央民族大学的刘浩明,卖煎饼果子月入 13 万。还有「松哥油焖大虾」,其高管团队 80% 来自华为,包括创始人徐松也是从华为出来的。

希望你能从这些案例中得到启发。

本文分享自微信公众号 - Keegan小钢(keeganlee_me),作者:Keegan小钢

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在慢变量中寻找小趋势

    罗振宇在他的跨年演讲中重磅推荐的新书——何帆的《变量》,是我在2019年看完的第一本书。读完收获良多,因此就总结了一下,写下一篇读书笔记。

    Keegan小钢
  • 聊聊2016年的人生

    不过,有一件事一直没进展,觉得比较愧疚,那就是写书的事。博文视点的[永恒的侠少]很早就找上了我,邀请我写一本关于App架构方面的书,我也答应了。但一直因为各种原...

    Keegan小钢
  • 撮合引擎开发:缓存和MQ

    虽然现在只用到了 Redis 一个中间件,但设计个 middleware 包,会方便以后扩展添加其他中间件,如 Kafka 或 RocketMQ 等。

    Keegan小钢
  • 设计模式——抽象工厂模式

    ● 为创建一组相关或依赖的对象提供一个接口,而无需指定他们的具体类型。是工厂方法模式的升级版。

    蜻蜓队长
  • .net自定义错误页面实现升级篇

      在上一篇博文 “.net自定义错误页面实现” 中已经介绍了在.net中如何实现自定义错误页面实现(有需要者可以去上一篇博文了解),单纯按照上一篇博文那样设置...

    小小许
  • java提示找不到或无法加载主类

    背景 默许jdk的配置大家都没有问题,执行java,javac无报错,但今天在尝试在本地起来kafka的时候,提示java 找不到或无法加载主类,然后日志中提示...

    千往
  • 博弈论(一)——产品小哥哥的民主妙计

    “作为一个产品,一定要与开发一起对项目有深入的沟通和交流,才能让项目做的更好。所以,今天我们来做一个不记名投票,确定哪几位同学可以和我一起讨论产品的设计方向。”

    青南
  • 投融资汇总 | 本周(12.24-12.30)未来医疗占比猛增,阿里两项亿级投资

    镁客网
  • 入职三天,公司给了100块钱叫我走人

    2013年6月底,虽然此前早已被某软(国内最大的软件开发商)的政府事业部录用并被寄以厚望要培养成核心人员,但出于对乡土的眷恋和对南方的热爱,还没领到毕业证的我,...

    java进阶架构师
  • 如何在Ubuntu 14.04上将Apache Traffic Server设置为反向代理

    Apache Traffic Server是一种高度可扩展的缓存代理服务器,能够处理大量并发请求,同时保持极低的延迟。与其他流行的代理服务器(如Varnish或...

    编程男孩

扫码关注云+社区

领取腾讯云代金券