七年程序员职业规划:北京、上海、硅谷工作经历分享

2023-11-05

前言

很多年前,刚刚从大学毕业的时候,很多公司来校招。其中最烂俗的一个面试问题是:“你希望你之后三到五年的发展是什么?”。我当时的标准回答是(原话):“成为在某一方面能够独当一面的技术专家“。后来经历了几家不同的公司,换了不同的方向,才知道这个真是一个很难的问题。因为兵无常势,什么东西都是在不断的变化,一早的时候看好的东西可能会被淘汰。

(几乎)没有人能够看准技术的下一个方向,因为这个问题实在是太难了,能够做到这一点的你就成为了技术界的巴菲特了。比如说11年加入Google,14年加入Facebook,16年加入阿里巴巴。做到这一点的人肯定有资本也有眼光去做风险投资,就算不做风险投资那么财务自由也是妥妥的。

现在快毕业八年了,从北京到上海到硅谷漂泊,从国内互联网公司外企,看到了公司好的地方和坏的地方,这里只是根据自己的经历写一些大方向选择建议,仅供参考。

一、行业背景很重要

行业背景非常重要;工作3年后必须确定自己的行业背景,比如一直从事电信行业,一直从事银行项目,一直从事ERP行业等等。

一个程序员不可能是一直写代码的,就是写代码也要知道业务逻辑,满足什么需求;俗话说隔行如隔山,每个行业的业务都不一样,甚至差别很大,比如你一直从事流媒体的研究,让你跳槽到一家银行项目,完了,一切从头学吧,以前的行业经验都用不上了;而且,一个公司公司招人,就是希望找到那些很容易上手,不需要培训业务很久的程序员;频繁跳槽的朋友,一定要注意这点;

一直在一个行业呆久了,就可以成为这个行业的专家;我们可以经常看到,一个项目组的某个leader,代码写的一般,但是却可以跟客户流畅的沟通,控制着新需求的提出,bug的修正等等;而客户也很愿意跟他打交道,因为那些老的项目只有他能维护,他甚至熟悉系统的每一张表结构——-可想在这个行业呆的时间有多久啦。

第二、合理的职业规划

什么是职业规划—-就是你短期或者长期的一个职业计划!大道理不讲,咱简单点。先问你几个问题:

a.你工作几年了,你愿意一直和新入行的新手一样就是个简单的程序员吗?

b. 你愿意一直写代码,而不关心其他吗?

c. 一个项目的前期需求,设计,后期部署维护,领导找到你,你说咱搞不定,行吗?

程序员不是敲代码的机器。第一年太多东西不懂,你可以一切听从老大的安排,敲敲代码,看看数据库,测试自己和别人的代码;但是第二年,你还是这样吗?不可能的,一年的经验你完全可以入行了,是时候该学习怎么进行需求分析,怎么设计数据库,怎么写各类文档,怎么写更好的代码?这是高级程序员的要求!

三、什么是高级程序员?

具有分析设计能力,能进行技术攻关,而且具有某行业深厚背景的程序员!

所有,一个项目立项后,你要积极的参与到前期设计中,跟老同志们一道思考分析问题,学习经验!OK,你这就成长啦!

千万不要认为程序员就是写代码的哦!!!

而且,通过一个项目的开发,你要能粗略的统计出一个功能的开发时间;比如一个模块有20个小功能点,你开发了80个小时,每个小功能点平均2小时——这时在前期就能评估工作量啦。当然每个人的效率和工作质量是不同的,因人而异,但是大概的工作量应该是可以统计出来的,用于统计一个项目的工作周期;

据不完全统计,截至目前为止,中国程序员的数量已经超过了100W+。而且,随着IT培训业的持续发展和大量的应届毕业生进入社会,程序员面临的竞争压力越来越大。那么,作为一名程序员,怎样努力才能快速成长为一名高级的程序员或者架构师,或者说一名优秀的高级工程师或架构师应该有怎样的技术知识体系,这不仅是一个刚刚踏入职场的初级程序员,也是工作三五年之后开始迷茫的老程序员,都必须要面对和想明白的问题。

四、如何保持高效提升?

第一阶段1-2年

我认为1-2年对于程序员来说是第一个门槛,这一阶段菜鸟正式从理论迈向企业级开发。我们知道如何使用工具、项目版本如何控制、接触并能够使用以下tplaravel等框架完成项目等等,积累了一定的开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段。

第二阶段2-3年

3年又是区分程序员的第二个门槛。有些人在3年里,除了写工作代码,在空余时间基本不会研究别的东西,这些人永远就是个Curd,年纪大一些势必被更年轻的人给顶替;3年的Java程序员除了写代码还需要热衷于学习各种技术实现、不仅对项目运筹帷幄,还要能解决一切性能问题。只有深入学习底层原理、spring、Java虚拟机,微服务,Mysql底层优化等,才能保持核心竞争力,拥有一份不错的薪资!

第三阶段3-5年

到了第三阶段3-5年的阶段,技术体系需要逐渐往大型层次进阶, 有效、高速的处理从很小到非常大的项目管理,随着我们的业务量越来越大和越高并发,单体的架构模式已经无法对应大规模的应用场景,利用分布式架构来冗余系统消除单点的故障,从而提高整个系统的可用性。同时分布式系统的模块重用度更高,速度更快,扩展性更高是大型的项目必不可少的环节。

五、了解及掌握互联网最新技术

作为Java程序员学习压力、竞争是最大的,而你想超过他人除了天赋之外,努力是必不可少的!

一、互联网架构之基础篇

(1)Linux基础+团队协作

(2)JDK源码+框架

(3)开源源码

(4)设计模式+并发编程

二、互联网架构之性能调优篇

Java高性能之底层基建JVM+数据高性能之MySQL调优+Web高性能之Tomcat底层原理

三、互联网架构之搜索引擎篇

分布式搜索引擎+搜索引擎基础Lucene

四、互联网架构之数据存储篇

分布式缓存设计+分布式海量数据存储+分布式分库分表+分布式事务管理

五、互联网之高性能篇

高并发分流实战+分布式通信框架

六、互联网架构之中间件

分布式消息中间件

七、互联网架构之服务治理篇

分布式服务协调治理zookeeper+分布式服务框架dubbo+持续集成与自动部署Docker

八、互联网架构之微服务篇

服务注册于发现(Eureka)+客户端负载均衡Ribbon+声明式服务调用Feidn+服务容错保护Hystnix+分布式配置中心Config+微服务网关Zuul(消息总线+分布式服务跟踪+消息驱动框架+微服务实战)

为此我为大家准备了一套精品Java架构师视频资料,保证你学了以后保证薪资上升一个台阶。(篇幅原因,以下是一小部分资料展示)

Java精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Java开发工程师1-8年的开发人员、正处于瓶颈期,想要突破技术瓶颈或者学习进阶架构以及涨薪的对你更是如鱼得水,名额有限,先到先得!

资料获取方式:点赞+关注才可领取

关注+点赞后私信小编【求一份】领取(附送面试及PDF文档,百分百免费)!!!

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

七年程序员职业规划:北京、上海、硅谷工作经历分享 的相关文章

  • HashMap为什么使用红黑树而不用普通的AVL树

    红黑树是一种平衡二叉树 要求从根到叶子的最长路径不会超过最短路径的2倍 AVL树是高度平衡的二叉树 左右子树树高不超过1 补充 AVL是Adelson Velskii和Landis树的缩写 是一种用于排序的二叉搜索树 一般用平衡因子判断是否
  • 操作生产库之前--你应该做什么

    操作生产库之前 你应该做什么 操作之前的数据库风险单 在操作生产库一般可能会出现无法预知的未知因素 这可能给数据库的操作带来意外的麻烦 这些都是在操作之前 应该考虑的 数据库操作者 操作开始时间 操作时间范围 预计工作时间的两倍半 可能出现
  • 为什么程序员一定要会用Google和Stack Overflow?

    内容简介 前言 为什么用Google不用百度 为什么用Stack Overflow 小结 前言 下文中 谷歌统一用Google表示 作为程序员 用Google比用百度更节省时间 此话不假 在法国工作也有4年了 加上之前的两个6个月的实习 勉
  • angularjs中post请求进行跨域

    post请求进行跨域 angularjs内置封装了类ajax的网络服务 http 所以实现了依赖外部插件来完成完整的前后端分离方案 scope main getData function http method POST url http
  • Git基于已有分支创建新的分支,简单的git 命令

    准备工作 进入要创建git分支项目目录 打开git命令行 1 基于已有分支代码创建新的分支 git checkout b new branch name origin source branch 2 将代码推送到新创建的git分支上 git

随机推荐

  • Qt Creator使用内存泄漏检测工具Valgrind

    Qt Creator使用内存泄漏检测工具Valgrind 随着软件变得越来越复杂 内存泄漏和野指针问题已经成为程序员最头痛的问题之一 幸运的是 现代IDE提供了许多工具来帮助我们解决这些问题 在这篇文章中 我们将介绍如何在Qt Creato
  • 单价数量和总价的公式_小学六年超全的数学公式!家长们赶紧给孩子看过来……...

    小学数学基础知识整理 一到六年级 小学一年级 初步认识加减法 学会基础加减 小学二年级 完善加减法 表内乘法 学会应用题 基础几何图形 小学三年级 学会万以内加减法 长度单位和质量单位 倍数的认知 多位数乘一位数 时间量及单位 长方形和正方
  • 租赁OLED透明屏:打造独特商业体验的智慧选择

    近年来 OLED透明屏技术在商业领域中迅速崛起 其高透明度和卓越的图像质量为商家创造了全新的展示方式 租赁OLED透明屏作为一种智慧选择 不仅能提升品牌形象和吸引力 还能创造与众不同的视觉体验 对此 尼伽将和大家一起深入探讨租赁OLED透明
  • 如何从零开始搭建公司自动化测试框架?

    搭建的自动化测试框架要包括API测试 UI测试 APP测试三类 以上三类其实可以简化为两类 那就是 1 接口自动化测试框架搭建 2 UI自动化测试框架搭建 没问题 安排 且是手把手教你如何搭建以上两类自动化测试框架 刷到这个问题的测试人员
  • Ubuntu上vscode调试C/C++代码

    这篇文章起初是我看了一个B站的视频 作者讲述了如何在Ubuntu的 环境中通过使用vscode调试C C 代码 这个教程非常好 也非常推荐给大家 但是这个教程有一个局限性 就是他在他的公共号上写的教程非常简略 以至于我想再次看一遍 需要重新
  • 微信小程序引入背景图的三种方法

    1 直接在标签里加上style样式 加上背景图
  • K8s集群组件、flannel网络插件、Pod详解

    文章目录 Kubernetes 1 K8S集群架构 2 角色与功能 3 部署环境要求 Master Node 4 flannel插件 flannel是什么 目的 5 Pod 什么是Pod 为什么要使用Pod Pod的生命周期 Pod的创建过
  • STL源码:lis容器(Qt5.8版本)

    初次学习STL源码 很多语义尚且比较模糊 需待二次学习 源文件结构 主要的实现都在
  • Odoo 16 企业版手册 - CRM (2)

    销售线索 在与客户或组织开展业务之前 可以将销售线索视为第一步 如果个人或组织对您的业务感兴趣 您可以将他们的兴趣转换为您的业务 作为销售线索 稍后可以转换为销售机会 在Odoo CRM的帮助下 可以从各种来源收集线索 通过电话 短信 电子
  • windows下安装git

    一 下载Git安装包 1 打开Git的官方网站 https git scm com 2 找到下载页 https git scm com downloads 3 找到Windows版本下载页面 https git scm com downlo
  • 数据结构复杂度分析

    文章目录 前言 一 什么是复杂度分析 二 为什么要进行复杂度分析 三 如何进行复杂度分析 1 大O表示法 2 复杂度分析法则 四 常用的复杂度级别 1 常数阶O 1 2 线性阶O n 3 平方阶O n 4 对数阶O logn 五 不常见的时
  • golang中多种方式设置时区

    关于我 文章首发 我的博客 欢迎关注 go语言的time Now 返回的是当地时区时间 time Now Format 2006 01 02 15 04 05 time设置自定义时区 var cstSh time LoadLocation
  • c++继承-----继承中构造函数写法

    父类中的属性 调用父类的构造函数初始化 成员函数的方式初始化 子类中的构造函数 必须要调用父类构造函数 必须采用初始化参数列表的方式 子类想构造无参对象 父类必须要写无参构造函数 隐式调用构造函数 class Parent public 我
  • 文字验证码:简单有效的账号安全守卫!

    前言 文字验证码不仅是一种简单易懂的验证方式 同时也是保护您的账号安全的重要工具 通过输入正确的文字组合 您可以有效地确认自己的身份 确保只有真正的用户才能访问您的账号 HTML代码
  • 关于mybatis的resultMap映射VO类

    今天的模块需要用到多表联查 将查到的结果放到一个新的实体类中 而这几张表的主键我需要用到 难过的是多个表的主键名都是 id 这就导致新的实体类中多个表的主键字段名无法区分 最后再查询语句中加入别名以区分多个表的主键 本以为这就可以了 但是在
  • Java 通配符泛型例子

    请看下面的代码 其中会发生错误的代码已经注释掉 并且写明了错误类型 总体来说 泛型通配符就是为了支持多态时父子类 接口扩展类之间的相互转换而生 package test import java util ArrayList import j
  • seaborn学习笔记(三):直方图、条形图、条带图

    html font family sans serif ms text size adjust 100 webkit text size adjust 100 body margin 0 article aside details figc
  • [carla]把carla世界坐标系 转换为 俯视地图像素坐标系

    在下面这篇参考博客中介绍了如何手动获取从carla世界坐标系到俯视地图像素坐标系的旋转平移矩阵 我也是采用了一样的思路和代码 这里把实现的过程以及最后所有地图的变换矩阵记录如下 参考博客 carla真实世界坐标系与全局俯视地图像素坐标系变换
  • MetaFormer论文翻译

    MetaFormer A Unified Meta Framework for Fine Grained Recognition 摘要 细粒度视觉分类 FGVC 是一项需要识别属于超类别的多个从属类别的对象的任务 最近最先进的方法通常设计复
  • 七年程序员职业规划:北京、上海、硅谷工作经历分享

    前言 很多年前 刚刚从大学毕业的时候 很多公司来校招 其中最烂俗的一个面试问题是 你希望你之后三到五年的发展是什么 我当时的标准回答是 原话 成为在某一方面能够独当一面的技术专家 后来经历了几家不同的公司 换了不同的方向 才知道这个真是一个