程序员成长路线

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(使用前将#替换为@)

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

  • 使用ROS节点控制PX4——总体流程

    1 安装ROS IDE xff1a Roboware Studio xff08 只支持linux xff09 网址 xff1a http www roboware me Roboware可以很方便的创建工作空间 xff0c 编写程序后可以自
  • 使用ROS节点控制PX4——位置控制

    上一篇简要介绍了ROS控制PX4并使用仿真环境进行调试的框架 点击打开链接 本篇将详细介绍ROS节点的发布与订阅细节 xff0c 并使用gazebo进行仿真调试 任务 xff1a 实现飞机的自动起飞 xff0c 然后在两点之间循环飞行数次
  • Odroid与电脑连接教程

    当我们在Odroid上安装了linnux系统后 xff0c 需要将电脑与Odroid进行连接 xff1a 一方面可以方便的把在电脑中调试成功的代码拷入odroid运行 xff0c 毕竟相比于电脑 xff0c Odroid还是很卡的 另一方面
  • Ue4行为树学习笔记 二

    Ue4行为树学习笔记 二 前言引用资料 行为树创建于布局任务设立 追逐随机巡逻AI控制器的设置最终设置尾声 前言 因为篇幅原因 xff0c 没看过上篇还请移步至 Ue4行为树学习笔记 一 引用资料 行为树快速入门指南 UE4学习笔记 xff
  • QGC Windows下编译环境搭建-------Qt5.7 + VS2015

    源码下载 打开qgc的github网址 xff0c 并选择最新的稳定版v3 4 https github com mavlink qgroundcontrol tree Stable V3 4 下载git xff0c 在电脑中进入希望下载的
  • ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: pip安装权限问题

    1 问题描述 xff1a 在使用pip安装transformers时 xff0c 报如下错误 xff1a pip install transformers ERROR Could not install packages due to an
  • 系统调用和函数调用的区别

    系统调用 操作系统服务的编程接口 通常由高级语言编写 xff08 C或C 43 43 xff09 程序访问通常通过高层次 的API接口 xff08 C标准库的库函数 xff09 而不是直接进行系统调用 每个系统调用对应一个系统调用编号 系统
  • FreeRTOS原理剖析:任务的基础知识

    1 任务的基础知识 1 1 前后台和多任务系统 在裸机程序中 xff0c 一般方式是在main 函数的while 1 中循环执行所有的程序 xff0c 有时 xff0c 使用中断去执行一些紧急的功能 xff0c 中断中执行的程序称为前台 x
  • FreeRTOS原理剖析:任务延时

    1 任务延时相关API函数 函数描述vTaskDelay 任务相对延时vTaskDelayUntil 任务绝对延时 xff0c 相对于任务相对延时而言 xff0c 即以一定的周期执行任务函数xTaskAbortDelay 任务中止延时函数
  • FreeRTOS原理剖析:空闲任务分析

    1 空闲任务相关API函数 函数描述portTASK FUNCTION 宏定义 xff0c 真正函数原型为void prvIdleTask void pvParameters 任务挂起中其它重要的API函数 介绍过的函数不列出 xff0c
  • FreeRTOS原理剖析:任务切换过程

    1 任务切换相关API函数 函数描述xPortPendSVHandler PendSV中断服务函数 xff0c 其实函数原型为PendSV Handler vTaskSwitchContext 检查任务堆栈使用是否溢出 xff0c 和查找下
  • FreeRTOS原理剖析:事件标志组

    1 事件标志组相关API函数 函数描述xEventGroupCreate 使用动态方式创建事件标志组xEventGroupCreateStatic 使用静态方式创建事件标志组vEventGroupDelete 删除事件标志组xEventGr
  • FreeRTOS原理剖析:任务调度器启动

    1 任务调度器启动相关API函数 函数描述vTaskStartScheduler 开启任务调度器 任务调度启动中其它重要的API函数 介绍过的函数不列出 xff0c 请参考前面的文章 xff1a 函数描述xPortStartSchedule
  • linux字符设备驱动 LED驱动程序

    1 字符设备驱动简介 Linux的外设主要分为三类 xff1a 字符设备 character device 块设备 block device 网络接口 network interface 字符设备是能像字节流一样读写操作的设备 xff0c
  • 学生时代的书单

    大话系列的书 xff0c 用独特的行文风格 xff0c 以风趣 幽默的语言向读者讲述 概念原理知识 xff0c 用漫画式的插图帮助读者理解晦涩 枯燥的技术 xff0c 让我们在快乐中掌握知识 xff01 1 大话通信 通信基础知识读本 作者
  • Linux字符时设备驱动 中断处理 按键

    1 Linux异常处理体系结构 Linux异常处理体系结构使用主要分成两步 xff1a 1 使用函数init IRQ 初始化中断体系结构 xff0c 源代码在arch arm kernel irq c中 2 用户使用函数request ir
  • [UAV] 无人机仿真平台搭建

    Amovlab 开源项目 从0开始的无人机仿真平台搭建1 基础环境1 1 新建本地代码仓库1 2 编译添加路径 xff08 记得 将Path To Prometheus替换成你的文件路径 xff09 1 3 安装ROS所需的其他插件或者库安
  • FreeRTOS之优先级反转实验

    1 创建二值信号和创建3个任务 xff0c LowPriority Task为最低优先级 xff0c HighPriority Task为最高优先级 注意 xff1a 动态创建任务时要注意大小 span class token keywor
  • FreeRTOS之StreamBuffer实验

    1 常用函数介绍 创建StreamBuffer函数 调用xStreamBufferCreate xff0c xStreamBufferCreate是个宏定义 xff0c 实际函数在下面 xff1a span class token comm
  • FreeRTOS之按键中断实验

    1 创建任务和二值信号量 span class token macro property span class token directive hash span span class token directive keyword inc

随机推荐

  • FreeRTOS之串口中断接收实验

    1 创建任务和消息队列 span class token macro property span class token directive hash span span class token directive keyword defi
  • linux下用Kazam录屏视频在windows不能播放解决

    描述 之前在ubuntu上记录一些东西 xff0c 但是转而在windows就不能播放 xff0c 查了一下资料说是解码器的问题 大概也有网友遇到类似问题 xff0c 那就分享一下吧 xff01 解决 windows上下载安装软件HandB
  • 位姿估计_1

    说在前面的话 位姿估计 xff08 Pose estimation xff09 在计算机视觉领域扮演着十分重要的角色 在使用视觉传感器估计机器人位姿进行控制 机器人导航 增强现实以及其它方面都有着极大的应用 位姿估计这一过程的基础是找到现实
  • 编译osgearth过程中遇到的问题

    1 关于libxxx so no version information available 的解决办法 删除软链接并建立新链接 2 gdal库编译不过 xff0c 报错undefined symbol sqlite3 column tab
  • 基于加速度计与气压计的三阶卡尔曼滤波计算加速度、速度及高度

    本文主要介绍了卡尔曼滤波器的使用原理 xff0c 给出了matlab代码 xff0c 并在STM32F407平台对卡尔曼滤波器进行了验证 xff0c 传感器为MPU6050与DPS310 xff0c 测试结果令人满意 xff0c 速度与高度
  • Ubuntu18.04基于ROS和PX4的仿真平台配置

    1 前言 作者只是一名双非本科院校飞控专业的大二学生 xff0c 想以此记录一下自学飞控的经历 xff0c 也希望能给刚刚入门的同学一些微薄的帮助 这个环境的安装可以说是西天取经一般 xff0c 但安装完后发现如果有领路的人 xff0c 其
  • ubuntu下通过浏览器下载软件包的路径及×××.tar.xz包的安装(1)

    ubuntu下大家一般都会通过软件下载中心安装 xff0c 而软件中心下载的软件一般在 var cache apt archives这个路径下 xff0c 当然一般软件中心对给你安装好 xff0c 所以该路径下的文件名是 deb的文件 同时
  • 基于AWSIM实现Autoware docker内仿真运行

    AWSIM是Autoware当前推荐使用的仿真工具 xff0c 内部采用ros2 for unity插件 xff0c 能够直接发送ros2消息而不同采用中间转接模块 xff0c 效率较高 进行软件开发时各种依赖包的版本管理是让人头疼的问题
  • 关于Apollo Cyber RT 中Component如何绑定到CPU Group、具体线程及优先级队列

    Apollo Scheduler 模块的工作原理如下图所示 xff1a 原图引用链接 xff1a 架构分析 Apollo CyberRT Framework分析 Scheduler调度器 HaoBBNuanMM的博客 CSDN博客 cybe
  • FreeRTOS任务相关基础知识

    一 单任务系统和多任务系统 单任务系统一般为裸机系统 xff0c while 1 做一个大循环 xff0c 也包含一些中断 xff0c 完成所有的程序逻辑处理 如果应用程序需求繁多 xff0c 程序设计复杂 xff0c 应考虑多任务系统 多
  • FreeRTOS任务切换——PendSV

    前言 xff1a 本文分析一下FreeRTOS任务切换相关内容 RTOS系统的核心是进行任务管理 xff0c 任务切换 本文分SVC和PendSV异常 任务切换场景 pendSV中断函数 FreeRTOS时间片调度4部分讲解FreeRTOS
  • ROS:OpenCV读取摄像头并发布话题

    ROS OpenCV读取本地照片发布到rviz中 ROS读取摄像头视频数据发布到rviz中 include lt ros ros h gt include lt image transport image transport h gt in
  • 一种动态更新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
  • PX4代码CMakeLists.txt的简单解读

    分析一下PX4代码CMakeLists txt文件 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 6
  • 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
  • 程序员成长路线

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