Android開發:從小公司跳槽進阿里做開發,怎麼做到的?

像程序那樣思考 發佈 2020-01-11T14:37:44+00:00

這裡普及一下,每個公司都有職別定級系統,阿里也是,技術崗以P 定級,一般校招 P5,社招 P6起。以前我入職淘寶的title是『資深無線開發工程師』是 P6級別, 那時候 P6還分 高級 與 資深,現在都統一成高級了。

我的朋友,2019年實現了一個小目標,畢業三年加入阿里。以下是他的自述。


聽上去好像挺厲害,挺光鮮,但是實際上並不那麼容易,在這背後有很多我自己摸索和努力的故事。

在這裡我想分享一些我的經驗,送給那些跟我一樣,沒名校背景沒大廠背景,但是想進阿里(或其他大廠),又有點迷茫不知該如何前進的人


其實在進阿里之前,我也挺迷茫,內心有一些謎團一直困擾著我,比如阿里招人標準是什麼?,自己距離這個標準有多少差距?那時候一直不知道,就好像置身於沙漠之中,卻不知道往哪裡走。這時候,找到方向最為關鍵。(很多人跟我那時候一樣迷茫,因為不少人問過我,到底怎麼樣才能加入阿里。)

當時我問了幾個在阿里的朋友:

我問:要進阿里是什麼標準啊?

朋友答:社招的話一般P6起招,三年工作經驗。

我又會問:P6是什麼

這時候往往得到的回答就不一樣了。

這裡普及一下,每個公司都有職別定級系統,阿里也是,技術崗以 P 定級,一般校招 P5,社招 P6起。

以前我入職淘寶的title是『資深無線開發工程師』是 P6級別, 那時候 P6還分 高級 與 資深,現在都統一成高級了。

那 P6 的標準到底是什麼呢?

其實還挺難說清,這個不像是考試的分數定級那樣清晰,到了60分就是及格。

在我的理解里,一句話概括就是:擁有獨立負責某個或多個模塊的開發工作的能力。(說得再白話一點,就是老闆放心你一個人負責某個或多個模塊的開發工作)

聽著好像還是很抽象,別急,我嘗試著把這個能力拆分了一下,包括但不限於:

  1. 專業能力
  2. 解決問題的能力
  3. 學習能力

如果這幾項能力達標或突出,我覺得就可以負責多個模塊的開發工作了,也意味著進阿里,技術問題不大。

那麼我們能怎麼去提升自己達到目標呢?限於篇幅,我著重講怎麼提升專業能力。

專業能力的提升

計算機專業要學習的內容非常多,專業能力包含很多,光Android還不夠,還有比如數據結構、算法、Linux、網絡編程、計算機原理等等等等等等,由於我做的是 Android,那麼這裡就偏向 Android 來講解了。

深入理解原理,不要只會使用

由於開源的精神以及網際網路的偉大,我們能夠不費吹灰之力使用世界上頂尖的三方庫,比如很火的 RxJava、EventBus、Retrofit、OkHttp 、Glide 等等等等。只要添加一行依賴,就能起飛,有一種自己掌握了全世界最牛逼的技術的錯覺

我見過不少人,也看到不少 人的Github 的庫里寫著 MVP+RxJava+Glide+Dagger 等等類似的內容,他們可能一線開源庫用得很六,但是一旦問及原理,可能就一臉茫然,說不太上來。

這其實就是停留在使用階段的表現

你要知道,一個庫再牛逼,這個牛逼是屬於作者的,而不是你。

站在面試官的角度講,這麼多人都會用,又憑什麼選你呢?對吧?!

這時候如果你懂一些原理,那你就能比別人更優秀一些了。

那麼,怎麼去深入理解原理呢?閱讀源碼

(退後,我要裝 X 了!)

其實所謂的原理,全都寫在源碼裡面,毫無保留

有的人一聽看源碼就會慌,不知所措,代碼那麼多,怎麼看啊

其實閱讀源碼也是有很多訣竅的,這裡分享幾點心得:

  1. 首先要會用。你要知道這個庫是幹什麼的,掌握它基本的使用方法;
  2. 有目的性。針對某個功能有目的的去挖掘,這樣就不會在茫茫源碼中迷失方向;
  3. 不需要看完所有細節。有的人閱讀源碼愛鑽牛角尖,非要把每一個小細節都搞清楚,以至於看了一天可能都沒看明白主幹是什麼。

是不是有點道理?比如 EventBus ,你發送個 Event 怎麼就傳遞到了訂閱的地方?帶著這麼個小問題有目的的去看,會輕鬆很多。

閱讀源碼確實不簡單,但是不要著急,從簡單的源碼開始,慢慢提升,學會抽絲剝繭,層層遞進,逐漸培養閱讀源碼的習慣與能力。

相信我,學會看源碼,對專業能力的提升有巨大的幫助。

保持學習,多看官方的一手資料

在平時保證完成工作的情況下依然要保持學習,做不到每天學習,也要做到每周學習,擴大知識面,加深深度。

技術的發展非常快,要跟上得不斷持續的學習,這很重要。

那麼為什麼要多看官方的一手資料?

說實在的,這個時代,已經不缺少學習資料了。但是呢,資料也是有好有壞的,眾所周知,你用 google 搜跟 某度 搜到的資料會有很大的差別,所以第一步,把 google 作為默認搜尋引擎

官方資料 跟別人的二手資料,差別也是很大的。

這裡不是說所有別人寫的資料都是差的都是不值得看的,而是說其實別人可能也是看了官方的資料,經過自己的理解加工輸出一個資料,而這個加工過程可能刪減了部分內容,也可能扭曲/誤解了官方的意思,以至於你看到的時候可能變了味。

所要儘量去看一手資料,它能讓你學到最基本、最全面、也是最有用的知識,更何況,現在 Android 官方的文檔 視頻 越做越好,甚至都做了中文翻譯,還有什麼藉口不看?

學會積累,做到有輸入有輸出

前面我既讓你看官方的資料,又讓你去看源碼,那麼光看就夠了嗎?

顯然不是,紙上得來終覺淺。

學習,要做到有輸入有輸出,這樣才能更好地把知識掌握在腦子裡

輸入就是那些資料,源碼等各種知識,那麼輸出是什麼?對於開發者來說輸出可以是筆記,可以是博客,也可以是代碼。

作為過來人,勸你一句,如果時間允許的話,嘗試維護個博客吧

當你開始嘗試針對某個知識點寫文章的時候,你可能會有如下經歷:

  1. 我明明已經懂了,為什麼解釋不清楚?(其實還沒真的懂)
  2. 這個知識點好像涉及到了其他東西,我去看看,然後發現不懂的還有很多;
  3. 寫得多了,本來星星點點散布在大腦各個角落的地方的零碎的知識點,在某個時刻突然就被串了起來,形成一張了知識圖譜。

這是我之前寫博客的真實經歷,自己覺得懂了,跟 把知識說清楚讓別人懂,感覺是兩個層次的事。在寫作的過程中會強迫你自己把知識點組合起來,用通俗的語言表達你的想法,其實要求你對知識有更透徹的理解,這也能促使你變得更專業。

另外,寫博客其實也是對外展示自己的機會,寫得好,會有阿里員工或獵頭找上門的,幫你推薦工作的。

好的博客或 Github 也是一塊可以敲開阿里大門的磚


要加入阿里,你可能還需要學會如何寫好簡歷,找個靠譜的阿里員工幫你內推,另外可能還需要一些運氣,但這都是後話了,最最重要的前提就是自身的技術實力要過硬

所以,別的不用多說,日夜兼程,持續精進吧!


在這裡我也分享一份私貨,自己收錄整理的Android學習PDF+架構視頻+面試文檔+源碼筆記,還有高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料幫助大家學習提升進階,也節省大家在網上搜索資料的時間來學習,也可以分享給身邊好友一起學習

如果你有需要的話,可以點讚+評論+轉發關注我,然後私信我【進階】我發給你

關鍵字: