如何成爲一名合格的Android開發工程師——技能篇

前言

前段時間,一位計算機專業大四即將畢業的同窗關注了個人公衆號,而後問了我一系列的問題,表達出他對將來的迷茫:git

我是一個二本科班的應屆生,今年畢業,想知道須要掌握什麼樣的安卓技能才能參加工做?

我在b站上看了不少安卓的教學視頻,不少是16年左右的,內容很舊,想知道我學完這些,距離參加工做,還有哪些要去補充的?很是迷茫!

我仔細看了一下他提出的問題,概括總結無非就是:計算機專業的應屆生,須要掌握哪些技能才能找到Android方面的工做?github

我相信有這種疑惑的同窗必定也不在少數,那麼今天我就結合個人實際經驗,來簡單介紹一下,做爲一名即將畢業的計算機專業的應屆生,咱們須要作哪些功課才能幫助咱們更快地找到Android相關的工做。面試

自我介紹

在開講以前,我先簡單地作一下自我介紹:數據庫

我是南通大學12級網絡工程畢業,一個再普通不過的二流地方院校。16年畢業,15年10月找到的實習單位參加工做,中間跳槽了幾家公司,一直從事Android相關的開發工做,目前已有5年有餘。編程

平時喜歡逛逛github,看看掘金,有空就維護一下github上的開源項目,沒空就寫寫文章,發發牢騷,是個再普通不過的屌絲程序猿。設計模式

說了個人這些經歷,無非就是想告訴你們:我一個普通二流本科生能作到的,你們也必定能作到。因此你們沒必要擔憂,只要你可以按照個人指導去作的話,你必定能夠比我更加優秀!微信

掌握紮實的基本功

俗話說: 基礎不牢,地動山搖

做爲應屆生,因爲沒有什麼實際的項目經驗,因此在面試過程當中,用人單位會更看重應屆生的基礎知識掌握程度以及發展潛質。網絡

因此,做爲一名應屆生,咱們必定要把基本功的提高放在首位。那麼要想成爲一名Android開發者,咱們須要着重掌握哪些內容呢?數據結構

  • 基礎學科知識。如計算機組成原理、數據結構、計算機網絡、操做系統、數據庫設計、數字電路等。這些科目向咱們介紹了計算機的工做原理,掌握了這些就能夠幫助咱們更好地理解程序的本質。
  • Java基礎知識。包括語言的特性、語法、規範等。例如:Java數據類型、運算符、面向對象、集合類、泛型、註解、反射、多線程併發、Java虛擬機、設計模式等內容。
  • Android基礎知識。例如:Android四大組件、Activity的生命週期以及啓動模式、動畫、自定義View、Android不一樣版本的特性、SQLite、內存泄漏、ANR、Context、Handler機制、View繪製渲染機制、事件分發機制等內容。

若是咱們可以緊緊地掌握上面列舉的內容,那麼外面的公司絕對是搶着要你的。多線程

認清學校與社會的差距

不要天真地認爲把學校裏學到的東西都學會了就能夠順利找到工做了,固然也不要認爲學校裏學的都是些沒有用的東西。

做爲一名應屆生,咱們很是有必要認清學校與社會存在的差距。

  • 學校裏教的都是些很是重要且基礎的東西,我稱之爲專業素養。這些東西很是重要,它直接決定了咱們往後發展的天花板在哪裏。
  • 社會上教的都是些具體工做領域方面的知識,我稱之爲職業技能。這些內容能夠幫助咱們更好地完成工做。

因此,咱們除了要把學校裏學的內容打紮實,還須要儘早地接觸社會,找到對口的實習工做,掌握必要的職業技能。

咱們在找實習單位的時候,能夠參考如下幾點:

  • 不管是大廠仍是小廠,進去都會有所收穫。進大廠咱們能夠收穫不錯的履歷和人脈(這很是有用),學習到優秀的管理制度和流程控制,提升技術的深度。而在小廠能夠磨練你的意志、得到更多主導的機會、更大的自由度,拓展技術的廣度等。
  • 第一家實習單位可能極大影響我的的職場觀和價值觀,選擇時需慎重。切忌去小微企業或者創業型公司,由於這類公司天天均可能徘徊在倒閉的邊緣上,因此並不會重視人才的培養。
  • 在選擇實習單位的時候,要多瞭解和掌握企業的信息,走正規渠道。不正規不可靠的千萬別去;入職前,以任何藉口讓你交錢的公司不要去。

提升本身的動手能力

作技術搞開發的,動手能力永遠是須要做爲首要能力進行培養的。 除非你是業內公認的技術大佬,不然秀出你的代碼纔是證實你實力的最佳方式。

不少小白在入門某一項語言或者技術的時候,一般都是購買網課或者買一本入門書籍翻看,抄一抄視頻或者書中的源碼,就天真地覺得本身已經完全掌握了。他們卻不知,這些只是一些皮毛而已,當條件稍微發生一點變化的時候,他們就完全懵逼,手足無措了。

那麼怎樣才能擺脫這樣的困境呢?其實很是簡單,多敲代碼,多練習,多思考,熟能生巧嘛。

下面我簡單舉幾個例子,給你們一點啓發:

  • 假如你今天學了Android如何自定義View控件,那麼你就能夠按照本身的想法寫一個Android還沒有提供給咱們的控件或者是仿xxx的控件等。
  • 假如你今天學了Android的事件分發機制,那麼你就能夠嘗試着解決幾個層級較爲複雜的事件衝突問題。
  • 假如你今天學了Google提供給咱們進行應用開發的Jetpack框架組件,那麼你就能夠嘗試用這個Jetpack組件去寫個屬於本身的app。

如何提升本身的動手能力

正如Linux之父的那句"Talk is cheap. Show me the code.",嘴上說千遍,也不如直接上代碼擼一遍更加使人印象深入。

說到這兒,可能又有朋友想問了:對於一個歷來就沒有具體項目經驗的人來講,該從何作起呢?

這裏我仍是推薦你們多到github或者gitee這種開源代碼託管平臺去找一些優秀的開源項目,這些項目不少都是歷經了各類複雜業務考驗的高價值項目,臨摹他們的代碼,能夠極大地提高咱們的技術水平和編碼水平。

那麼當初我是怎麼鍛鍊個人編碼能力的呢?下面我就簡單介紹一下供你們參考:

  • 1.首先到開源代碼託管平臺尋找到適合本身的目標項目。
  • 2.閱讀項目的代碼,初步瞭解項目的實現原理以及架構。
  • 3.本身新建一個項目,而後按照本身的理解去本身實現一個相似的項目,不懂的時候能夠借鑑或者copy目標項目的代碼(目標項目就相似於參考答案)。
  • 4.最低的要求是可以正常運行而且實現目標項目的主要功能,要求高一點的就是可以有一些屬於本身的優化點或者特性等。
  • 5.最後對本身作的這個項目進行概括總結,優秀一點的能夠寫一篇README介紹或者原理分析。

若是你可以按照我上面所說的,來回寫個4~5個項目以後,相信你的動手能力必定會有質的飛躍。

最後

在這裏,我想給新手朋友們一點建議:不少時候,不少事情,並不像你想象中的那麼簡單,千萬不要自認爲簡單而不肯意去作,不少東西只有你親手去作了以後,纔會發現事情並不像你最初想的那麼簡單。

我是xuexiangjys,一枚熱愛學習,愛好編程,致力於Android架構研究以及開源項目經驗分享的技術up主。獲取更多資訊,歡迎微信搜索公衆號: 【個人Android開源之旅】
相關文章
相關標籤/搜索