近期由于公司解散,重新踏上了求职的旅程,当然,作为一个工作几年的老人来说,面试肯定也要有所选择,毕竟面试成本是挺高的,不管对公司还是对自己个人来说。适当拒绝一些自己没有兴趣的公司,对彼此都是好事。

面试了几个,coremail,VIP,荔枝FM,另外几个都是朋友或者内部推荐的,没有进行技术面,就不多说了。 很多朋友问我,面完感觉如何,感觉?真心没感觉啊,好多比较深入的问题都不怎么了解,但比较熟悉的都可以谈得比较好。

记得在荔枝FM面试的时候,面试官问我:你觉得你相比其他人的优点是什么?或者说你的核心竞争力是什么?

我一下子懵了,我想过很多自己的优点,比如说:对技术比较执着愿意去学习新事物,并且接收挺快的等等,但核心竞争力是什么?我一直没有去考虑过。

于是,我随口一说:

作为一个工作5年的人,我觉得我现在比较大的优势就是仍然对技术有热情。愿意去学习新技术。

现在想想,能说出这句话也是傻得可以啊。

定义

作为一个开发人员,或者说更泛一点的技术人员吧,核心竞争力是一个挺常听到的词语吧。

这种词语就肯定百度词条还是有点用的,它的定义是:

核心竞争力是一个企业(人才,国家或者参与竞争的个体)能够长期获得竞争优势的能力。是企业所特有的、能够经得起时间考验的、具有延展性,并且是竞争对手难以模仿的技术或能力。

对于我们来说:

核心竞争力就是你能够比其他人做得好,并且不可替换的能力。

如你jvm特别牛,出现bug排查比别人快很多;再如spring特别牛,让你写一个ioc容器出来都可以比较好,比较快的完成;或者并发这块比较牛,线上出现死锁问题可以很快乐排查…等等。

核心竞争力的英文是:Core competitiveness,但我觉得也可以直接就叫Advantage——优势,但这里的优势具有不可替代性

如有些人自嘲说:

  • 我是写代码的人里面吉他弹得最好的
  • 我是写代码的人里面测试做得最完美的
  • 我是写代码的人里面协调能力或者说管理能力是最好的

这些都可以算是核心竞争力。当你因为某一点具有了一定的不可替换性,那一点就可以称作核心竞争力.

你的核心竞争力

工作算是五年+了,有时候会自己想想,这五年来,我究竟是以什么样的状态在进步,或者以什么样的状态在工作,有什么核心竞争力

如果你有明确的答案,那么恭喜你;如果没有,那么是时候要好好考虑下了,要开始培养自己的核心竞争力了。

工作中的核心竞争力可以有几点,技术性格管理业务

  • 技术上的优势是比较可以区分出来的,比如你在公司里面是一个公认的mysql大牛,熟悉mysql引擎代码,调优更是不在话下;或者你是公司内部的一个很牛的架构师,在业务遇到瓶颈的时候,大家都会想到你,让你帮忙讨论,给出解决方案。 > 虽然技术上的优势是比较容易看出来的,但同时技术上的核心竞争力又是最难去获得的,需要付出两倍甚至以上的努力。当然,既然选择了这一行,那就拼呗。
  • 性格上的优势也比较简单区分,从平常的聊天和相处中可以看出。比如你说自己是一个很能调动气氛的人,并且可以很好的组织一些活动,能同时满足这两点的人是很牛的了。 > 提到性格,有些人会觉得内向是不好的外向是好的,但实际上并没有这样的区别。技术人员大多内向,当然也有一些外向的,内向表示你可以耐得住寂寞,一天几个小时甚至十来个小时都对着电脑;外向可能就不行,需要跟朋友去相处来补充能量(当然凡事无绝对,任何人都有性格的两面性,在某些场合内向,在某些场合外向,这里就不细讨论了)。凡事无绝对的好坏,不要强迫自己去改变性格。
  • 管理。你可以说自己管理一个上200人的部门,并且业绩一直是公司内部名列前茅。想想这样的成绩,有多少人可以做到呢,如果你走了,又有多少人可以顶上这个空缺,并且维持同样的成绩。
  • 业务。业务是一个公司赖以生存的东西,如果一个公司没有自己的主营业务,那么它注定不能长久。但你对公司内部的业务都了如指掌或者说很熟悉的时候,别人有什么不清楚的时候,都会想到你。你的重要性不言而喻。

核心竞争力是什么,就是那些别人很难做到的事情/拥有的能力,你一旦离开,别人在一定时间内不能立刻补上空缺,并做出相当的成绩。

培养自己的核心竞争力

我作为一个搞Java服务器研发的研发人员,并且个人比较喜欢技术,选择的是在技术上去构建自己的核心竞争力

Java Web可以说是一个非常广的东西,很多人一提到Java就会想到J2EE,毕竟其他基本没Java什么事(Android开发例外),而一想到J2EE,肯定就会有SSHStruts+Spring+HibernateSSIStruts+Spring+IBatis)或SSMStruts+Spring+Mybatis),然后就是有容器了,Tomcat,Jetty,JBoss其他慢慢少了就暂时不管了,而数据库呢,又有MySQLOracleMongoDBPostgreSQL等,因为是Web,所以负载均衡什么的,肯定都要吧,这时要Nginx,因为是大数据时代,缓存也要吧,所以要Memcached或者Redis,当然还有很多其他东西,这里就不详细指出来了。

如果你一直使用框架,你会明白,有时候是疲于奔命的,因为一直有新框架,追新会使自己一直停留在使用的状态上面,并不能深入。

当然,这并不是说不用了解业界常用的技术/框架,业界的一个动向还是要了解的。

那么下面来说说我的理解(可能有不对哈,觉得不对的朋友请轻拍,留言指正):

  • Java Web也是建立在Java基础上的,Java基础的东西有很多:多线程Nio等这些搞熟了吗?
  • Web肯定涉及到请求,那你知道以前的一个很流行的问题怎么回答么——一个web请求的过程?怎么去查询DNS,浏览器怎么做的。如果要你进行http调优,你会从哪几个方面去入手?
  • Web协议这块了解吗?自己能解析HTTP么?
  • MySQL调优会么?索引知道怎么用吗?毕竟让DBA来告诉我们某个语句效率不行的时候,已经对用户造成了影响了。KPI肯定会悲伤的哈。
  • MemcachedRedis有什么区别?选择哪个?MQ怎么用?几个流行的MQ——(ActiveMQRabbitMQ)各有什么优缺点?怎么选择?

当然,肯定不止这一些的,但想想,这些东西自己熟悉不,或者说了解不。如果熟悉,那我很佩服你,牛人哈;如果不熟悉,那么要挑时间去熟悉一下了。

其实随便挑一个点估计就够研究蛮长时间的。核心竞争力就是在工作中一点点培养起来的。

业务每个公司不一样,需要自己去深入去了解。其实就是在工作过程中多去了解一下其他人在做什么,如果是遗留系统就多去看看代码,知道以前是怎么做的;新系统就没这个问题了,多了解下其他人的工作。 性格这块我个人是比较内向的,让我在大家面前发言也会挺紧张的,所以就没发言权了。 管理这个并不是自己的方向,也不大懂,相信到了一定阶段,大家都会有自己的感悟的。

培养自己的核心竞争力是对自己职业生涯至关重要的。如果你意识到你去面试的时候并没有什么值得拿出来讨论的时候,这时你实际上就是缺失自己的核心竞争力。而当你有核心竞争力后,完全不需要为工作的事情,或者说为工资的事情担心。觉得工资给低了,跳就是。相信到时会是工作来找你,而不是你去找工作。