龙空技术网

Java学到什么程度才能叫精通?到底该达到什么样的层面

Java架构Monster 352

前言:

此刻朋友们对“oracle位移”大概比较注意,各位老铁们都想要学习一些“oracle位移”的相关内容。那么小编也在网上搜集了一些对于“oracle位移””的相关内容,希望同学们能喜欢,看官们一起来了解一下吧!

前话:

虽然Java已经诞生了20多年,而且面临着各种老牌编程语言和新兴编程语言强有力的冲击。千锋小编认为,时至今日Java依旧是所有编程语言中应用最广泛、流行度最高的编程语言。

粗略统计,目前全球有超过数十亿的设备正在运行着Java,很多服务器程序都是用Java编写,用以处理每天超过数以千万的数据。无论是手机软件、手机Java游戏还是电脑软件,包括每一次购物到每一笔支付成功,都离不开Java,越来越多的企业也正采用Java语言开发网站,而在所有程序员中,Java开发工程师就占据20%的比例。广泛的企业需求,庞大的工程师基数,不可撼动的语言地位……足以证明Java语言的优越性和不可替代性。

国内排名靠前网站多半都已Java作为主要开发语言,腾讯、百度、京东、新浪等大厂也基本上都用Java作为语言架构。随着Java工程师群体日渐壮大,企业对于开发人员的综合技术素质要求也越来越高。那么回归主题,Java掌握到什么程度才敢在简历上写“精通”?

在我认识的技术中很少有人敢说自己精通的,所谓越厉害的人越谦卑大概就是这个道理吧~倒是很多招聘信息上写着精通这个,精通那个。比如说精通Java基础,如果能抗住面试官就某一个话题连问三连击的话基本上就可以侥幸过关,比如我们常用的map?底层数据结构是什么?jdk7与jdk8的区别?为什么说是非线程安全的?再问下去可能就是为什么源码中用位移什么的了。总之一句话,一定要低调,低调啊~

最重要的是一定要认清自己的定位,如果你是刚毕业初涉职场,诸如“精通”“擅长”等大牛姿态的字眼一定要慎用,甚至索性禁用(谦逊是福)。记得之前一个朋友聊天的时候跟我说过:他大学毕业拿着简历去面试,简历上面都会有一行“精通Java基础,精通某某某”,当时不觉得什么,毕竟都是从网上求职简历里借鉴过来的嘛。当工作五年之后他面试别人的时候,看到这行字的时候,仍不会说对方什么,只是莞尔一笑,仿佛看到了曾经的自己。

我所理解的精通Java首先一定要搞得定基础,否则一切都是空谈。包括一些多线程啊、反射、JDBC、各种变量、类、MVC模式这些都是最最基本的。其次,数据库得精通吧,最常用的Mysql、Oracle。安装使用、日常的SQL增删改查语句等。前端的话html、jsp、JS、JQuery、CSS、Ajax等,这些都是最基本的。补充一句,虽然现在很多公司都开始前后端分离,后端Java开发人员都不再写前台页面了,都只关注Java了,但是最好还是要会一些这方面的东西。

工作几年,能自己独立做项目了,会数据库里的存储过程、触发器,会Linux写脚本,会自己搭建项目框架了。开始算作一个Java中级开发工程师了。这也只是说熟悉Java基础了。

随着经验和阅历的增长,你就会发现那些工作很多年的大牛,他们对Java内核特别了解,所以要想精通Java,在这条路上死磕到底,无疑得对Java的源代码了解熟知。研究开源、研究源代码、JVM等……这些都是通向“Java精通道路”的必修课。

正文:

Java学到什么程度才能叫精通?

如果要谈精通Java ,有一个特别直接的方法,那就是考察工程师是否具有:“快速构建开发框架的能力”。

例如下面这个系统:

这是一个典型的web应用(基于Java)。虽然就整个系统搭建来说,是架构师的责任。但其中的深色部分,是一个典型Java应用框架。以此为标准,框架的搭建能力,可以用来考察软件工程师是否真的精通Java。

在一些新项目中,项目经理和架构师会根据业务需求从顶层设计架构。待架构稳定后,会进入实际的编码阶段。但在更大规模的业务编码前,首先要搭建好系统的基本框架,而这个框架一般会交给团队中最资深的工程师(当然精通Java)去做。

具体框架的搭建时间一定不能太长,因为整个开发团队都在等待。同时,因为这个框架是长期开发的基础,所以质量一定要有保障。

搭建框架的技术指标,一句话:又快又好。

搭建这样的框架,以我的经验,团队能接受的时间一般是2周,最多不能超过3周。

这个框架如果由一个初级工程师来搭建,因为缺少长期的积累,必然需要大量的时间。但除了时间,更糟糕的是质量。

因为一个好的框架绝不是靠脑子凭空想出来的,更应该实践磨练出来的。而初级工程师因为缺少实践锤炼,踩过的坑不多,吃过的亏少。纵然理论再丰富,天资再聪颖,也无法在沙地上凭空打出扎实的地基。

而且,实践中,即使有很多工程师有丰富的实践经验,但也不意味随着时间推进,老工程师就天然具备搭建高质量框架的能力。因为实践背后,更需要深刻的洞察力,和笔耕不辍的总结。

现实中,一个大型的项目,代码量必然是巨大的。即使是当初设计再精细,但随着开发的不断推进,腐败的引入是无法避免的,其中一个显著特征就是模块之间的耦合不断增加。

用一个比喻来形容,随着时间发展,整个软件系统就像人体一样,血肉筋骨都粘合在了一块。对软件工程师来说,要从这样的系统中提取出凝练的框架,就像对一个高水平的外科医生要求的那样。在理论上要保持绝对的精通,就像医生对解刨学的掌握。同时还有有极强的编码能力,就像医生握手术刀的灵巧双手一样。用一句话来形容一流的Java工程师(医生也是这样),那就是:“鹰眼、狮心,女人手”。

但是,软件工程师和医生还有一点不同,那就是对速度的追求。因为搭建框架的工作是整个团队开发工作的前置阶段。

而要提高框架搭建的速度,除了日常多思考,多总结,更要做到“未雨绸缪”,提前布局。

以我为例,日常的开发中,对每个经手的大型项目。除了通过不断的重构,来保持整个框架的清晰外,我还会尝试把每个系统中的框架单独剥离出来。这样的做法,除了避免框架被污染的同时,也不断丰富了属于我个人的“架构模式”库。

这样的做法,一则在面临新项目时,极大的提高了项目的推进速度。另一方面,也极大的提高了个人的技术自信度,以及职业安全感。

与此同时,现实中,我也看到有很多老师,在面对新人如何精通Java的疑惑时。总是二话不说就抛出冗长的“Java技术路线图”。对这种做法,我个人是持怀疑态度的。

新人如果按照这种观点,按图索骥的去逐项攻克。且不说这些知识点有多少是过时的,没用的。就算这些知识点都在线,在有限的时间里,新人面临入行压力。这样学习方法,可不是“30天Java从入门到精通”,更是“30天Java从入门到放弃”。

而更加现实的态度是让新人明白,这些知识点当然有用,但要做到精通,单纯通过学习是远远不够的。正确的方法是快速了解,重点突出,把宝贵的精力投入到重点和难点上(例如Spring核心原理)。

然后迅速进入实践(包括工作和自我练习)阶段。在实践中,通过有效的反馈、深入的思考、不断的总结,最终才能从一名初级Java程序员迈入精通行列。

标签: #oracle位移