什么是Android高級工程師
這個強(qiáng)調(diào)一個概念,快速。
如果一個開發(fā)者,想成為一個高級工程師,去做高級工程師需要做的事,了解一個高級工程師需要的知識,然后一步一步學(xué)習(xí),都弄懂弄會,這樣就是一個高級工程師了,這個過程可以量化,就是學(xué)習(xí)會這些知道就行,如果想繼續(xù)進(jìn)階可能就不是量化的問題了,這里只討論Android高級工程師的問題。那么如何成為一個高級Android工程師,就變得比較清晰了。
學(xué)會基礎(chǔ)知識
Java基礎(chǔ),多線程,泛型,反射,IO,異常處理,集合框架等等都需要吃透。
Android基礎(chǔ),四大組件,Android的是異步調(diào)用,View的 繪制流程,觸摸事件流程,都應(yīng)該吃透
還有很多不一一列舉了,這些是基礎(chǔ)部分。
進(jìn)階學(xué)習(xí)
基礎(chǔ)的東西,也要進(jìn)階,這個是同步的,比如多線程應(yīng)該了解多線程并發(fā)庫等高級用法,什么類加載器,垃圾回收等等都應(yīng)該有個自己的了解,還有第三方庫,至少都會使用大部分庫吧,什么Gson,F(xiàn)astJson,EventBus,Volley,Okhttp ,Glide,F(xiàn)resco,ButterKnife 。等等都應(yīng)該有會熟練使用把。這寫也只是中級程序員就應(yīng)該掌握了的內(nèi)容。
高級程序員應(yīng)該掌握上面的所有內(nèi)容作為基礎(chǔ)內(nèi)容,還要了解每個技術(shù)的原理和作用。對第三方庫不只是使用,還要了解原理,還要能根據(jù)原理自己寫出一部分庫。能封裝自己的庫。而不是只停留在使用上面,這些東西使用都是非常簡單的,看一下文檔就能用了,可能用額不夠精準(zhǔn),但是作為一個高級程序員,是一定一定要知道他們實現(xiàn)的原理的,計算寫不出一樣的代碼,也能知道人家是怎么實現(xiàn)的,這是一個高級程序員最低的標(biāo)準(zhǔn)了。
快速成為Android高級工程師會遇到的問題
多看書,多做項目,看什么書網(wǎng)上推薦的特別多。
那么問題來了。看書就能成為高級工程師,做項目就能成為高級工程師,看看文章就能成為高級工程師。如果可以的話,那么我直接買幾本書,在家看看,然后做幾個小項目就好了。如果這樣就能成為高級工程師,那么我就先在家好好學(xué)習(xí)學(xué)習(xí),然后成為高級工程師,再去找工作吧,這樣不是很好么。當(dāng)然這是不可能的,或者說大多數(shù)人是不可能的,不排除有那些天才啦,還有刻苦和會學(xué)習(xí)的人。或許很多人會說,這個是看工作年限的, 如果你工作都沒工作,怎么可能會是高級工程師呢,這確實是個問題,雖然你的能力確實跟你工作年限有關(guān),但是這些東西確實不只是靠年限堆出來的。而且這些東西確實也不是只看書就能看出來的,這里需要的是一個系統(tǒng)的學(xué)習(xí)過程。
這里強(qiáng)調(diào)一下,一定是一個系統(tǒng)的學(xué)習(xí)過程,要把很多東西方方面面都了解,吃透,這個過程需要很長一段時間,快的話二三年,慢的畫5年以上也正常。確實不是很快能吃透的,第一是東西確實挺多,第二是東西確實比較抽象,真的理解還會使用,需要一個系統(tǒng)的學(xué)習(xí)和使用過程。但是大部分二三的工程師達(dá)不到這個水平,可以說真的少之又少,那么這些東西學(xué)多久適合呢,我定的標(biāo)準(zhǔn)是三年,如果一個工程師,按正常的流程學(xué)習(xí),正常工作,一點(diǎn)點(diǎn)進(jìn)步,三年左右達(dá)到這個水平,一般都是可以的。只是這樣的工程師真的不多,而大多數(shù)是三年之后,最多是個中級水平。這個就是現(xiàn)在軟件開發(fā)的現(xiàn)狀。
我見過太多三五年的工程師的基礎(chǔ)太爛了,為什么強(qiáng)調(diào)基礎(chǔ),如果基礎(chǔ)不吃透,你去學(xué)習(xí)別的東西會花費(fèi)更多的時間,而很多人就是這樣不注重基礎(chǔ),他們可能會很多新的框架,新的技術(shù),但是就是不去學(xué)習(xí)基礎(chǔ),然后他們最多也只是會用別人的框架,根本連框架原理都弄不明白,更別說寫一個框架了,所以這里強(qiáng)調(diào)基礎(chǔ)的重要就是,只有你有基礎(chǔ)你才能真的去理解別人的代碼,你能更有效的控制你的代碼。
那么為什么現(xiàn)在的工程師很多是這樣的呢,第一點(diǎn),就是大多數(shù)人,不知道應(yīng)該如何學(xué),很多東西,也想學(xué)不知道如何下手,別人代碼看不懂,又覺得自己基礎(chǔ)還行,不愛看基礎(chǔ)的東西,總想直接學(xué)好更高級的東西,這樣惡性循環(huán)就變成了,基礎(chǔ)沒學(xué)好,高級的東西學(xué)不會。如果有人注重基礎(chǔ),慢慢一步一步啃會是什么樣子呢,那么他會花很大一部分時間去學(xué)習(xí)基礎(chǔ)的理論,然后基礎(chǔ)弄扎實了,在學(xué)習(xí)高級點(diǎn)的東西,這樣可以么。答案又是否定的。如果死扣基礎(chǔ),不去學(xué)習(xí)高級的東西。這個過程會遇到一系列新的問題,基礎(chǔ)不知道應(yīng)該學(xué)什么,學(xué)到什么程度,需要花費(fèi)多少時間學(xué)習(xí),然后學(xué)完了怎么用,然后什么時候復(fù)習(xí)這些問題。就變成了不知道學(xué)什么了反而基礎(chǔ)也沒有學(xué)好,還是沒有什么用的狀態(tài)。
那么如何快速成為Android高級工程師呢
通過上面的分析之后我們考慮,我們?nèi)绾慰焖俚某蔀橐粋€優(yōu)秀的Android開發(fā)工程師呢。
第一步 夯實基礎(chǔ)。
Java基礎(chǔ),多線程,泛型,反射,IO,異常處理,集合框架等等都需要吃透。
Android基礎(chǔ),四大組件,Android的是異步調(diào)用,View的 繪制流程,觸摸事件流程,都應(yīng)該吃透
這個是前提
第二步 多寫代碼。
只看不寫效果是最差的,只寫不看都比這好一點(diǎn),那么代碼一定要寫出來,然后一步步測試。讓代碼在自己的掌握之中。
做項目會讓你看到很多你需要了解的東西,能檢驗?zāi)銓芏鄸|西的了解。
做項目會讓你積累很多看書無法了解的東西。
第三步 分析代碼。
如果你有基礎(chǔ),你可以分析別人寫的代碼,看看人家代碼的原理,這個是必須要了解的。
要不要自己寫各種第三方庫,能寫當(dāng)然是好的,但是精力有限。全寫必然費(fèi)時費(fèi)力。你有那么多時間么,所以可以寫幾個就行了。
也可以看網(wǎng)上的文章,看別人如何分析第三方庫原理的,做到理解,這樣能快速的理解第三方庫的原理,但是這樣做也有弊端,就是你只是看了一遍,然后也就忘了,最好跟著人家的分析簡單寫寫代碼,看看你寫的跟人家到底有什么區(qū)別,一個是了解自己的實力,一個是能真的看到人家是如何去實現(xiàn)這個東西的,了解項目的精髓。
第四步 開發(fā)自己的框架庫。
如果前幾個做好了,這個就變成水到渠成的東西了。
開發(fā)自己的框架有很多好處。
第一個就是證明自己的能力,有能力開發(fā)一個適合自己在工作中使用的框架的能。比如說一個工具類庫。
第二個對代碼的掌控力,有自己的框架,如果項目需求有什么修改,自己能知道如何修改達(dá)到自己的項目需求,如果使用的是第三方的,可能沒辦法去修改。
第三個就是開發(fā)自己的框架,能更快速的開發(fā)自己的項目。自己寫的東西總比別人的熟悉。
這個過程做完,基本也就達(dá)到一個高級工程師應(yīng)該有的水平了,這些東西只要學(xué)都能學(xué)會。
這樣一步一步來肯定能成功,但是這并不是一個優(yōu)等的方案。一個好的方案是,有一個更好的指導(dǎo),指導(dǎo)我什么時候應(yīng)該看什么,應(yīng)該學(xué)什么,知道自己哪里不會,然后知道如何去學(xué),可是這個東西確實缺失的,不會有那么一個人,那么了解我的情況。然后根據(jù)我的情況,幫我量身定做一個學(xué)習(xí)計劃,然后根據(jù)具體情況,制定不同時期的不同計劃,然后給我講解,我看不懂的東西。其實我在學(xué)習(xí)的過程中一直希望有那么一個人,會一直指引我去學(xué)習(xí),一直指導(dǎo)我,如何去進(jìn)步,幫我解決我工作學(xué)習(xí)過程中遇到的問題。
計劃
本人做Android7年,也經(jīng)歷了各種迷茫期,各種瓶頸期。我想做一個東西,這個東西,能幫更多的程序員,從一個技術(shù)小白到一個高級的Android工程師。
-
Android
+關(guān)注
關(guān)注
12文章
3941瀏覽量
127709 -
工程師
+關(guān)注
關(guān)注
59文章
1571瀏覽量
68587
發(fā)布評論請先 登錄
相關(guān)推薦
評論