程序员成长路线

2023-05-16

回顾过去,我们会清晰地看见走过来的路线,但面向未来我们又该如何走下去?但凡过往,皆为序章,过去不可变,未来才是希望,而如何去规划并管理好未来的成长进化之路,才是我们当下要面临的主要任务。

我们先从一个高度抽象的维度,来看看这条成长之路。

一、成长路线

结合我自己的经历、思考与总结,我对走过的路和未来的路概括成如下这张图:

图中描述了好几个阶段,从一个阶段到下一个阶段,都会经历一次转折。

1. 开发代码(Develop Code)

从刚走出学校到进入职场成为一名新手程序员,在最初的一两年内,你可能都处在这个阶段。不停地大量写代码,为各类系统的“大厦”添砖加瓦,像块海绵一样,把自己吸得满满的,朝 9 晚 24 地工作与学习,并不时自嘲为 “码农”。

这个阶段,你为生存所需(迫),会强烈地渴望成长。

2. 开发系统(Develop System)

三、五年后,你可能从初级、中级成长到了高级,此时你不再仅仅是写代码搬砖,而是开始负责起或大或小的整个系统。这时,你最关心的是如何用最好的技术方案,去开发、优化和完善系统。

3. 开发产品(Develop Product)

从高级走向资深、专家或架构师,你会发现你的技术执行技能已经优化到了相当的程度,这时往前多走一步,关注你所实现的系统所属的产品,会让你打开新的空间,找到更有效率和效果的实现路径,减少做无用功。

而且在技术的世界里,有很多面向开发者的技术型产品,这个领域中最适合承担起产品经理角色的就应该是各类资深的技术专家和架构师了。

4. 开发团队(Develop Team)

当你选择走上技术主管并转变为一名管理者,那么人和团队将成为你的主要开发对象,而不再是代码了,这是成为管理者的必经之路。

5. 开发梦想(Develop Dream)

梦想这个东西也会随着岁月与你相伴成长,梦想实际永远在前方,它只是不断引领着你往前走。梦想相对而言是一个感觉上很 “虚” 的概念,它可能需要产品作为载体,也需要团队来一起开发创造。如此,梦想的引力就会引发你向一名创新者或领导者的方向进化跃迁。比如说,十多年前,刚毕业时,我的梦想是成为一名架构师,如今已然实现。

以上这张图只是帮你看清从过去到未来的一条路,但如何走好这条路,就需要另一个视角维度的蓝图了。

二、战略蓝图

战略这个词,通常会和组织、公司关联在一起;那假想下,如果个人是一家公司,那么这家 “公司” 的战略该如何确定?

在分析战略之前,我们需要先分析下公司的业务。为了更好地分析清楚公司的主要业务,这里借鉴下咨询公司爱用的商业分析模型:波士顿矩阵。实际有很多不同的分析模型,我只是觉得这个最简单,比较适合像个人这样的小小微 “公司”。

波士顿矩阵模型,把公司业务分成下面四类:

  • 现金牛业务
  • 明星业务
  • 问题业务
  • 瘦狗业务

现金牛业务,比较形象地表达了就是产生现金的业务。比如谷歌的搜索业务、微软的 Windows 操作系统,都是它们的现金牛业务,有很高的市场占有率,但成长率相对就比较低了。

就个人来说,现金牛业务自然是一份稳定的工作,产生现金,维持个人生活的基本面,当然稳定之外越高薪越好。程序员这个职业就是很好的现金牛业务,行业繁荣,工作也比较稳定,专注于这个业务,不断提升薪资水平,这就是:活在当下

明星业务,比较形象地表达了很有前景的新兴业务,已经走上了快速发展的轨道。比如:亚马逊的云计算(AWS)就是它的未来之星。而个人呢?如果你的现金牛业务(级别和薪资)已经进入行业正态分布的前 20%,那么再继续提升的难度就比较大了。

个人的明星业务是为未来 5 到 10 年准备的,就是现在还并不能带来稳定的现金流但感觉上了轨道的事。于我而言,是投资理财。人到中年,除了劳动性收入,资产性收益将作为很重要的补充收入来源,而当资本金足够大时,很可能就是未来的主要收入来源。当你开始在考虑未来的明星业务时,这就是:活在未来

问题业务,比较形象地表达了还有比较多问题的业务领域,面临很多不确定性,也就是还没走上正轨。将来到底是死掉,还是成为新的明星业务,现在还看不清楚。比如谷歌的无人驾驶、机器人等业务领域都属于此类。

就个人而言,可能是一些自身的兴趣探索领域。于我来说,目前就是写作和英语,即使写作已经开了专栏,但并不算是稳定可靠的收入来源,主要还是以兴趣驱动,投入时间,不断探索,开拓新的维度,这就是:活在多维

瘦狗业务,比较形象地表达了一些食之无味、弃之可惜的业务。瘦狗业务要么无法产生现金流,要么产生的现金流不断萎缩。今日之瘦狗,也许是昨日的明星或现金牛,比如像诺基亚的功能机。

就个人而言,行业在发展,技术也在进化,曾经你赖以为生的 “现金牛” 技能,可能过几年后就会落后,逐渐变成了 “瘦狗”,无法果断地放弃旧技能、开发新技能,可能就如诺基亚一般在新的时代被淘汰。固守瘦狗业务,那就是:活在过去

业务模型构成了你的蓝图,而对你的各种业务进行与时俱进地布局与取舍,这就是战略。

三、进化跃迁

明晰了路线,掌握了蓝图,该如何完成你的成长进化跃迁呢?

跃迁是量子力学里的概念,指电子吸收能量后,突然跳到更高的能量级,这种不连续、跳跃的突变,我们称之为 “跃迁”。我借用了这个概念来类比成长,从如上定义中有几个关键点:

  • 吸收能量
  • 更高能量级
  • 非连续跳跃

个人成长的跃迁也需要能量,在这里能量就是知识、技能和能力。完成 “能量” 的积累就需要持续地学习和实践行动,而持续行动又靠什么来驱动?内心的自驱力,这是稳定有效的驱动力来源,若没有自我驱动的力量是不太可能带来持续行动的。

学习行动计划、养成行动习惯都是为了提升行动的效率,行动积累了足够的 “能量” 后,就向更高能量级跳跃。这里更高的能量级是对知识和能力的更高维度抽象的比喻,比如:知识模型和技能体系,就比孤立的知识点和技能拥有更高的能量级。

而第三个关键点:非连续跳跃,说明这样的进化有突变的特征。而个人知识的积累与能力的提升,其实都是比较缓慢而连续的,非连续的跳跃其实体现在机会和运气上。合适的机会若没能降临,你就没法完成跃迁。

连续的成长积累是你能掌控的部分,而跃迁的机会、运气则属于概率成分,你的努力可能一定程度上提高了概率,但它并不能导致必然的跃迁结果发生。即使机会没能到临,努力过后也许有无奈,也该当无悔了。

最后,我们总结下:

从开发代码到开发梦想,你可以画出一张你的成长路线图,从而走上进化跃迁的道路;上了路后,接着你可以利用工程师的思维模式和商业工具模型,建立一个你的成长战略蓝图去指导你如何走这条路。剩下的,就让你的努力、选择和运气来帮助你完成不断的跃迁变化吧。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

程序员成长路线 的相关文章

  • mysql中grant all privileges on赋给用户远程权限

    mysql中grant all privileges on赋给用户远程权限 改表法 当你的帐号不允许从远程登陆 xff0c 只能在localhost连接时 这个时候只要在mysql服务器上 xff0c 更改 mysql 数据库里的 user
  • Shell之function函数的定义及调用

    文章目录 96 function 96 函数的定义及调用 96 function 96 函数的定义 96 function 96 函数的调用 位置传参 函数使用return返回值 位置传参 函数的调用 数组传参 function函数的定义及
  • springboot集成activeMQ实现Queue队列

    1 首先下载 activeMQ地址 xff1a https activemq apache org 下载完成以后 xff0c 进行启动 启动步骤很简单 xff0c 就tomcat差不多 这里要注意 xff0c 看你电脑是32位还是64位 x
  • Docker Desktop Vmmem内存占用过高问题解决方案

    Docker Desktop Vmmem内存占用过高问题解决方案 内存占用过高原因 主要原因是docker desktop的实现及基于wsl Windows子系统 相当于在Windows上同时开了一个虚拟机 如果不对wsl的资源进行限制 它
  • spring mvc 预习

    spring mvc 概述 Web 框架 xff0c 是目前最主流的 MVC 框架之一 Spring3 0 后全面超越 Struts2 xff0c 成为最优秀的 MVC 框架 Spring MVC 通过一套 MVC 注解 xff0c 让 P
  • windows server 2012 进程 出现大量桌面窗口管理器的 解决方法

    windows server 2012 进程 出现 桌面窗口管理器 打开运行 打Cmd xff0c 执行 taskkill f im winlogon exe t 记住 这个命令会让远程桌面黑屏 xff0c 不要着急 xff0c 远程按下C
  • 在线医疗系统(毕设)

    小白的成长之路从自己写毕设开始 从整个设计说明书中截取了一部分 相关技术 Springboot VUE MySQL数据库 Bootstrap AJAX 融云 shiro等总体设计 数据库相关表设计 数据库截图了一张图 详细设计与实现 系统整
  • Android 终极推送方案(结束应用进程依然可以接收通知)

    开发中总会遇到产品经理需求是 xff1a 结束掉应用依然想接收到通知 xff0c iOS轻而易举就可以实现 xff0c 但Android一直都是杀掉应用后就无法接收到通知 xff01 网上给的结果大概是 xff1a 1 集成各大厂商的推送s
  • error: resource android:attr/lStar not found完美解决

    今天突然项目出现如下错误 xff0c 编译就报错 D AndroidProjects XXXXX app build intermediates incremental mergeDebugResources merged dir valu
  • android 动态引用含占位符的字符串时,出现红波浪线如何解决

    现象 xff1a 在开发时 xff0c 想动态引用含占位符的字符串 xff0c 发现有红色波浪线警告 xff0c 项目可以正常运行 xff0c 既然是警告 xff0c 肯定就是我们代码有问题 将鼠标放上去提示警告 xff1a Format
  • Mac电脑安装apktool工具包

    开发中少不了想看看别人怎么实现某个功能 xff0c 于是会用到apktool反编译apk xff0c apktool工具包是一个压缩包 xff0c 下载后无需安装 xff0c 简单配置下执行命令就能反编译apk了 xff0c 下面我们看一下
  • 查看 AndroidManifest.xml 文件内容,解决全是二进制代码问题

    想查看打包后apk的AndroidManifest xml文件内容 xff0c 之前都是将后缀apk改为zip xff0c 直接解压查看 xff0c 有时会遇到都是二进制代码 xff0c 给出集中查看明文的方法 xff1a 方法一 通过an
  • unknown error (Sqlite code 14): Could not open database解决方案

    今天在运行之前一个项目是突然一运行就崩溃 xff0c 感觉甚是奇怪 xff0c 查看log日志发现 Caused by android database sqlite SQLiteCantOpenDatabaseException unkn
  • Android RecyclerView Item点击事件

    RecyclerView控件出来后可以代替ListView xff0c 功能更强大 xff0c 但是RecyclerView却没有ListView的setOnItemClickListener和setOnLongClickListener方
  • GitHub上README.md编写教程(基本语法)

    今天在编写github中的readme md文档时 xff0c 发现自己写的和别人写的样式完全不一样 xff0c 自己的好难看 xff0c 于是百度了一番 xff0c 很多都是转载的别人13年的博客 xff0c 其中还发现一片17年写的原创
  • android 平板适配

    首次进行平板开发 xff0c 从一开始就在琢磨适配是怎么弄的 xff0c 百度 google 群一大圈 xff0c 还是没人告诉具体是怎么做的 xff0c 都是基本的概念性的讲述怎么适配 xff0c 写了一个界面发现存在很大适配问题 xff
  • Linux下常用的优秀软件

    Linux下优秀软件介绍 常用软件工具软件美化图像视频相关音频播放器下载工具科研利器终端Windows下常用软件运行 常用软件 下面的软件均是本人使用过的 xff0c 如果大家有自己觉得很好的软件 xff0c 欢迎留言 xff0c 好的软件
  • Charles抓包遇到的坑,看这一篇就够了

    Android 7 0 xff08 API 24 xff09 以下 xff0c 你可以直接使用 Charles 安装相关证书配置好代理后实现抓包功能 xff0c 本文主要讲android7 0以后如何实现抓包功能 xff1a 首先下载安装C
  • Bad notification posted from: Couldn't expand RemoteViews for: StatusBarNotification

    自定义通知栏有些机型报下面的错 xff1a android app RemoteServiceException Bad notification posted from package xxx Couldn 39 t expand Rem
  • SCP不用密码传输文件

    SCP不用密码传输文件 方法一 xff1a 使用sshpass yum install sshpass sshpass p password scp data scripts data log root 64 X X X X data da

随机推荐

  • 新版Unity里面怎么使用Post Process

  • 在Unity中使用.NET 4.x和在Unity项目添加外部程序集

    2019版本已经没有4 x等效运行选项了 xff1a 应该是只能选择4 x等效Api 然后API等级选择有两种选择 xff1a NET Standard 2 0 此配置文件与 NET Foundation发布的 NET Standard 2
  • Unity使用.NET4.x新的语法和语言功能

  • UE4设置 只修改蓝图节点的语言为英文

    原因 因为在查找需要的节点时 xff0c 输入英文更符合命名法 xff0c 为了更好的查找节点 xff0c 把节点的名字改成英文当然更好 xff01 操作步骤 取消下面的勾选即可 结果
  • Unity的InputSystem使用实践

    如何使用 首先得有一个PlayerInput在场景中 xff0c 每一个PlayerInput表示一个玩家 在Actions里面选择自己的Actions xff0c 可以新建 xff1a 比如在PlayerMaps中的MoveActions
  • 虚幻4C++编程入门(搬运1)

    首先我们将使用虚幻编辑器中的类向导生成基础 C 43 43 类 xff0c 以便蓝图稍后进行延展 下图展示了向导的第一步 新建一个 Actor 这里根据对character pawn和actor的描述 xff0c 知道了pawn是actor
  • 虚幻4C++编程入门深入了解

    这部分我们将讨论基础构建块以及它们之间相互关联的方式 在此我们将了解虚幻引擎如何使用 继承和合成构建自定义游戏性功能 游戏性类 xff1a 对象 Actor 和组件 多数游戏性类派生自 4 个主要类型 它们是 UObject AActor
  • 窗口焦点丢失问题分析

    从slog中的systemlog可以看出如下信息 xff1a 01 01 08 29 03 732 633 936 I WindowManager Relayout invis Window 42244420 u0 Keyguard mEx
  • ubuntu不能挂载U盘问题

    插上U盘一个弹窗显示不能挂载系统 就不附图了 自己也是在到处找了问题 xff0c 试了很多教程 xff0c 要么看不懂要么没用要么瞎写的 最后实测一个有用的 因为ubuntu默认不能识别U盘 解决方法 xff1a 安装exfat磁盘格式工具
  • unity3d个人版怎么改变主题=>黑色

    是有很多文章都有介绍如何使用操作 xff0c 我就不再多说 xff0c 主要是那个软件的问题 xff08 在下面我会附上winhex的下载地址和详细教程 xff09 一般会出问题的地方是试用版会出很多问题 xff0c 比如什么200k以上不
  • 【正则表达式】基础应用(匹配matches(regex))(转)

    正则表达式基础应用 匹配 字符 x 字符 x 反斜线字符 字符类 abc a b 或 c xff08 简单类 xff09 abc 任何字符 xff0c 除了 a b 或 c xff08 否定 xff09 a zA Z a 到 z 或 A 到
  • 一种动态更新flink任务配置的方法

    文章目录 1 原理2 例 xff0c 整数过滤2 1 并行度为12 2 并行度大于12 3 完整代码 参考链接 1 原理 参考Flink Spark 如何实现动态更新作业配置 xff0c 讲得比较详细 xff0c 这篇的文章的参考参考文献也
  • 一种Hudi on Flink动态同步元数据变化的方法

    文章目录 一 背景二 官方Schema Evolution例子三 Flink 43 Hudi实现Schema Evolution四 96 HoodieFlinkStreamer 96 流程浅析及扩展方法4 1 FlinkKafkaConsu
  • 一种处理Hive元数据与文件类型不同时SQL查询失败的方法

    文章目录 一 背景二 分析过程2 1 环境及测试数据2 1 1 环境2 1 2 测试数据 2 2 select语句异常分析2 2 1 异常分析2 2 2 捕获异常位置 2 3 insert overwrite语句异常分析2 3 1 异常分析
  • 一种处理Hive元数据与文件类型不同时SQL查询失败的方法(二)

    文章目录 一 异常触发SQL二 异常处理三 Hive on Spark依赖的Hive jar包部署 继上一篇之后 xff0c 又发现了一种新的报错位置 本篇对这种情况进行处理 xff0c 并验证这种处理方式是否适用于Hive on Spar
  • Hive分区表修改(增删)列

    文章目录 一 环境及测试数据二 删除列2 1 测试表test22 2 DDL删除列 xff1f 2 3 代码连接Hive Metastore删除列2 3 1 同时更新表与分区元数据 三 添加列结论参考链接 一 环境及测试数据 环境 xff1
  • python通过kerberos连接impala操作hive

    一 python2版本 1 docker基础镜像 tobyhferguson impyla tester 2 安装相关包及配置 2 1 安装包 参考python3 6 5基于kerberos认证的hive和hdfs连接调用 yum span
  • 美化Windows中的CMD/PowerShell,以及替代方案

    命令行字体美化 微软对命令会话窗口中的字体元数据有着一些苛刻的要求 xff0c 使得大部分好看的字体不能应用于CMD PowerShell xff0c 传统的有衬线字体不仅不美观还不易分清1和l 网上有各种针对一些字体改动注册表的做法 xf
  • 【获奖公布】“我的2016”主题征文活动

    还记得2015的年末 xff0c 2016的新年伊始 xff0c 你给自己定下的目标 xff0c 对自己许下的诺言么 xff1f 时光荏苒 xff0c 一年又在指缝间溜走了 xff0c 离2016的结束还剩十多天 xff0c 在接下来的这十
  • 程序员成长路线

    回顾过去 xff0c 我们会清晰地看见走过来的路线 xff0c 但面向未来我们又该如何走下去 xff1f 但凡过往 xff0c 皆为序章 xff0c 过去不可变 xff0c 未来才是希望 xff0c 而如何去规划并管理好未来的成长进化之路