BAT会看上哪样的中小公司程序员?

这里写自定义目录标题

  • 欢迎使用Markdown编辑器
    • 新的改变
    • 功能快捷键
    • 合理的创建标题,有助于目录的生成
    • 如何改变文本的样式
    • 插入链接与图片
    • 如何插入一段漂亮的代码片
    • 生成一个适合你的列表
    • 创建一个表格
      • 设定内容居中、居左、居右
      • SmartyPants
    • 创建一个自定义列表
    • 如何创建一个注脚
    • 注释也是必不可少的
    • KaTeX数学公式
    • 新的甘特图功能,丰富你的文章
    • UML 图表
    • FLowchart流程图
    • 导出与导入
      • 导出
      • 导入

是大大说

欢迎使用Markdown编辑器

80% Java工程师都有的迷茫

跟大家聊一聊很多很多很多人问我的一个问题:中小公司的Java工程师该如何规划准备,才能跳槽进入BAT这类一线互联网公司?

我用了三个 “很多” 来形容这个问题,是因为这个问题太普遍了。国内Java工程师至少好几十万,但是在国内互联网大厂里干过的码农比例不高。

这个是符合28法则的,少部分人在大厂里干过,发展得很好。但是大部分人还是在中小型公司,或者外包类传统IT公司里工作。

这些同学可能对自己的技术成长,职业发展感到非常的迷茫,自己有点追求,也想去一下大厂,但是又不知道怎么规划。

我个人在国内几个最大的互联网公司先后有着十余年工作经历,面试和招聘过大量各种水平的开发人员。包括初、中、高级开发,技术专家,高级技术专家都面过。也指导过很多同学的职业发展规划,所以打算从我个人的角度来聊聊这个问题:中小公司的同学应该如何一步一步实现逆袭进入BAT。

我相信以下情形很多同学应该都有类似体会:一直徘徊在各种中小公司里开发一些没技术难度的Java系统,主要就是CRUD。

哪怕是用了用MQ、缓存、分库分表,但是也没什么并发量,数据量也不算特别大,自己的技术成长极为缓慢。

等过了三五年,甚至是十多年过去,职业发展和技术水平都停滞在这个状态,无法有更进一步的发展。

随着现在寒冬到来,到处裁员,中年码农的危机,加不动班、体力越来越差、孩子压力越来越大,对自己何去何从很迷茫。

你的技术为啥十年八年都无法进步?

先来搞清楚一个问题,你的技术到底为什么十年八年都无法进步?

拆解一下,你的能力集中在哪几块:

技术广度

对MQ、缓存、NoSQL、大数据、高并发、高可用、微服务,等一系列的相关技术都有一定的了解,熟悉常见功能

在自己的项目里落地使用过,有一定的技术使用经验。

技术深度

读过Kafka的底层源码?

对消息中间件的架构设计思想有深刻的理解?

对分布式事务框架/中间件的架构设计有过研究?

在每秒百万并发场景下做过底层系统的深入优化和故障处理?

如果你有类似这种过人之处,那么才能说你有某些技术深度。

项目经验

你有没有整体负责过几亿注册用户,几千万日活用户的大规模、高并发、分布式、高可用、高复杂度的系统架构设计?

或者你负责的一直都是那种公司内部使用的,几十个人用的OA系统,CRM系统?

团队管理

你在互联网公司里带过20的团队?

或者你在一个传统IT公司里带过3个人的小组?

拆解过后再来看看,如果你在一些小型互联网公司,或者是做一些传统软件开发,为什么技术无法进步?

其实道理很简单,可能公司推出了一款APP,但是用户量总共就100万,日活用户就10万人。

那你的系统有技术挑战吗?没有。

既然没有技术挑战,你把系统搞那么复杂干嘛?或者架构师搞那么复杂干嘛?不需要。

大家简单做一做,主要CRUD写一下功能,最多现在Spring Cloud流行了,上一下拆成微服务的就够了。

这套系统就稳定支撑公司的业务了,那你接触不到很大的技术挑战,所以技术进入停滞状态,不是很正常么?

或者你做一些传统的软件开发,比如说建筑类软件、办公自动化软件这种的。总共就几十个人用一个系统,或者几百人用,那情况就更是如此了。

可能都不需要Spring Cloud,直接单块系统,单机部署,就是在里面填充业务代码就好了。

所以根本原因是很多同学平时的工作环境,没有什么技术挑战,所以只要把系统技术做的简单一些,低成本就可以支撑公司业务了,那既然这样,当然技术就进展很缓慢了。

可能你工作了八年十年,技术广度还可以,对流行的技术自己都看过一些书,简单用过,玩过Demo。

你的项目经验积累了不少,但是都是一些各个传统领域的系统业务理解较为深刻,没有极高技术挑战的项目经验。

有的人工作时间长,可能就是带过一些人,有过一些带团队的经验,能管人。

大概就是如此了,每次换工作,还是只能换类似的公司,干类似的技术,依然没有进步,依然是类似的项目经验。

所以大伙儿先梳理清楚,迷茫的根源究竟在哪里。

追求卓越,自己设立技术挑战

坦白说,如果站在公司角度是很反对架构的过度设计的,因为平白浪费很多时间,而且很多架构过度复杂没有必要。

但是如果是站在个人的职业发展角度而言,那么你的Leader必须要有对技术追求卓越的思维。或者你是Leader的话,就得有对你的团队技术追求卓越的品质。

什么叫追求卓越呢?

举个例子,现在你开发了一款办公自动化系统,服务某个公司,几百人在用,那么技术一般,就是一个单块系统,直接Spring MVC + Spring + MyBatis就搞定了。大家都做着没意思。

现在Leader为了大家的幸福和未来,咬咬牙说:“兄弟们,现在系统满足公司的发展了,但是我们不如来大胆的追求一下卓越。”

兄弟们:“领导你是啥意思啊?”

Leader:“咱们首先为了提高系统的开发效率,避免30个兄弟开发一个单块系统效率太低,我们来实践一把最流行的微服务架构吧。

咱们一起来把系统重构成微服务的架构,把spring cloud整套东西都用进去。

咱们先得做技术调研,小A你来研究研究Spring Cloud核心技术组件,小B你来研究研究配置中心,小C你来研究研究服务链路追踪……

大家分头行动,都开始学起来新技术。但是咱们平时已经很忙了,要是占用工作时间搞这个,老板会骂人,大家看,每个人每天额外加班抽2小时一起来搞一下,怎么样?”

兄弟们:“领导,为了大家的幸福,那肯定得赶紧上新技术啊,大家都学点新东西。”

最后大家辛苦了2个月,一起把系统重构成了整套的微服务架构,每个人都学到了东西,领导也学到了微服务整体架构设计的能力。

Leader:“现在这破系统就几百人用,忒没意思了,咱们来大胆想象,假如说以后这个系统要做成SaaS云产品,会有几百个公司来用,有几万人,甚至几十万人同时使用一套后台系统。大伙想想,那时会怎么样?”

兄弟们:“贫穷限制了我的想象力。”

Leader:“那小A你去根据现在系统的访问量估算一下,如果有几十万人用,系统每天的并发量会有多少,数据库能不能支撑住,需要用哪些高并发的技术来支撑?

小B,你去调研一下,如果有几十万人用,我们会存储多少数据量,性能会有多差,怎么支撑海量数据存储?然后看看用什么技术来支撑一下?”

兄弟们:“好,领导一句话,上刀山、下火海。 ”

几个月后,大家研发了一套系统,完成了测试,系统集成了缓存集群、MQ集群、分库分表技术,还有很多其他的一些东西。

这个时候领导就想办法了,能不能跟老板建议一下,咱们就把产品做成SaaS云的模式呢?然后是不是可以就把这套系统给部署到生产环境里去?

到此为止,就通过一个例子给大家阐述了一下,自己在公司里如何通过想办法不断的追求系统的卓越,提高研发效率,支撑也许可能会存在的更高的并发量,更多的数据量,尽可能把系统做的更好一些。

多想想为了解决自己设想的一些技术挑战,如何尽可能把一些业界常用的技术都学习一下,比如缓存、消息、分布式、微服务、大数据等等。

都尽可能进行相关的实践,积累相关的项目经验。

实际每个人在落地的这个过程的时候,方式肯定是不一样的:有的人也许人微言轻,只能对自己负责的模块设想一些技术挑战,然后只能自己在本地拉一个公司代码分支,尝试对这些分支加入一些技术,自己练习思考。

还有的人可能是个小Leader,无法左右公司产品发展方向,但是可以尽可能跟上级沟通,阐述自己对系统架构追求卓越的一些构想。

然后争取到一些时间,尽可能把系统多融入一些技术,给做得好一些。

每个人都有每个人的方式,但是归根到底一句话:如果你本身工作没有技术挑战,那么尽可能多给自己设立一些挑战,多学一些技术,多做一些尝试和实践。

这总是可以尽可能帮助你在一定程度上提高技术,扩展技术知识的。

在这个阶段,我见过最多的人犯的最大的一个错误就是:觉得自己这样倒腾一些技术是没用的,没有实际的真正的经验。

然后他们着急忙慌,心浮气躁,自怨自艾,总想着必须得先进一个好的公司,才能锻炼技术。

实际上,这是一种很浮躁的想法,你要进好的公司锻炼,你必须先打磨一下自己的技术,然后才能有资本去一家更好的公司。

幻想一步登天?那只是你的黄粱美梦

很多人多学了一些技术经验,很容易开始有点膨胀,老是想着一步登天,一下子就进入BAT。

现实是有类似的一些成功经历,比如有的人是大专学历,通过自己的努力学习,加上一些机缘巧合,直接一下子就从中小公司跳入了BAT。

但是就现实情况来看,不是每个人都一定可以一步登天,复制这个经历的。

在你学习了一些技术,同时自己多做了一些尝试,积累了一定的经验之后,此时应该做的是:做最坏的打算,抱最好的希望。

你完全可以去试试BAT、TMD的面试,尽可能去争取机会,但是如果没面上也无所谓。

你可以降低期望,人只要跟自己比就好了。

比如说你现在在某小型的传统外包软件公司,那么接下来如果你能面进一家小型创业互联网公司,有个几百万用户量,日活用户有几十万,比之前的公司技术挑战多一些,用的技术也更多一些,那么你就可以去了。

只要你每一步跳槽,都比之前好,都让自己有进步,那么整体的大方向就是没错的。

也许你先进一个创业型互联网公司,然后下一家就可以进入一个市值几十亿美金的上市互联网公司,再下一步就可以进入BAT。

在这个阶段我见过很多人犯的最大的错误就是:老是觉得自己刚学了一点东西,就必须立马进大公司。

这些同学往往心态着急的不行,而忽略了自己的学历、背景、经验导致了起点较低。能立马进BAT当然很好,但是有时候机缘巧合缘分没到,进不去也正常。

在这个阶段最需要做的,就是跟自己比,别跟别人比,只要每一次跳槽都比上一次好,公司更大,薪资更高,职位更高,技术挑战更大,就可以了。

不断提升自己,最后进入 BAT

一旦你开始做到跳槽进入一家比之前更好的公司,有更高的技术挑战,那么公司本身的技术挑战就会促使你快速成长,还是举个例子吧。

比如说你本来就在做传统软件的开发,用的都是单块系统涉及的一些技术,就是简单的Spring MVC、Spring、Mybatis等技术做CRUD的业务开发。

但是你自己业余不停地学习技术,对自己负责的一些模块多设立了一些技术挑战,自己构思了很多更高挑战的场景下,可以给自己的模块加入哪些更高阶的技术。

接着你带着自己学习的一些技术,还有积累的一些实践经验和思考,进入了一家创业型互联网公司。

这家公司的好处就在于,互联网公司技术氛围更好,比如ZooKeeper、Redis、RocketMQ、Sharding-JDBC,等各种技术,在公司生产环境的系统里,都有落地和使用。

那么你此时是不是就不用停留于一些技术挑战的构思,可以开始真正做一些有点技术挑战的工作了。

但是,此时你还是需要继续不停的学习技术,学习更多的架构上需要的技术,深入的学习技术,同时积累实践经验。

然后带着这份工作经历,同时加上你不断加强的技术学习,你进入了一家比如30亿美金估值的独角兽公司。

这家公司有2000万用户,日活用户达到百万级,高峰并发量可以过万,每天数据库里日增数据量达到了数十万。

此时你开始真正接触一些所谓的:高并发、高可用、高性能、海量数据的实际处理。

基于你开发的业务系统,你开始更多的实践,同时你还对各种涉及到的技术有了更加深入的研究,比如对一些核心中间件系统进行了源码级别的阅读和研究。

最后你终于等到一个机会,BAT里某家公司让你去面试,经历了四五轮面试之后,对方给了你一个Offer,是年薪40万的高级Java工程师的职位。

然后你可以在最顶尖的互联网公司里学习开发流程、规范、架构,接触到最大规模的用户量,每天都有解决不完的技术挑战,在这个过程中,你又可以继续成长。

可能你再次跳槽,进入TMD中某一家,拿下技术专家的Offer,在大公司里拿下技术专家的职位,带一个团队,达到人生第一个巅峰。

接着你再跳槽,可能一些创业公司就开始挖你去做一些技术管理层。

大家别以为这个仅仅是笔者捏造的一个故事,在笔者指导过的同学中,确实有同学按照这个路线,实现了人生的逆袭!

最后,送大家一句话:九层之台,始于垒土;千里之行,始于足下。

最难的是开始的那一步,大量的人都停留在一些完全没太多技术含量的技术工作的情况下,这个时候是最难熬的。

其实只要能把第一步走好,自己拼命地积累技术,努力跟其他工程师竞争,技术远超跟自己同情况的其他工程师,那么你就有机会率先脱离这种困境,开始慢慢第二步,第三步。

到了后面,就是让公司的技术挑战使你不断努力和进步,最后进入BAT这类一线互联网公司。

喜欢关注后台私信回复【架构资料】即可获取Java架构视频资料。

你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: BAT会看上哪样的中小公司程序员?_第1张图片

带尺寸的图片: BAT会看上哪样的中小公司程序员?_第2张图片

居中的图片: BAT会看上哪样的中小公司程序员?_第3张图片

居中并且带尺寸的图片: BAT会看上哪样的中小公司程序员?_第4张图片

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

你可能感兴趣的:(转载文章)