Java 开发除了编程技能,还需具备哪些能力?

2024-07-21
来源:网络整理

对于一个Java开发来说,编程能力无疑是重要的。

不过,除了基本的编程和开发能力之外,其他能力也是体现一个程序员能力的非常重要的因素。

比如问题排查能力、在线运维能力、项目管理能力、协调沟通能力等。

本文就来简单介绍一下,作为一名合格的Java开发人员,除了自身的技术成长外,还有哪些方面是可以提升的。

班级发展技巧

第一类不是纯粹的技能,但也和开发相关,我称之为开发类技能。

系统

很多人的开发机器通常都是图形化开发界面。但这并不意味着你不需要基本技能。

因为你开发的应用可能会部署在一台机器上,而经常要和这台线上的服务器打交道,所以系统的安装、开发环境的搭建、常用命令以及在环境中的项目部署、启动、调试等都是必备的技能。

否则,一旦网上出现问题,你将束手无策。

单元测试

我在《单元测试的重要性》中说过,单元测试非常重要,好的单元测试可以帮助我们节省很多开发时间。单元测试是保证更好的持续集成和持续交付软件的基本前提。

单元测试也涉及很多技术,比如使用Mock进行单元测试,使用内存数据库进行单元测试等等。

开发人员应该养成编写单元测试的习惯,并掌握基本的单元测试编写技巧,这样才能尽早发现问题。

版本管理

我相信基本上所有公司代码都会通过版本管理工具进行托管,无论是Git还是SVN。

而且现在很多技术都是开源的、共同共建的,使用版本管理工具也是Java开发必备的基本技能。

版本管理涉及到的知识点比较多,比如什么时候提交,提交的时候怎么写,代码冲突怎么解决等等,都需要熟练掌握。

构建工具

和版本管理一样,企业级开发的依赖管理也不再是原来的Jar包的导入导出,而是依靠or等工具。

构建工具的使用同样重要,一个合格的开发人员必须知道如何检查依赖冲突,如何进行依赖仲裁等。

代码调试

有人开玩笑说,程序员一半的时间都在写bug,另一半的时间都在写代码。这句话听起来很让人心痛,但也说明了代码的重要性。

虽然说程序员有一半的时间都在写 Bug 有点过分,但任何程序员都不可能一气呵成地写完代码,项目越大,可能出现的 Bug 就越多,离线开发是发现问题、解决问题最有效的手段。

代码调试其实很简单,只要设置端点,然后一步一步跟着程序运行,就能看到结果。只要学会使用IDE提供的工具,就可以参考“

故障排除和解决方案

当进行故障排除时,这种能力非常非常重要。

当出现问题的时候,就是考验程序员能力的时候了,这是最能区分程序员水平的技能,一个问题往往可能涉及到很多方面的知识。

阿里里面有一个大神级的人物,绰号多龙,淘宝早期,他基本上什么问题都能解决,被人称为大神,就是因为他的排错能力和解决问题的能力。如果你能在两天之内解决一个团队两周都没解决的问题,那你也会被人称为大神。

很多时候,解决问题并不难,难的是定位问题所在。这涉及到很多知识,知识储备很重要。但如果知识储备不够,至少可以从以下几个方面提升自己的能力。

1. 查看日志

2.分析Java堆栈信息

3.查看集群监控指标

非开发技能

还有一类技能可能与开发无关,我称之为非开发技能。这些技能往往决定了开发人员能达到的高度。

目标导向

我把目标定向称为一种能力,是一个人应该具备的基本能力,而且是可以训练和培养的。

目标导向的人在做事情之前会先明确自己的目标,然后寻找实现目标的方法,最后利用一切可以利用的资源,通过各种方法来实现目标。

有目标导向的人有明确的目标。

目标明确的人,做事就不会轻易动摇和放弃,为了目标,会克服困难,坚持到底。

目标明确的人在做事时,会思考并尝试各种方法来实现目标。

有明确目标的人在做事时,会发现、创造、借用一切可以实现目标的资源。

坚持给自己定目标,做一个目标导向的程序员。如果你坚持把目标导向理解为KPI导向,我也不拦着你。最主要的是有一个目标,并为之努力,我觉得就行。

时间管理

时间管理对每个人来说都很重要,对于程序员来说尤其重要,因为我们没有太多的可支配时间。

如何合理管理时间,是一个很深奥的课题。有些人每天加班加点,甚至每天工作996小时,但最后还是得不到好结果。这很大程度上就是因为他们的时间管理不好,大部分时间都花在了“忙碌”上。

小程序开发企业需要注意哪些事情_开发注意事项_开发流程为

很多时候,与成绩相比,努力会显得有些暗淡。

一个程序员一天要做的事情很多,工作上可能要好几次需求评审、设计评审、交互评审、TC评审等,还要排查问题、写代码,有时候还要兼任产品、运营,甚至客服的角色,生活上也要陪家人,充实自己,锻炼身体等等,如何安排好自己的时间很重要。

关于时间管理,我有一个建议,就是把手头的事情安排好,一次只做一件事。

快速学习

在这个技术飞速发展的时代,每天都有新技术推出,一个优秀的开发人员需要不断学习,才能保证自己永远不会被淘汰。

学习无疑需要花费大量的时间,因此对于时间有限的程序员来说,快速学习的能力也是至关重要的。

英语能力

首先我们日常开发的代码都是英文的,很多技术都是外国人发明的,也就是说很多新发布的技术文档都是英文的。

以目前最火爆的区块链为例,不管中本聪是不是日本人,他发布的区块链白皮书也是英文的,英文水平好的人可以立刻学到新知识,而英文水平差的人可能只能看到二手翻译的资料。

一个英语好的技术人员可以通过翻译书籍赚很多钱,但是一个英语不好的程序员却很难命名变量。

科学上网

我觉得这个对于开发者来说很重要,就像上面说的英语能力一样,很多手机号交易平台的信息都是在国外的网站上发布的。

不管是维基百科,这些都需要科学上网。而且很多国外网站,比如,也可以通过科学上网更快的访问。

项目管理

每个程序员将​​来都会成为 PM,无论他们负责的是大项目还是小项目。他们都需要良好的项目管理技能。

你要懂得如何评估风险,如何评估成本,如何确保项目按时上线,如何管理项目团队,要学的东西还有很多。

任何一个点把握不好,都可能导致项目风险,甚至项目失败。

在项目管理方面,如果项目按时发布,你可能不会获得任何荣誉,但如果项目失败了,你就会感到愧疚。

一个不懂项目管理的程序员最多只能是一个高级程序员,不可能晋升到专家级以上。

协调与沟通

在一个项目中,除了项目经理的角色之外,开发人员并不是独立的,经常需要跨团队、跨部门,甚至跨公司进行协作。

在项目中,你和其他参与的同学所扮演的角色是相同的,你们之间的关系也算是平级的,所以如何横向管理就显得很重要。

为什么很多人解决问题很快,而有些人却要走很多弯路呢?因为有些人懂得协调沟通的技巧。说白了,他们出去办事,有时候只要“扫一扫脸”就能解决问题。所以,他们之所以能“扫一扫脸”,是因为他们有很强的协调沟通能力。

理解

如果没有很好的理解能力,就无法很好的理解需求,如果不能很好的理解需求,可能会浪费很多时间,很多时候PD提供的需求文档并不全都是合理的,这种情况下,如果开发人员的理解能力更加差,在需求评审阶段无法正确的理解需求,那么项目的结果可想而知。

如果你的理解能力不好,那么你就无法快速学习新知识,而且要比别人花费更多的时间。即使是学习 Java 9,有些人可以很快理解模块化的原理,而有些人却完全搞不懂。这就是理解能力的差异。

表达能力

以上这些能力在一定程度上都依赖于自我表达能力,如果自我表达能力不好,协调沟通肯定会有问题,更别说项目管理了。

除了日常工作需要有表达和沟通能力外,很多公司还会要求你写日报、周报或月报。如果你表达能力好,可以很清楚的写出自己做了什么,做出了什么贡献,领导看了心里舒服,工作成果自然也不会差。

另外,很多公司的晋升制度是防御性的,所以能否清晰地表达自己过去一段时间的工作成绩和收获,很大程度上决定了你的晋升结果。

有时候,开发者也要参与演讲,无论是团队内部,公司内部,还是行业会议,表达能力很重要,很多时候别人认识一个人,首先就是看他的表达能力。

新木桶理论

说了这么多,好像程序员是无所不能的。但是我想说,程序员应该是无所不能的,因为我们要改变世界。

话虽如此,如果你有能力,最好把上述所有能力都培养起来。但是,如果你在某方面不太擅长,那么你也应该清楚地认识到自己缺乏什么。

最可怕的就是不知道自己不知道什么,这篇文章有个小目的,就是先让大家知道自己不知道什么。

我们都知道木桶定律——木桶里的水量取决于最短的木板。

传统的木桶定律是将木桶放在平面上测量,但如果将木桶放在倾斜的平面上,则木桶可容纳的水量取决于最长木板的长度。

当然,这要求长度必须是相对的,并且长木块周围要有相应长度的木块来辅助。

也就是说,当某一块体比其他块体短一段时,不但要选择合适的坡度,更重要的是要合理地排列其他块体,让它们发挥应有的作用,最大限度地发挥现有块体的作用。

以上我列出的技能是程序员的木板,有短板没关系,只要找到自己的长板,并在其周围安排相应长度的其他木板就行。

鸡汤时间

以上所说的技能,之所以叫技能,是因为这些技能是可以训练的,包括理解的能力,表达的能力,学习的能力,这些都是可以训练的。

所以,开发人员,不要只专注于编码。抬头看看,弥补你桶里的木板的长度。这将帮助你走得更远。

你的技术水平决定了你发展的下限,而你的软技能决定了你发展的上限。

来吧,我们互相鼓励吧。

分享