职业规划与职业发展是每个程序员经常要考虑的一个问题,每年的晋升,述职,甚至于跳槽都是需要去想的一个问题。那么程序员成长到后期,其成长的本质是什么呢?慢慢得出了一个结论,就是一步步靠近商业。

我之前想过,程序员发展到后期基本上围绕于三条路:

  1. 专研技术:持续的做技术底层

  2. 领域架构师:具有更宏观的行业经验,属于行业专家+架构师范畴

  3. 管理:具备较好的跨团队沟通,跨职能协作的能力

先说第一种

专研技术很重要的一个要求就是需要对技术有持续的热情,看源码是必须的,甚至熟练的掌握各种主流中间件或者框架底层源码,甚至可以动手自己撸一个性能很好的NIO框架,自己可以撸一个基于raft的kv分布式kv存储。

我相信大部分是做不到的,所以还是需要对技术具备持续的热情,并且随着年龄增长仍然可以在技术本身解决问题中找到成就感和价值感。

如果要举个例子的话,我认为是“左耳朵耗子”耗子叔这种人,对技术有持续的热情,通过技术体系,比如k8s+golang可以做一个性能非常好的解决方案,在大流量高并发场景下做到性能巨好,为公司降低机器和能耗,减少资源成本。当然这种人一般在超大公司才有存在的价值,毕竟大部分公司还是业务驱动的,还需要看你所从事的工作是否可以给公司业务带来价值。

再说第二种

这种是领域专家+行业专家和架构师范畴,特点有两个:

  1. 具备某一个方向的行业经验,包括业务和架构

  2. 具备一定横向技术能力和业务能力的迁移能力

举个例子,我们知道商品在电商体系中的重要性,同时商品体系本身存在大量的领域相关知识,比如前台类目,后台类目,类目属性,类目模板,关键属性,一般属性,销售属性,spu,sku等。而标品和非标品的商品体系有何区别?前置仓和中央仓库对于商品体系有什么区别?

如果一个人在这个方向有持续的积累,具备了较高的行业经验的话,他在搭建整个商品体系过程中就会少走很多弯路,很大程度上可以走在业务前面,同时可以按照业务发展趋势,很好的搭建b端团队和c端团队,同时体现在系统架构和微服务的拆分上。

以上是第一点,为什么要说第二点呢?

如果一个人在某一个垂直方向上具备了很好的业务能力和方法论抽象,在公司需要搭建另一个体系,比如供应链体系,他可以很好的将之前所积累的技术或者业务的方法论进行横向的迁移,结果上是快速搭建一个供应链体系,这也就是第二点的重要。

最后是第三点。

管理区别于以上两种的特点是,其可能需要具备跨职能团队lead的能力,以上两种更多的是围绕于技术和系统本身。而管理者需要和多个跨职能的团队沟通,比如QA,PM,运营,市场等。

如何做好管理者,大家可以通过其他方式去查找下。

总结来说,三个方向的特点:

  1. 持续做技术,需要对技术有持续的热情,通过技术可以得到很好的成就感,毕竟每个人还是需要有所价值的,但是一般只有超大公司会花很多钱养一个纯技术的人,去做一些降低成本的事情。

  2. 领域专家,需要具备某个领域方向上从业务发展到架构发展的能力,这样你的领域知识是独一无二的,也是你的差异竞争的点,如果可以很好对之前的领域知识做沉淀和积累,可以做好横向迁移,你就可以去负责其他的事情了。

  3. 管理有大有小,有的是基层组长,有的是经理,在向上是总监,vp。不同阶段所需要的能力是不一样的,需要你在技术之外去积累你的软素质,能力值和成长是相乘的关系,如果已经在技术上做到80分了再到90分整体能力值也提升的不多,但是如果软素质比如管理或者业务能力原来才10,如果可以提升到60,你就会成长很多。

然后我们再来看下各层leader的okr是怎么定的。

  1. 高级总监:持续的提升研发效率,快速交付业务

  2. 总监:加强团队沟通,完善产研流程,保证业务交付

  3. 经理:整合业务系统,减少重复开发,提高能力服用,建设排查工具,ab团队轮流进行需求开发

  4. 小组长:xx系统整合,完成订单,商品,供应链模块下沉,抽象出数据一致性组件,数据审计平台建设,完善核心链路告警配置,系统可用性维持在4个9,核心接口耗时150ms

我们可以看到从上到下一层层的更加具体,到执行层就是具体的一些工作事项了。而上层一层层的就是更靠近商业本身了。

比如持续的提升研发效率,目的是业务需求的快速交付,背后的意思是产品快速交付市场,培养用户习惯,和竞争对手拉开差距,抢占用户心智等。

所以如果程序员不应该只去呆呆的完成技术功能,做好系统稳定性和性能是程序员的天职,在其之外,我们需要考虑这个需求是服务于哪个大的商业目标的,这样你既可以知道一个大的商业目标,也可以知道服务于这个商业目标需要做的事情,时间久了,你的竞争力和业务敏感性就出来了。

再举一个例子,在电商交易流程中,基本是围绕于下单,履约,售后完成的。

那么履约过程中,如果服务于老板的那句“提效”有哪些可以搞呢?

比如我们的接单流程是用户下单之后,我们通过mq接收到订单,推单到商家,商家接单,操作,完成之后骑手接单,发起配送再完成。

我们所负责的系统里面是围绕于接单,推单,发单这个环节的,经过系统分析和链路分析,以及到店观察,听取商家意见。

我们知道在推单过程中可能存在积压问题导致推单效率低,于是我们在mq监听角度做了很多优化,分片,拆分等,解决了延迟,实现了用户下单商家即接单的效果。同时为了保证商家可以更准确接单,提高稳定性我们也做了多个通道的触达,解决了某一个通道不可用时,商家丢单的情况。当然还有其他的保活机制。

在接单之后的操作环节,商家提出有的场景在品类上是“冷热饮”,但是用户要求多加冰,商家经常误操作,制作出了一个热饮,导致得重新操作,无形中浪费了商家和骑手的时间,于是我们在品类拆分上做了一些事情,比如拆出“冷饮”和“热饮”。商家就减少了误操作。

虽然是很小的一个优化,但是体现出了程序员在业务能力上的精进,不是简单的完成crud,而是去思考其背后所服务的业务目标,最终在产品上体现的是商业的目标。

所以程序员后续的持续精进,是需要思考目前做的技术需求和商业目标或是业务目标是什么。

程序员成长的本质,就是一步步靠近商业相关推荐

  1. 程序员成长的10个阶段

    我的程序员成长之路 程序员的成长经历往往很相似,大部分的人走过了最前面相同的一段路,而有的人则走得更远.总结自己这些年来的历程,这也许能让年轻的程序员少走一些弯路,成长得更快:或许更好一些,能让大家从 ...

  2. 程序员成长之路--软件架构

    程序员成长之路--软件架构 一.想成为一个合格的架构师,你要知道软件架构是个什么概念,明白架构的定义: 1.软件架构是一个系统的草图. 2.软件架构描述的对象是直接构成系统的抽象组件. 3.各个组件之 ...

  3. 原创电子书《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》

    <菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...

  4. 典型的 C++ 程序员成长经历

    From:http://blog.csdn.net/breakerzy/article/details/7399872 一个典型的 C++ 程序员成长经历: 1.  完整的学一遍 C++ 所有语言特性 ...

  5. 原来程序员成长的关键竟然是它?!

    就目前的IT大环境而言,程序员的日子不是很好过,无论是正在找工作的还是已经入职的,压力都非常大,似乎处处充满危机.但是究其原因,他们之间大部分都缺乏同一种东西--项目经验.没错,在我看来,项目经验就是 ...

  6. 程序员成长之旅——同步IO和异步IO(五种IO模型)

    程序员成长之旅--同步IO和异步IO(五种IO模型) 同步和异步 同步 异步 消息通知 场景比喻 阻塞和非阻塞 阻塞 非阻塞 事例 同步IO 阻塞IO 非阻塞IO 信号驱动IO 多路转接IO 异步IO ...

  7. 程序员成长之路(四)之有用的网址

    2019独角兽企业重金招聘Python工程师标准>>> 通过Java来测试JSON和Protocol Buffer的传输文件大小 http://www.jb51.net/articl ...

  8. 程序员成长系列--应该读的通用技术书籍列表

    曾经看过一篇文章,说程序员分为5种境界,比诗人还多2重境界. 第一重,芳辰追逸趣,禁苑信多奇.在这个阶段,我们大多是还没有入门 第二重,壮志饥餐胡虏肉,笑谈渴饮匈奴血.在这个阶段,其实我们已经入门 第 ...

  9. 论程序员成长中不可避免的选择,薪资与积累

    论程序员成长中不可避免的选择,薪资与积累 为何写这篇文章 为何写这篇文章 人或许都有一种心理,觉得自己总不会差,也觉得比其它人稍微利害那么一些(相对而论),这是自信的表现,如果你有,不妨放下身段,听听 ...

最新文章

  1. R语言ggplot2可视化:ggplot2可视化直方图(histogram)并在直方图的顶部外侧(top upper)或者直方图内部添加数值标签
  2. 常见的数据库端口及查询方法
  3. Diango REST framework 视图继承图
  4. python中的format方法和int方法
  5. noip模拟赛 遭遇
  6. golang 多协程的同步方法总结
  7. python-封装pymysql的思路步骤
  8. python报错ValueError: invalid literal for int() with base 10解决方法
  9. 前端根据设计图精确开发 (攻具)
  10. data spring 指定时区_今天的工作内容:Spring Boot 2.X整合Spring-cache
  11. hdu 4599 Dice
  12. 类实现接口,必须实现接口的全部方法么?
  13. 魔术师usm安装服务器系统,系统总裁开发的u盘魔术师安装win7图文教程
  14. 二维傅里叶变换深度研究-图像与其频域关系
  15. Chromium OS Autotest 客户端测试
  16. web应用开发相关技术,CSS盒模型概述
  17. 轻量化AlphaPose
  18. 协方差矩阵的齐性检验(接上一篇文章)
  19. IOST节点搭建【私链】
  20. 跟我一起重写JAVA WEB网络硬盘( 1 )

热门文章

  1. 0x06.基本算法 — 倍增
  2. linux多路径策略配置,linux 多路径配置
  3. 建造者模式java_java设计模式3——建造者模式
  4. J - Invitation Cards POJ - 1511
  5. android 滑动顶部固定,android view滑动到顶部悬停
  6. 如何判断软件功能特性的依赖?
  7. 性能测试,负载测试,压力测试以及容量测试的联系与区别--网搜及总结
  8. 实施自动化测试的六个目标和意义
  9. DevOps之旅:运维人员阅读源代码的实用技巧
  10. 【转】使用Javascript改变HTML内容