在这个时代,编程是市场所需要众多技能中的一种。从能够开发一个公司网站到知道如何轻松地修改错误,这些技能在很多方面对于一个职员或者你来说都是非常重要的。然而,保持你现在所在的状态,可能无法使你达到你能够做到的最好状态,阅读下面的文章并且学习作为一个程序员如何去提示自己的技能吧。
步入这个阶段的JAVA程序员,提升已经是很难了,而且这个阶段的学习往往会比较多样化。因为在前3年的过程中,你肯定或多或少接触过一些其它的技术,比如大数据、分布式缓存、分布式消息服务、分布式计算、软负载均衡等等。这些技术,你能精通任何一项,都将是你未来面试时巨大的优势,因此如果你对某一项技术感兴趣的话,这个时候可以深入去研究一下。这项技术不一定是你工作所用到的,但一定是相关的。
而且在研究一门新技术时,切忌朝三暮四。有的同学今天去整整大数据,搞搞Hadoop、hbase一类的东西。过不了一段时间,就觉得没意思,又去研究分布式缓存,比如redis。然后又过不了一段时间,又去研究分布式计算,比如整整Mapreduce或者storm。
结果到最后,搞得自己好像什么都会一样,在简历上大言不惭的写上大数据、分布式缓存、分布式计算都了解,其实任何一个都只是浮于表面。到时候面试官随便一问,就把你给识破了。
步骤:
1.清晰地分析问题。
2.对于如何去解决问题多思考几遍。
3.收集完整的需求。
花时间写下最终的产品需要达到的目标和你的用户群是谁,在这个阶段清晰的思路会为整体省下大量的时间。
作为一个程序员如何去提高你的技能
4.写下充分的实现计划(或模型)。
对一些小的或独立的项目,可能就只需要写一个基本的流程图或者简单的式子。
对于大型的项目,就需要将原来的任务分成几个模块,并且考虑下面几点:
每一个模块必须要执行的任务是什么
在模块间数据是如何传送的
在每一个模块里面数据是如何被使用的
虽然收集并根据需求做计划是很无聊的,并且也没有直接写代码有趣,甚至比花时间改bug都更要无聊。提前花时间去正确地设计你项目的流程和结构,你可能会在你写第一行代码之前找到更多有效率的方法去完成你的目标。
小编个人觉得还是需要时刻提升自己的技术。给大家推荐一个程序员学习交流群:810589193。点击链接加入群聊【Java架构学习交流群】:https://jq.qq.com/?_wv=1027&k=59ZopTn群里有分享的视频,还有思维导图主要分享分布式架构、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战学习架构师视频。
5.写好你的注释。*
如果你认为你的代码需要解释,那就给它一个注释。在每个函数之前应该有1-2行注释来说明它的参数和返回值是什么。注释会告诉你为什么,而不只是结果。记住,在更新自己的代码的同时也应该更新自己的注释。
作为一个程序员如何去提高你的技能
6.用一致的命名习惯为变量命名**。**
它会帮助你保持对每个变量的记录并且知道声明这个变量的目的是什么。这就意味着不会有像 x=a+b*c 这样更多的例子,这会让你的代码更容易去调试和维护。一个受欢迎的标记法是“匈牙利标志法”,它是将变量名和类型混合命名的。例如,对于整型变量,你可以使用intRowCounter,而对于字符串,就可以使用strUserName。不管你的命名习惯是什么,一定要保证它是一致的并且你的变量名是描述性的。
作为一个程序员如何去提高你的技能
7.组织你的代码。
用可视化的结构去标示代码结构。比如说,在一个条件语句或循环语句中使一段代码块缩进排版,并且试着在一个变量名和一个像加减乘除这样的操作符之间放置空格,甚至是等于号(myVariable = 2 + 2)。就像是让代码看起来更优美一样,这也使得我们可以一下就看出程序流程。
作为一个程序员如何去提高你的技能
8.测试所有的一切。
开始的时候在每个模块之中测试,用通常的输入值来测试,然后输入一些可能但是很少见的值,这样就可以测出一些隐藏的bug。测试是有艺术性的,并且你会逐渐建立起实践的能力。写下你的测试用例,包括以下几个方面:
极端的值:0,对于正的数值型值超出期望大小的值,对于文本型值就是空字符串,并且对于一切类型的null。
没有意义的值:甚至连你自己都不相信,你的最终用户会输入什么莫名其妙的值来测试你的软件。
不正确的值:将一个值为0的数作为除数,或者期望一个正数或者计算一个数的平方根时输入一个负数。当一个数不是一个 数值时,输入一个字符串,它就会被转换成一个数值类型的值。
作为一个程序员如何去提高你的技能
9.练习,练习,练习。
编程不是一个停滞的技能,总会有一些新东西需要去学习,也许更重要的是,经常有一些旧东西需要重新学习。
作为一个程序员如何去提高你的技能
10.为改变做好准备。
在一个现实的工作环境中,需求会经常改变。但是,在开始收集需求的时候你越清晰,你在开始撰写实现计划的时候也会越清晰,而不是因为简陋的计划或者误解而让需求的改变起决定性作用。
在开始编程之前,你应该扮演一个积极的角色,通过完善的需求文档和实现计划来提高程序的清晰度。这样就会确保你准备去实现的产品确实是用户所要求的。
用一个演示将项目分解,对于其中的每一块都可以看成一系列的里程碑,这样就可以一次只管理一个过程。那么在任何给定 的时刻你需要考虑的事就变少了,这样你也会能够更清晰地思考、
作为一个程序员如何去提高你的技能
11.为了完成复杂的任务开始的时候应该尽可能地简单。
当需要编写一些困难的程序时,这样就可以帮助构建适当的构造模块并且恰当地去工作。举一个例子,比如说你想在屏幕上创建演变的形状来跟随鼠标的趋势,并且根据鼠标速度改变形状。
开始时通过显示一个阵列并且让它跟随鼠标。首先解决移动轨迹问题。
接下来,让阵列的大小和鼠标的速度相关。独立解决形状和速度问题。
最后,创造你想要的真实形状,并且将这三个模块组合在一起。
当每一个模块都是独立的时,这样就能非常自然地让它进行模块化编程。这对重复性编程十分有用(比如你想在一个新项目中只使用鼠标轨迹模块),并且也能够更容易地调试和维护。
作为一个程序员如何去提高你的技能
一定要记住,作为一个JAVA程序员,平日里所接触的技术可能会很多,但是想要让一门技术成为你的优势,那么一定是你对这门技术的了解强过绝大多数人才行。
因此在这个阶段,你就不能再简单的去学习前3年的内容了,虽然前面的学习如果还不够深入的话依旧要继续,但这个时候你应该更多的考虑建立你的优势,也可以称为差异性。
差异性相信不难理解,就是让你自己变得与众不同。你前面三年的学习足够你成为一名基本合格的Java开发者,但你离成为一名优秀的Java开发者还有很大的距离。
所谓优秀,即能别人所不能。而你前三年所学习的内容,是很多做过几年的Java开发都能够掌握的。那么为了让自己有差异性,你就需要另辟蹊径,找一个方向深入研究下去,以期在将来,你能够成为这个领域的专家,比如分布式计算领域的专家,大数据领域的专家,并发领域的专家等等。
此外,你除了建立你的差异性之外,还要去弥补你基础上的不足,直到现在,都没有提及基础知识。原因是基础是很枯燥无味的,学的太早不仅容易懵逼,而且懵逼的同时还容易产生心理阴影,以至于以后再不想去研究这些基础。但基础又是你深入研究一些领域时所必须掌握的,比如你去研究分布式计算,你不懂算法你玩个毛毛?比如你去做分布式缓存,你对计算机系统的内存不了解,你如何去做缓存?
如果你的基础本来就非常强,那么恭喜你,相信你在之前的工作中已经充分体会到了这些基础对你的帮助。但我相信大部分人的基础都很薄弱,哪怕是科班毕业的人,很多人也不敢说自己当初的基础学的多么强大,比如算法、计算机系统原理、编译原理这些。
但是每个人时间都是有限的,而且这些基础的书籍每一本读下来,没个一年半载的,还真拿不下来,因此还是要有所抉择的。虽然艺多不压身,但问题是艺多是有代价的,是需要你付出时间和精力的,而我个人更赞成在同等代价的情况下获取最大的收获。
对于想要提升自己,对自己未来迷茫的Java工程师们,如需要这些架构路线图,以及我们整理的一些架构师精讲资料,可以加群程序员交流群:810589193获取哦,点击链接加入群聊【Java架构学习交流群】:https://jq.qq.com/?_wv=1027&k=59ZopTn涉及的知识点(Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术)。