Java學到什麼程度才能叫精通?

手留餘香·發表於2019-02-23

Java學到什麼程度才能叫精通?
如果要談精通Java ,有一個特別直接的方法,那就是考察工程師是否具有:

“快速構建開發框架的能力”。

例如下面這個系統:

Java學到什麼程度才能叫精通?

這是一個典型的web應用(基於Java)。雖然就整個系統搭建來說,是架構師的責任。但其中的深色部分,是一個典型Java應用框架。以此為標準,框架的搭建能力,可以用來考察軟體工程師是否真的精通Java。

在一些新專案中,專案經理和架構師會根據業務需求從頂層設計架構。待架構穩定後,會進入實際的編碼階段。但在更大規模的業務編碼前,首先要搭建好系統的基本框架,而這個框架一般會交給團隊中最資深的工程師(當然精通Java)去做。

具體框架的搭建時間一定不能太長,因為整個開發團隊都在等待。

同時,因為這個框架是長期開發的基礎,所以質量一定要有保障。

搭建框架的技術指標,一句話:又快又好

搭建這樣的框架,以我的經驗,團隊能接受的時間一般是2周,最多不能超過3周。

這個框架如果由一個初級工程師來搭建,因為缺少長期的積累,必然需要大量的時間。但除了時間,更糟糕的是質量。

因為一個好的框架絕不是靠腦子憑空想出來的,更應該實踐磨練出來的。而初級工程師因為缺少實踐錘鍊,踩過的坑不多,吃過的虧少。縱然理論再豐富,天資再聰穎,也無法在沙地上憑空打出紮實的地基。

而且,實踐中,即使有很多工程師有豐富的實踐經驗,但也不意味隨著時間推進,老工程師就天然具備搭建高質量框架的能力。因為實踐背後,更需要深刻的洞察力,和筆耕不輟的總結。

現實中,一個大型的專案,程式碼量必然是巨大的。即使是當初設計再精細,但隨著開發的不斷推進,腐敗的引入是無法避免的,其中一個顯著特徵就是模組之間的耦合不斷增加。

用一個比喻來形容,隨著時間發展,整個軟體系統就像人體一樣,血肉筋骨都粘合在了一塊。對軟體工程師來說,要從這樣的系統中提取出凝練的框架,就像對一個高水平的外科醫生要求的那樣。在理論上要保持絕對的精通,就像醫生對解刨學的掌握。同時還有有極強的編碼能力,就像醫生握手術刀的靈巧雙手一樣。用一句話來形容一流的Java工程師(醫生也是這樣),那就是:“鷹眼、獅心,女人手”

但是,軟體工程師和醫生還有一點不同,那就是對速度的追求。因為搭建框架的工作是整個團隊開發工作的前置階段。

而要提高框架搭建的速度,除了日常多思考,多總結,更要做到“未雨綢繆”,提前佈局。

以我為例,日常的開發中,對每個經手的大型專案。除了通過不斷的重構,來保持整個框架的清晰外,我還會嘗試把每個系統中的框架單獨剝離出來。這樣的做法,除了避免框架被汙染的同時,也不斷豐富了屬於我個人的“架構模式”庫。

這樣的做法,一則在面臨新專案時,極大的提高了專案的推進速度。另一方面,也極大的提高了個人的技術自信度,以及職業安全感。

與此同時,現實中,我也看到有很多老師,在面對新人如何精通Java的疑惑時。總是二話不說就丟擲冗長的“Java技術路線圖”。對這種做法,我個人是持懷疑態度的。

新人如果按照這種觀點,按圖索驥的去逐項攻克。且不說這些知識點有多少是過時的,沒用的。就算這些知識點都線上,在有限的時間裡,新人面臨入行壓力。這樣學習方法,可不是“30天Java從入門到精通”,更是“30天Java從入門到放棄”。

而更加現實的態度是讓新人明白,這些知識點當然有用,但要做到精通,單純通過學習是遠遠不夠的。正確的方法是快速瞭解,重點突出,把寶貴的精力投入到重點和難點上(例如Spring核心原理)。

然後迅速進入實踐(包括工作和自我練習)階段。在實踐中,通過有效的反饋、深入的思考、不斷的總結,最終才能從一名初級Java程式設計師邁入精通行列。

針對Java程式設計師,我這邊給大家整理了一些資料,包括不限於Kafka、Mysql、Tomcat、Docker、Spring、MyBatis、Nginx、Netty、Dubbo、Redis、Netty、Spring cloud、分散式、高併發、效能調優、微服務等架構技術;希望能幫助到大家,也節省大家在網上搜尋資料的時間來學習,也可以分享動態給身邊好友一起學習!

資料領取方式:加入粉絲群963944895,私信管理員即可

Java學到什麼程度才能叫精通?

相關文章