美文网首页Java计算机知识集锦
Java学到什么程度才能叫精通?

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

作者: 笃学私教 | 来源:发表于2020-08-07 14:39 被阅读0次

    如果要谈精通Java ,有一个特别直接的方法,那就是考察工程师是否具有:

    “快速构建开发框架的能力”。

    例如下面这个系统:

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

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

    具体框架的搭建时间一定不能太长,因为整个开发团队都在等待。

    同时,因为这个框架是长期开发的基础,所以质量一定要有保障。

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

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

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

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

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

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

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

    “鹰眼、狮心,女人手”。

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

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

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

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

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

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

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

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

    请务必明白:

    学再多的修辞手法,不练习,也写不出好文章。

    看再多的视频,不下水,也学不会游泳。

    对了,我现在是在职Java开发,如果你现在也在学习Java,在入门学习Java的过程当中缺乏基础入门的视频教程,你可以申请加入我的Java学习交流群:956253955。里面有最新的Java基础精讲视频教程,群文件里面还有我做Java技术这段时间整理的一些Java学习手册,面试题,开发工具,PDF文档书籍教程,需要的话都可以自行来前来获取下载。

    相关文章

      网友评论

        本文标题:Java学到什么程度才能叫精通?

        本文链接:https://www.haomeiwen.com/subject/datfdktx.html