# # 开发人员,应该具备哪些能力?
说起开发人员,好像应该有一个分类,实习生,初级开发人员,高级开发人员,架构师,领域专家。但是非常认可下边的一个提炼。我觉得以下的能力,不用分什么级别,具备下边的能力,不管在什么级别,都可以有比别人更大的机会。
想要跳槽,想要加薪,不妨看看下边的这些能力,自己具备多少!
1、软件开发能力
2、架构设计能力
3、项目管理能力
4、线上运维能力
5、业务理解能力
6、学习能力
7、影响力
8、目标导向
9、热爱的程度与专注的程度
# # 能力画像解读-软件开发能力
java 基础:集合类 、IO 、 JVM 。其中JVM最起码要了解,知道原理。然后做到好点可以进行线上的调优,发现与解决问题。
多线程:线程池、线程通信的方式、以及为什么要使用多线程,解决了哪些问题。见过一些,就是为了丰富自己的简历而用的,问的时候,使用的场景根本和多线程没关系。带来的好处,以及问题。
框架:springboot 、spring、 springMVC、以及ORM框架,mybatis 、JPA 等等。这些都是必会的,不会这个根本什么都干不了。想要脱颖而出,最好是能够深入的了解一个到两个的源码。不仅仅是会用,还是要了解原理。了解原理,还能够拓展我们的的思维能力,在一些特殊的业务场景下,能够借助已经有的思想来解决问题。
消息中间件 :MQ之类的,不仅仅知道一个自己使用的,还用知道其它的,以及你在项目中为什么要用你用的那个。如果能深度的去了解一个就更好了,比方高可用,保证数据不丢失,不重复消费。
数据库相关: 关系型数据库mysql、 非关系型数据库redis、 elasticsearch 、事务 、索引 、sql优化(怎么优化的,为什么要优化)
算法编码能力:算法题是最能考验思维能力和代码能力的。
# # 能力画像解读-架构设计能力
包括两个方面:一个是代码方面的架构设计,一方面是技术架构。
第一个方面是编程的基本功,这要熟悉设计原则,设计模式,以及代码整洁,代码的一些规范。
技术架构:就是结束视野,最起码知道一些技术即使没有使用过,也能在有需要的时候,快速使用起来解决问题。
最后需要补充的是,长时间的工作积累下来的经验,举一个简单的例子,就是服务器的目录,很多人使用起来,就是在随意的践踏,就和哈士奇拆家是一样的。这个很痛苦。所以一定要有规范的去使用才行。比方说如果是不同的人使用,在一级目录里边以自己的名字明名。
# # 能力画像解读-项目管理能力
这一块需要有人对整个项目都有一个很好的理解,能够对每个人的进度来进行控制,不说管理谁,在别人进度落下的时候,你最好能帮一下别人。把组员的气氛给带起来,保护好自己的组员,同事。
# # 能力画像解读-线上运维能力
这个就包括问题的定位,问题的发现,以及问题的解决。其中就包括了JVM调优等等。能够借助工具,在项目上线前进行压测。借助工具发现已经存在的问题。进行参数的调优。这一块如果做的好,对系统的性能会有很好的提升的。程序不是跑着就没问题的,要知道一些指标是否达标。
1、常见的Linux命令的使用
2、常见的服务器指标(Load、CPU、内存、GC情况等)的查看、问题排查
3、系统调优、性能调优、sql优化等技能
4、常见问题排查思路。如死锁问题、慢SQL问题、内存溢出问题、Load飙高问题等等。
# # 能力画像解读-业务理解能力
这个就是要对自己做的都熟悉。作为初级开发,如果对整体不去掌握的话,你能做的事是真的少,可能就是一些重复的增删改查。这个问题我也曾经有过,刚在12306做实习的时候,就关注自己做的内容,觉得设计就应该是领导做的,没有自己的想法。对整体的业务没有一个好的理解。后来我的领导也对我进行了指导。跟我讲了好多东西。让我能有提升,其实这是一个经验不足的通病,通常把自己和系统划分的太清。都不知道自己做的东西,属于系统的哪一部分,接下来要作什么。
把工作当做自己的事业,这样才会心甘情愿的去投入自己的精力时间。当然领导都喜欢这样的人,还有一些就是做自己的工作,一副事不关己的样子,真的很讨厌。如果有精力的话,主动的掌握一个系统的百分只八十,掌握别人做的内容。一定一定要知道自己做的内容,在整个系统中的地位,作用。
# # 能力画像解读-学习能力
这个是很重要的 ,学习能力,包括了自动驱动力,即使不需要,也能够去学习。还包括在需要的时候,能够进行快速掌握。刚来这家公司的时候,就接手了搜索平台。学习了elasticsearch,后来对集群重新进行了规划,整改,节省了近500G的内存,速度也提升了近百分之三十,这个都是通过学习官网,另外就是看了网上几乎全部的关于优化的文章。
这一块,很难有感触,还记得我在进这家公司的时候,面试官问了我都用过哪些数据库。最后专门挑 了一个我从来没有用过的,让我去写一个案例机试题。这个就是要考验学习能力,和抗压能力,适应新鲜事务的能力。具备这些能力,在现在的市场上,才能够立足,才能够把自己卖一个好价钱。
这个最终要的,就是快速上手的能力。
# # 能力画像解读-影响力
影响力的话,包括参加开源的项目、在社区活跃、有写博客的习惯并且获得很多浏览量、
在公司的话,其实就是让别人记住你,让别人知道你有解决难题的能力。有什么问题不能解决的时候,大家一下就能想到你。我想如果具备这个能力,你的领导肯定不会不知道吧,那么评级考核的时候,分数就自然不会低了。
多组织和参加一些交流会议,把自己的知识分享出来。这个其实是对自己的提升,根据冰山理论(我自己创造的理论),就是想要把冰山的展现出来,非常的依赖下边看不到的努力。而讲解也是同样,想要讲出来想想的,可能自己要准备的更多,最后讲出来百分之六十就不错了。
# # 能力画像解读-目标导向
有好的目标导向,有好的计划。这样的人总是向前的。他知道自己这一年的路怎么走,自然就会提升,这对公司而言,也会带来不错的提升。
# # 能力画像解读-热爱的程度与专注的程度
感觉吧,百分十五十以上的人,都只是把开发当做职业,并不是爱好。这样的人生活之外是没有开发的。更没有学习,这样的人很容易就会成为我在上边讲到的,即使现在很有能力,然后带有一副事不关己的样子。然后根据写好的剧本,用不了多久就会被淘汰掉。
一个对程序有着强列的兴趣的人,和到达非常专注的程度,这样的人,怎么都不会太差。别人解决不了问题,他总会凑过去解决一下。无形之中,会带来很多的收益。
所以我在面试别人的时候,自然而然的会选更热爱这个行业的人。
这个有开源项目,写博客(内容还不错的话),都是要加分的。