网站首页 网站导航 课程中心
常见问题
您所在的位置:Java培训 > 常见问题 > 成为优秀的Java程序员,这些能力你具备了吗?

成为优秀的Java程序员,这些能力你具备了吗?

来源:中软卓越 日期:2017-05-26 17:54 人气:
  成为优秀的Java程序员,这些能力你具备了吗?
       前几天在知乎上面看到有人提问说,我现在是个刚毕业的小本,野鸡学校,而且不是正统的计算机专业,现在踏入了程序员这一行,到底什么样的技能才是才是程序员的核心竞争力,换言之,我在工作的前几年,需要累积什么样的技能,之后才能更好的和老板要工资,提要求。
  
  我想说的是工资不是老板对你过去贡献的回报而是对你未来贡献的预期。现任老板不可能会给出让你满意的工资的,下一任老板才会。你要做的就是不断提升自己的能力和价值。等你的价值被老板发现。那还怕提不了要求涨不了工资吗?
  
  学习能力,作为一个Java程序员,不怕打击你,这个行业发展太快,如果你3年不学新技术就可能落伍了。所以学习能力对一个程序员来说是非常重要的。如果你自学能力足够强,出来一个新技术你就学一个新技术。那肯定发展会越来越好的,如果自学能力不太强的话,那就需要有一群程序员朋友一起交流学习了,因为他们能帮你解决你不能解决的,才能让你更好的学习。
  
  动手能力,我个人感觉动手能力跟学习能力是挂钩的,如果你感觉自己的学习能力不太厉害,那就一定要想办法提升自己的动手能力。都是看书看资料,当别人还在纠结看什么书,还在纠结书里的字句是什么意思的时候,你已经开始着手做了,问题和效果也会比别人先看到,或许就能比别人先一步学会了。
  
  表达能力,能在大庭广众下,把自己的想法逻辑清晰流畅地讲出来,让人听懂。毕竟你要让别人对你的工作认可。就要想让别人对你写的项目认可,所以表达能力也是需要一点的
  
  做程序员兴趣固然重要,耐心和毅力对Java程序员也是不可缺少的。写自己喜欢的代码那是相当愉快的事情,但是程序开发中无论如何还有大量乏味无趣的事情,又不是只写代码就能做个好Java程序员的,要能坚持,要有毅力,要咬牙把这些做完。
  
  那么技术呢?技术其实并不重要,有了以上几种能力,市场上需要什么技术,你很快就能掌握了
  
  很多情况下你有什么能力完全是你的态度决定的,很多时候你没有能力完全是你的态度问题。
  
  第一个态度就是工作中的态度,就比如服务器偶尔出501错误,也许比例不高,很多程序员,假装看不见,不在乎,或者归咎于人品问题。这就是态度问题。再往后,负载高了或者其他什么原因,突然频繁出现501错误,不去追寻深入的原因,而是找各种借口,什么IDC服务商不好,服务器品牌不好,操作系统不好,数据库不好,CDN不好,网络状况不好,webserver不好,甚至,直接对Boss说我们被DDOS啦!(遇到过,帮他Boss找过多个安全专家会诊,最后发现根本不是DDOS,是程序员太烂。)
  
  这就是你的态度不好,结果触目惊心,如果能对问题有敏感性,能知道对任何小的,轻微的问题有足够的敏锐度,你就有了一个快速成长的基础。对问题的敏锐度是非常重要的。很多性能或程序逻辑上非致命的bug,在不够敏锐的时候是发现不了的,但是一旦进入特殊场景就会骤然爆发,你多一点敏锐度,就会减少这种危机的风险。
  
  第二个态度是解决问题的态度,有人对自己的解决方案信心满满,认为万无一失,但有的人就会多留一条后路;就好比你说我服务器要不要做安全加固,肯定要做对不对,要做到尽可能严谨和周全,但是你数据库保存密码的时候是不是还要加密?而且要随机salt,不就是防止万一依然有漏洞被人拿库怎么办么。程序也一样,以前写的一些服务端守护进程,有bug,会莫名其妙的终止,这个bug当然要定位,要修复,但是同时,写一个cron检查这个守护进程状态,一旦遇到终止给予自动恢复,这就是第二手准备,即便你多么不希望他执行,这个准备还是要做的。对问题做两手甚至三手准备,也是优秀程序员,架构师的关键素质。
  
  第三个态度是基于沟通与理解的态度,产品或运营提了一个不靠谱需求,一句话打回去当然很爽很威风,但是有没有仔细沟通分析过,这个需求基于怎样的实际诉求,这个实际诉求有没有更合理的实现途径,一句话“这个没法做,这个实现成本太高”,不是正确的沟通态度,而且,最优秀的产品,往往是实现了那些原本人们认为无法实现的诉求。
  
  这样的态度,才有了一个持续进步的基础
  
  关于归纳总结。你要想提升自己的价值,就要先提升自己的能力,而你的态度直接影响了你的能力
  
  优秀的程序员和平庸的程序员,如果只看敲打代码的速度,我觉得是分不出来的,也许每人都可以一天写很多行代码,但是遇到问题后,平庸的程序员的解决效率,和优秀程序员相比就会有天壤之别。所谓解决效率,不外乎对bug的分析、定位,以及思考。
  
  最基本的一条,看执行日志,看各种日志数据库的日志,看各种日志慢查询日志看各种日志,线上出问题瞎猜连日志都不看的大有人在。看日志不仔细不完整的也大有人在,你能去认真研究日志已经超越很多人了。
  
  第二条,模块测试和断点分析,程序员一个坏习惯就是上来就写很大一坨代码然后再执行,不知道一个模块一个模块来写来测试,执行出了问题不知道设置断点,缩小范围逐步分析。断点分析非常简单,将整个代码中插几个中间输出,观察哪个环节出了问题,或者观察每个环节的系统开销,对调错和性能优化都非常重要,高手们大概认为这是ABC的东西,但是就这玩意我看到的大部分程序员都没有这个习惯。
  
  第三条,错误信息的理解和搜索,搜索引擎上有各种丰富的技术资料和技术问答,你所遇到的错误信息和错误提示,通常都能在网上搜索到,当然,搜索到后要结合你的场景认真思考,并理解透彻,而不是照猫画虎的去处理,否则可能这次运气好就蒙对了,下次运气不好又不知道怎么回事了。
  
  第四条,不断总结归纳,对一个问题,一类问题,以及不同类型的问题,善于归纳整理,不断反思自己的问题,即便是不出bug的代码,你经过一段时间去回头看,也有很多思考不正确不合理的地方,有很多优化点,如果你觉得自己的代码一向牛逼,毫无破绽,那你一定是原地踏步,毫无进展。
  
  中软卓越Java课程主打课程之一,课程内容全部提炼自企业一线岗位实际工作经验和能力标准;课程内容来自于企业岗位需求又高于企业岗位任职标准;不仅满足应聘时工作需求,又着眼于未来职业发展需要。课程体系严密,围绕企业需求,以实战项目导入教学体系;模块课程完整,每个模块对应一类岗位,将所有岗位能力对应到各个模块;课程内容全面,所有课程内容吸纳最新Java知识,全面覆盖了各个知识点,中软卓越用技术改变你的未来,用责任帮你谱写人生!

营业执照 版权所有©Copyright 2008-2017,北京中软国际教育科技股份有限公司, All Rights Reserved. ICP备案号:京ICP备14058756号-2

| | 分类导航 | 关于我们