阿神老师问:小伙伴们觉得作为一个程序员,在工作的过程中最重要的几种能力是什么?你最佩服的一种能力是什么?
A同学不是很确定的说:是交际能力?快速学习能力?
B同学接着发言说:我觉得是遇到问题能够独立解决并且知道原理。
C同学也不甘人后,接过话来说:应该是学习能力和解决问题的能力。
D同学打趣说:在中国,干啥都的讲究人脉,人脉广了,干啥都顺利。
E同学看大家说的挺积极,也表达了自己的看法:我觉得应该是沟通和协同能力吧。
F同学觉得起码的有4种能力,分别是:1.业务理解能力,2.编码能力,3.大数据处理能力,4.性能优化和解决问题的能力。
G同学对E同学的话表示认同,并且补充到:作为程序员,专业的技能如:数据结构、算法、底层能力也是不可或缺的。
H同学觉得最重要的能力大家都说的差不多了,很多观点他非常认同,没什么好补充的,于是说到:我最佩服的还是问题解决思路特别清晰的能力。
阿神老师看大家讨论的火热,刚才一直也没说话,怕打扰到大家,看大家说的差不多了,自己也憋不住了,说到:我个人觉得最重要的能力,还是线上排查问题,定位问题的能力。
H同学立马表示同意:对。
I同学调皮的说到:哪有你们说的那么麻烦,我觉得最重要的能力只有一个,那就是能把老板哄高兴了,这就足够了。
J同学附和着说:对,拍马屁能力才是最重要的。
众人说:对,就是这条。
K同学看这个话题还有余温,于是加了把柴火,说到:我个人感觉是业务理解能力,因为所有的代码都是为了业务服务的,业务理解的好坏在同样编码能力下 ,结果肯定区别很大。
阿神老师看大家讨论的差不多了,再不抛出真正想说的,一会茶凉了,又的自己一个人尬聊了,于是赶紧说:之所以和大家讨论这个问题,和我最近的工作有关,我们公司项目最近线上mq出现了个问题,排查了3周,今天终于解决了,整个过程就好像破案一样。
B同学心想,我就说阿神老师抛出这个问题肯定有目的,于是表现出一副早已料到的口吻说到:老师怎么破得案啊?
阿神老师说:我们从mq源码debug,压测,和阿里云沟通,到卖点日志分析,以及jvm调优,jvm底层源码分析,涉及源码分析,沟通协调,网络层,存储层,jvm底层,系统调度,内核异常分析等等等等,真的是从最表面的问题挖到了最深层,才定位到真正问题。
有些问题一开始就错了,或者说根本没考虑,所以一直走的都是错误的方向,直到看到jvm的c++代码,Linux的调度情况,才找到了问题。(亮瞎我的狗眼~)
这件事告诉我们一个道理,任何事情,在最绝望的时候,才是最接近答案的时候,虽然这种经历我有过很多次,但是每一次我都会特别感慨。这也就是我今天通过这次讨论想告诉大家的最重要的道理。
B同学表示认同+钦佩的说到:老师,这种问题的解决,对自身实力的提高会很大吧。
阿神老师说:当然了,每一次都是宝贵的财富。所以面试去大公司,往往需要你的是解决问题,追究本源的后端开发工程师,不然你和我谈什么源码啊,知识点啊,都low爆了。
阿神老师感慨的说:所以,那个阿里的多隆,之所以称之为神,就在这里,和别人的差距是巨大的。
B同学边点头边说:阿里的多隆据说解决的问题有些直接看到汇编,阿里自己的人都说他解决的问题是匪夷所思的。
阿神老师也十分认同B同学这个说法:对啊,很正常,因为一开始就错了,所以要从一条错的路上去解决问题,必定是难度巨大的,我们也一样,跟到了jvm,质疑了jvm,关闭了jvm的一些printthreads线程,禁止了外部程序调用了jvm,比如instrumentation,jstack之类的,才找到了问题。
看大家也不怎么再发言了,阿神老师心想:”果然今天话题又引发了大家的沉思,为师很是自豪啊~~“(但也可能是又进入了尬聊模式 ~)。
于是赶快说:今天这个话题我们就讨论到这,只是给大家抛砖引玉,让大家明白线上排查问题,定位问题的能力的重要性,具体这方面的内容,咱们课程最后几周大目老师讲解性能调优的时候,大家会跟大目老师学到很多解决问题的思路的。大家加油,向着自己的目标继续前进!!
·······················
更多精彩内容,欢迎关注:《Java架构师成长直通车》