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


若是要談精通Java ,有一個特別直接的方法,那就是考察工程師是否具備:程序員

「快速構建開發框架的能力」。web

例以下面這個系統:安全

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

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

具體框架的搭建時間必定不能太長,由於整個開發團隊都在等待。佈局

同時,由於這個框架是長期開發的基礎,因此質量必定要有保障。學習

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

搭建這樣的框架,以個人經驗,團隊能接受的時間通常是2周,最多不能超過3周。spa

這個框架若是由一個初級工程師來搭建,由於缺乏長期的積累,必然須要大量的時間。但除了時間,更糟糕的是質量。設計

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

並且,實踐中,即便有不少工程師有豐富的實踐經驗,但也不意味隨着時間推動,老工程師就自然具有搭建高質量框架的能力。由於實踐背後,更須要深入的洞察力,和筆耕不輟的總結。

現實中,一個大型的項目,代碼量必然是巨大的。即便是當初設計再精細,但隨着開發的不斷推動,腐敗的引入是沒法避免的,其中一個顯著特徵就是模塊之間的耦合不斷增長。

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

可是,軟件工程師和醫生還有一點不一樣,那就是對速度的追求。由於搭建框架的工做是整個團隊開發工做的前置階段。

而要提升框架搭建的速度,除了平常多思考,多總結,更要作到「未雨綢繆」,提早佈局。

以我爲例,平常的開發中,對每一個經手的大型項目。除了經過不斷的重構,來保持整個框架的清晰外,我還會嘗試把每一個系統中的框架單獨剝離出來。這樣的作法,除了避免框架被污染的同時,也不斷豐富了屬於我我的的「架構模式」庫。

這樣的作法,一則在面臨新項目時,極大的提升了項目的推動速度。另外一方面,也極大的提升了我的的技術自信度,以及職業安全感。

與此同時,現實中,我也看到有不少老師,在面對新人如何精通Java的疑惑時。老是二話不說就拋出冗長的「Java技術路線圖」。對這種作法,我我的是持懷疑態度的。

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

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

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

相關文章
相關標籤/搜索