在之前的文章裡我提到過,2017年我實現了一個小目標,畢業三年加入阿里。
聽上去好像挺厲害,挺光鮮,但是實際上並不那麼容易,在這背後有很多我自己摸索和努力的故事。
在這裡我想分享一些我的經驗,送給那些跟我一樣,沒名校背景沒大廠背景,但是想進阿里(或其他大廠),又有點迷茫不知該如何前進的人。
其實在進阿里之前,我也挺迷茫,內心有一些謎團一直困擾著我,比如阿里招人標準是什麼?,自己距離這個標準有多少差距?那時候一直不知道,就好像置身於沙漠之中,卻不知道往哪裡走。這時候,找到方向最為關鍵。(很多人跟我那時候一樣迷茫,因為不少人問過我,到底怎麼樣才能加入阿里。)
當時我問了幾個在阿里的朋友:
我問:要進阿里是什麼標準啊?
朋友答:社招的話一般P6起招,三年工作經驗。
我又會問:P6是什麼?
這時候往往得到的回答就不一樣了。
這裡普及一下,每個公司都有職別定級系統,阿里也是,技術崗以 P 定級,一般校招 P5,社招 P6起。
以前我入職淘寶的title是『資深無線開發工程師』是 P6級別, 那時候 P6還分 高階 與 資深,現在都統一成高階了。
那 P6 的標準到底是什麼呢?
其實還挺難說清,這個不像是考試的分數定級那樣清晰,到了60分就是及格。
在我的理解裡,一句話概括就是:擁有獨立負責某個或多個模組的開發工作的能力。(說得再白話一點,就是老闆放心你一個人負責某個或多個模組的開發工作)
聽著好像還是很抽象,別急,我嘗試著把這個能力拆分了一下,包括但不限於:
專業能力
解決問題的能力
學習能力
如果這幾項能力達標或突出,我覺得就可以負責多個模組的開發工作了,也意味著進阿里,技術問題不大。
那麼我們能怎麼去提升自己達到目標呢?限於篇幅,我著重講怎麼提升專業能力。
專業能力的提升
計算機專業要學習的內容非常多,專業能力包含很多,光Android還不夠,還有比如資料結構、演算法、Linux、網路程式設計、計算機原理等等等等等等,由於我做的是 Android,那麼這裡就偏向 Android 來講解了。
深入理解原理,不要只會使用
由於開源的精神以及網際網路的偉大,我們能夠不費吹灰之力使用世界上頂尖的三方庫,比如很火的 RxJava、EventBus、Retrofit、OkHttp 、Glide 等等等等。只要新增一行依賴,就能起飛,有一種自己掌握了全世界最牛逼的技術的錯覺。
我見過不少人,也看到不少 人的Github 的庫裡寫著 MVP+RxJava+Glide+Dagger 等等類似的內容,他們可能一線開源庫用得很六,但是一旦問及原理,可能就一臉茫然,說不太上來。
這其實就是停留在使用階段的表現。
你要知道,一個庫再牛逼,這個牛逼是屬於作者的,而不是你。
站在面試官的角度講,這麼多人都會用,又憑什麼選你呢?對吧?!
這時候如果你懂一些原理,那你就能比別人更優秀一些了。
那麼,怎麼去深入理解原理呢?閱讀原始碼!
(退後,我要裝 X 了!)
其實所謂的原理,全都寫在原始碼裡面,毫無保留。
有的人一聽看原始碼就會慌,不知所措,程式碼那麼多,怎麼看啊?
其實閱讀原始碼也是有很多訣竅的,這裡分享幾點心得:
首先要會用。你要知道這個庫是幹什麼的,掌握它基本的使用方法;
有目的性。針對某個功能有目的的去挖掘,這樣就不會在茫茫原始碼中迷失方向;
不需要看完所有細節。有的人閱讀原始碼愛鑽牛角尖,非要把每一個小細節都搞清楚,以至於看了一天可能都沒看明白主幹是什麼。
是不是有點道理?比如 EventBus ,你傳送個 Event 怎麼就傳遞到了訂閱的地方?帶著這麼個小問題有目的的去看,會輕鬆很多。
閱讀原始碼確實不簡單,但是不要著急,從簡單的原始碼開始,慢慢提升,學會抽絲剝繭,層層遞進,逐漸培養閱讀原始碼的習慣與能力。
相信我,學會看原始碼,對專業能力的提升有巨大的幫助。
保持學習,多看官方的一手資料
在平時保證完成工作的情況下依然要保持學習,做不到每天學習,也要做到每週學習,擴大知識面,加深深度。
技術的發展非常快,要跟上得不斷持續的學習,這很重要。
那麼為什麼要多看官方的一手資料?
說實在的,這個時代,已經不缺少學習資料了。但是呢,資料也是有好有壞的,眾所周知,你用 google 搜跟 某度 搜到的資料會有很大的差別,所以第一步,把 google 作為預設搜尋引擎。
官方資料 跟別人的二手資料,差別也是很大的。
這裡不是說所有別人寫的資料都是差的都是不值得看的,而是說其實別人可能也是看了官方的資料,經過自己的理解加工輸出一個資料,而這個加工過程可能刪減了部分內容,也可能扭曲/誤解了官方的意思,以至於你看到的時候可能變了味。
所要儘量去看一手資料,它能讓你學到最基本、最全面、也是最有用的知識,更何況,現在 Android 官方的文件 視訊 越做越好,甚至都做了中文翻譯,還有什麼藉口不看?
學會積累,做到有輸入有輸出
前面我既讓你看官方的資料,又讓你去看原始碼,那麼光看就夠了嗎?
顯然不是,紙上得來終覺淺。
學習,要做到有輸入有輸出,這樣才能更好地把知識掌握在腦子裡。
輸入就是那些資料,原始碼等各種知識,那麼輸出是什麼?對於開發者來說輸出可以是筆記,可以是部落格,也可以是程式碼。
作為過來人,勸你一句,如果時間允許的話,嘗試維護個部落格吧!
當你開始嘗試針對某個知識點寫文章的時候,你可能會有如下經歷:
我明明已經懂了,為什麼解釋不清楚?(其實還沒真的懂)
這個知識點好像涉及到了其他東西,我去看看,然後發現不懂的還有很多;
寫得多了,本來星星點點散佈在大腦各個角落的地方的零碎的知識點,在某個時刻突然就被串了起來,形成一張了知識圖譜。
這是我之前寫部落格的真實經歷,自己覺得懂了,跟 把知識說清楚讓別人懂,感覺是兩個層次的事。在寫作的過程中會強迫你自己把知識點組合起來,用通俗的語言表達你的想法,其實要求你對知識有更透徹的理解,這也能促使你變得更專業。
另外,寫部落格其實也是對外展示自己的機會,寫得好,會有阿里員工或獵頭找上門的,幫你推薦工作的。
好的部落格或 Github 也是一塊可以敲開阿里大門的磚。
要加入阿里,你可能還需要學會如何寫好簡歷,找個靠譜的阿里員工幫你內推,另外可能還需要一些運氣,但這都是後話了,最最重要的前提就是自身的技術實力要過硬。
2019年伊始,全新的開始,相信很多人都給自己定了個小目標,希望我的這些經驗能夠幫到你實現其中的某一個,祝願所有人能有個更加精彩美好的2019。
新的一年,要加油鴨!!!衝鴨!!!