如果要谈精通Java ,有一个特别直接的方法,那就是考察工程师是否具有:
“快速构建开发框架的能力”。
例如下面这个系统:
这是一个典型的web应用(基于Java)。虽然就整个系统搭建来说,是架构师的责任。但其中的深色部分,是一个典型Java应用框架。以此为标准,框架的搭建能力,可以用来考察软件工程师是否真的精通Java。
在一些新项目中,项目经理和架构师会根据业务需求从顶层设计架构。待架构稳定后,会进入实际的编码阶段。但在更大规模的业务编码前,首先要搭建好系统的基本框架,而这个框架一般会交给团队中最资深的工程师(当然精通Java)去做。
具体框架的搭建时间一定不能太长,因为整个开发团队都在等待。
同时,因为这个框架是长期开发的基础,所以质量一定要有保障。
搭建框架的技术指标,一句话:又快又好。
搭建这样的框架,以我的经验,团队能接受的时间一般是2周,最多不能超过3周。
这个框架如果由一个初级工程师来搭建,因为缺少长期的积累,必然需要大量的时间。但除了时间,更糟糕的是质量。
因为一个好的框架绝不是靠脑子凭空想出来的,更应该实践磨练出来的。而初级工程师因为缺少实践锤炼,踩过的坑不多,吃过的亏少。纵然理论再丰富,天资再聪颖,也无法在沙地上凭空打出扎实的地基。
而且,实践中,即使有很多工程师有丰富的实践经验,但也不意味随着时间推进,老工程师就天然具备搭建高质量框架的能力。因为实践背后,更需要深刻的洞察力,和笔耕不辍的总结。
现实中,一个大型的项目,代码量必然是巨大的。即使是当初设计再精细,但随着开发的不断推进,腐败的引入是无法避免的,其中一个显著特征就是模块之间的耦合不断增加。
用一个比喻来形容,随着时间发展,整个软件系统就像人体一样,血肉筋骨都粘合在了一块。对软件工程师来说,要从这样的系统中提取出凝练的框架,就像对一个高水平的外科医生要求的那样。在理论上要保持绝对的精通,就像医生对解刨学的掌握。同时还有有极强的编码能力,就像医生握手术刀的灵巧双手一样。用一句话来形容一流的Java工程师(医生也是这样),那就是:“鹰眼、狮心,女人手”。
但是,软件工程师和医生还有一点不同,那就是对速度的追求。因为搭建框架的工作是整个团队开发工作的前置阶段。
而要提高框架搭建的速度,除了日常多思考,多总结,更要做到“未雨绸缪”,提前布局。
以我为例,日常的开发中,对每个经手的大型项目。除了通过不断的重构,来保持整个框架的清晰外,我还会尝试把每个系统中的框架单独剥离出来。这样的做法,除了避免框架被污染的同时,也不断丰富了属于我个人的“架构模式”库。
这样的做法,一则在面临新项目时,极大的提高了项目的推进速度。另一方面,也极大的提高了个人的技术自信度,以及职业安全感。
与此同时,现实中,我也看到有很多老师,在面对新人如何精通Java的疑惑时。总是二话不说就抛出冗长的“Java技术路线图”。对这种做法,我个人是持怀疑态度的。
新人如果按照这种观点,按图索骥的去逐项攻克。且不说这些知识点有多少是过时的,没用的。就算这些知识点都在线,在有限的时间里,新人面临入行压力。这样学习方法,可不是“30天Java从入门到精通”,更是“30天Java从入门到放弃”。
而更加现实的态度是让新人明白,这些知识点当然有用,但要做到精通,单纯通过学习是远远不够的。正确的方法是快速了解,重点突出,把宝贵的精力投入到重点和难点上(例如Spring核心原理)。
然后迅速进入实践(包括工作和自我练习)阶段。在实践中,通过有效的反馈、深入的思考、不断的总结,最终才能从一名初级Java程序员迈入精通行列。
原文地址:https://blog.51cto.com/13754022/2369380