提前做好职业规划

技术上:计算机其实也就那些东西,计算机的素养四大件(算法数据结构、网络、编译原理、操作系统),那些东西就在那,没有什么学习路径,工作面试的无非就是八股文+场景题+算法+画饼艺术(让对方觉得你很值得)

学习上:不要犹豫不觉,纠结于哪本书好,在样本不足的情况下听别人说其实没什么用,直接去豆瓣关键字搜索看起来,当你看了一部分有了样本才能辨别好坏,大部分人停留纠结在哪个好而原地踏步。

从我自己的观察来看,我是一个受环境影响的人,周围的人很强,我就很想跟他们保持同一水平超过一点点就行了,所以要认识多一些优秀的人来激励自己,例如推特圈刘能大师、迟先生、等等,作为保持学习的目标,(我发现推上好多前 pingcap 的人啊,哈哈哈 pingcap 输送人才?

作者:原子jk链接:https://juejin.cn/post/7303797715392708660来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

技术型:初级工程师->中级工程师->高级工程师->架构师(技术专家)->技术总监->CTO; 管理型:工程师->项目组长->项目经理->项目总监->技术总监->CTO;交叉型:初级工程师->中级工程师->项目经理->技术总监->CTO(此路线技术和管理交叉进行,每个阶段做的事情不固定); 转行型:初级工程师->转行产品、设计、销售、运营等。

需要具备的核心技能

技术方面 技术才是每一个程序员的安身立命之本,无论你处于哪个阶段,都不要把技术完全落下,区别只是在各个阶段对技术要求的侧重不同: 初中高级程序员:一个技术强化的过程; 专家:选择一个技术方向深耕,成为对应技术领域的专家; 架构师:更偏向对项目整体架构的设计和把控能力; 团队负责人到 CTO:管理职能更大于技术职能,更多的是对技术的宏观方向把控。

技术方面主要有以下几点建议: 先广后深,打造自己的核心竞争力。 你可以是微服务领域的专家,也可以是ES 大佬,或者精通 Flink。 拒绝啃老本。 不要在一个公司混了 3 年,出来找工作投简历,发现简历都投不出去,Spring Cloud 都不知道是什么,微服务、分布式完全没接触,还是只会基于SSH的CURD。2/3 线城市还好说,在一线城市工作的,技术迭代更新比较快,一定要跟紧主流技术。 要形成自己的技术体系。 什么是技术体系,举个例子,你说自己会MySQL 数据库,但是除了日常写 SQL 进行 CURD 的业务开发外,你还知道 MySQL 的运行架构,主流存储引擎的区别,主从同步原理、组复制、锁机制、分表分库、事务控制这些吗?围绕着技术名称的中心点,能像蜘蛛网那样扩散出去,形成有条理的网状结构,就形成了自己的技术体系。 尽可能做多做一些总结输出。 我目前的做法是将日常的一些学习笔记、人生感悟、bug解决过程等先简单记录在有道笔记上面,后面再逐渐整理输出,既可以回顾总结反思,也能作为一些博客的内容输出。 不要死磕技术(这点大家勿喷)。作为程序员,需要有一定的技术信仰,但也不能太过迷信技术。在职场中,**你要比别人走的更高更远的话,只会敲代码实现一些业务功能是远远不够的。**其实在很多开发公司,开发人员的地位都比较一般,来去匆匆,始终是底层的搬砖工。所以,不要傻傻地一头扎入了技术的海洋,每个人的精力都是有限的。除了技术实力外,你还需要有意识地培养自己的沟通表达能力、文档输出能力,比如项目说明文档、项目架构图、汇报 PPT、团队管理、项目管理、项目规范、抽象化思维、产品化思维等综合实力。

架构和设计 架构师是很多开发者的终极技术梦想,能成为架构师的凤毛麟角。但是,每个人都必须要架构和设计软件的能力! 如果你没有架构、设计的能力,就无法站在更高维度去理解软件开发,就必然被迫奋战在最简单也最容易被替代的体力化的编码工作岗位,而这样的岗位,必然是拒绝大龄程序员的。 所以,即便你还不是架构师,也不是技术经理,也不是管理人员,也不是需求分析师,你也需要在日常工作中拔高一点,经常性的、刻意地去想一想,系统的模块为什么这么划分,服务间的接口为什么这么设计,这个业务逻辑为什么要这样实现而不是那样实现。惟其如此,你才能慢慢理解别人的架构与设计,才能慢慢培养自己的架构与设计能力。业务能力 所有开发者都要记住一点,开发者具有双重的行业属性:软件行业属性和软件所要解决的问题所属行业的属性。 软件所要解决的问题,就是我们通常所说的业务。比如支付宝的业务是支付问题,京东商城的业务是电子商务问题,携程的业务是机票和酒店预订问题。精通业务,可以成为开发者的优势,这是开发者在问题域构建起来的优势,即所谓的懂行。 如果业务积累方面的优势和开发技能方面的优势能叠加起来,那这位开发者,就具有秒杀 85% 以上开发者的能力。 再比如,目前国内技术人员太多,可替代性太强,做 Java 搞业务开发的,无非就是Spring boot + MyBatis + MySQL,需要上微服务就采用 Spring Cloud 全家桶,通用型太强。 而如果你既懂技术又熟悉核心业务流程,比如熟悉电商平台、支付系统、风控系统等的核心业务流程,那么你在团队的地位一定稳如泰山。

软技能 《软件架构师的 12 项修炼》这本书里给出了软件架构师的金字塔能力模型:

Untitled

这个模型,适用于绝大多数软件开发工程师,在这本书里,作者说这么一句话。大多数时候所谓的“技术之玻璃天花板”,其实只是缺乏软技能而已。这些技能可以学到,缺乏的知识可以通过决定改变的努力来弥补。 我们每位开发者都要牢记这句话,要清醒地意识到: 不深入钻研,缺乏开发技术等硬技能,你很难在初期的职业生涯(0 ~ 5 年)中做出成绩占据重要位置; 没有沟通、协商、领导力、语境切换、创新、认知等软技能,你很难在职场上走出高度。所以,在你掌握一定的开发技术可以搞定一些任务后,就要并行地去培养自己的软技能,比如沟通、表达、协商、演讲、辅导、写作、组织、规划、管理、汇报、商务谈判、创新、设计等 只有软技能匹配你的硬技能,你才能更好地发展,当你软硬结合,综合能力爆棚时,根本不用担心将来怎么找工作的问题,工作机会会跟着你跑,甚至有人会专门为你创造工作机会。

如何破局 “职业规划”“职业规划”“职业规划”“职业规划”“职业规划”“职业规划”“职业规划”

职业规划就相当于职业生涯的灯塔, 不管你在哪个年龄,不管你的认知有多局限,有了一个比较长远的目标,你就多了一个前进的动力和方向。  比如你未来要做技术架构,那你从进入职场开始,你就会有意识的去提升技术能力,选择一些能够对未来做技术架构有帮助的团队和平台。即便是想躺平,你在做任何决策的时候,都会在潜意识里面去让自己往技术方面去靠,虽然在当下不明白技术给你带来的价值,但是在未来随着工作年限的增加,技术给你带来的价值就会逐步凸显出来。  比如你未来想创业,从你进入职场开始,你会有意识的结交好的人脉,有意识的选择对你职业发展有更大帮助的平台,刻意提升自己的沟通、管理等综合能力。如果大家仔细去观察身边那些大龄程序员目前遇到的焦虑和困扰,都会发现他们年轻的时候,一定是没有做过职业规划,也没有想过未来到底要做什么,反正就是走一步算一步。 所以如果你现在还年轻,刚进入职场不久,那现在就开始做规划,这是你能够开始的最早时间。 如果你现在已经 30 岁了,那你更要做规划,梳理好这 8 年多时间的沉淀,优势,然后明确接下来的定位,把失去的时间弥补上,更从容的应对大环境的影响以及未来职业发展的挑战。同时,现在也是你改变未来的最早的时间。

付出多大努力就有多少回报 我很喜欢一句话: “你未来想要什么样的生活,那就拿你现在的生活去换”,如果你想未来过得很好,那你现在就多幸苦一点多努力一点, 如果你现在想轻松一点,那未来就得为你现在的轻松付出对应的代价。 短视频放大了我们的焦虑,短视频的秒级快感和反馈带来的多巴胺,让我们丧失了沉下心努力专注做一个事情的能力,抱着不切实际的幻想,希望所有想要达到的结果,都能在不需要多大的努力就能获取到。 所以,大家把自己职业发展和人生的选择,交给了《八股文》,“我可以平时不努力,但是想要一份年薪 30w 的工作时, 只需要花 1 个星期刷八股文就能拿到。”“想要一份工作的时候,刷几天八股文就能立刻得到” 可是拥有这样想法的同学,一个能够通过刷八股文就通过面试找到工作的公司,你敢去吗? 如果负责技术面试的面试官都这么不专业,那这个技术团队对你的职业发展真的有帮助吗? 你只顾着解决眼下的问题,没有长远的规划和主见, 那等你逐步是去了“年轻”这个资本以后,你靠什么在这个行业内生存呢? 大家都玩过游戏,如果想要在游戏里面获得比较好的等级和成就,就得投入大量时间的努力,以及深度了解游戏的规则。 如果人生就是一场游戏,为什么你不能用完游戏的精神来掌控自己的人生呢?

“公司离开你依然可以继续运行,但是如果个人能力没有提升,再找工作就很难了”

总结 说了这么多,其实就想说明几个点

  1. 对自己的预期比进入什么样的公司更重要,有了预期(目标),就知道该做出什么对自己有利的选择