如何經過自學成爲一名 Android 應用開發工程師? 經過自學,如何成爲一名安卓軟件開發工程師?須要讀哪些書?

 

我正在自學Android開發,已經有半年時間了,基本上業餘時間能夠擠出來的,都拿來學習了
因爲尚未找到Android開發的工做,先佔個坑,不敢擅自回答,以避免誤導,等找到工做了,再詳細描述着一路過來的自學經歷。
PS:本人以前沒有任何軟件開發經驗。
**********************java

update:2016.9.22git

通過了八個月的本身,終於在上週五被一家公司錄用了,如今遵照諾言,說說這段時間的自學經歷。
背景介紹:性別:男、無任何編程經驗、年齡:28(大齡青年了)、學習方式:工做業餘時間自學。程序員

第一階段:學習Java 用時:一個半月
一開始我使用的是Princeton大學的線上資源學習:Introduction to Programming in Java: An Interdisciplinary Approach,學習完後,以爲本身掌握的不夠系統,因而找到了另一本教程:Introduction to Java Programming, Eighth Edition,繼續學習,該教程學到第30章,沒有繼續學習下去是由於後面的愈來愈難懂了,因而就學到這裏,等學習Android開發的時候,有須要的,再回國頭來學習。
Java階段學習的主要方式是一邊學習,一邊用Eclipse模擬練習,該階段的學習持續一個半月。
第二階段:初步熟悉Android開發 用時:兩個月
???內容較多,稍後更新
************************************
 github

第二階段:入門Android 用時:兩個月(業餘時間學習計算)
在入門Android的時候,遵從了網上一些人的發言,首先選擇了google官方的文檔,裏面有一個trainging的資料,發現這個資料學習起來生恢難懂,並且講得不夠詳細,跟着作項目也是困難重重,很不適合初學者,不建議,我也是在學習了一週後,果斷放棄;而後選擇了http://Amazon.com上面的Android學習資料,找到一本排名第一的,叫作Android Programming:The Big Nerd Ranch Guide,跟着一塊兒學,因爲學的有點急躁,大概花了一個月多,感受效果是有,可是不是很好,而後在知乎上看到有人推薦TeamTreeHouse,試用了一下,感受很好,因而註冊了會員,開始學習,這個階段的學習持續了兩個月,感受效果很明顯,並且視頻的裏面,都把資料講的淺顯易懂,看了之後,興趣大增,很建議選擇這個做爲入門的學習資源
第三階段:深刻學習
其實學完第二階段,我就已經開始慢慢的投簡歷了,可是都沒有任何迴應,因而有開始了新的階段的學習,這個時候,我選擇了Udacity,裏面的一個Android的學習課程,雖說也是基礎的 課程,可是講的比TeamTreeHouse的深刻許多,並且更加的貼近實際工做狀況,不過講的沒有前者詳細,因此在學習過程當中,須要本身翻閱資料,整個過程也是持續了一個月多,我如今的這份工做,就是在這課程學完不久後找到了面試

後記:其實經過自學,想達到用人單位的要求,實際上是至關困難的,我學了快八個月了,投出去的簡歷,也幾乎是渺無音訊,期間的打擊是確定有的,不過還好堅持了下來,個人建議是,若是選擇了這條路,就必定要有足夠的毅力,而且可以在簡歷、面試被拒絕後,心無旁騖的繼續學習,直到達到目的爲止,並且這個階段沒有一個固定的時間,若是不是我如今的主管看中個人一些其餘品質(不是個人Android開發實力),我也不會被錄用,可能還要繼續的學習幾個月,因此自學這條路只屬於肯堅持下來的人,祝好!編程

後後記;如今在新的公司上班,因爲我也只是剛入職不久,也有許多沒有上手了,作起來也沒有以前想象的簡單,畢竟是工做了,也容不得疏忽,因而壓力也大了起來,不過畢竟如今作的是本身喜歡的工做,感受以前的付出,值得,我但願後續想自學的人,一塊兒努力吧。api

***********************
update:2016.11.27
如今上班已經有快兩個月了,作個更新吧
剛找到工做那家公司,是一家創業公司,我進去的時候,公司正在轉型,Android開發的工做不多,我就去基本都是在看別人現成的代碼,呆了一個月以後,公司忽然辭退了兩個Android開發的,包括我,理由是公司決定轉型作平臺,暫時不作Android客戶端,下午四點通知,六點就走人,當時確實有點彷徨,也有點擔憂。
回到家快馬加鞭的投簡歷,把本身的工做經歷寫成了半年(實際只有一個月),四天後得到了一個面試,是一家作Android定製的,在面試的時候,我誇大了本身的開發實力,因爲我渴望經過工做來增長閱歷,因而進來了。
新的工做開始後,讓我慶幸的是,以前吹的牛皮,基本上在努力後,也基本實現了,公司須要完成的項目,也均可以按時完成,如今的進度差很少是一週的時間,就能夠初步開發出一款電商類的APP,因爲公司自有我一個Android開發的,不知道這種進步算什麼水平。
總之,很慶幸的是,不少知識均可以經過自學掌握,那些不會實現的功能,也能夠經過摸索而實現,也讓我信心更堅決了點,真的很是感謝前人在網上發佈的博客內容,給予個人幫助真是太大了,同時我也開始本身寫博客了,把工做中有價值的問題和解決方法記錄下來,但願對別人有些許幫助。
打算這一兩天申請轉正,內心仍是有點忐忑啊,太盼望這一天了!!!網絡

*********************
update: 2017.1.6
此次更新的主要理由是公司終於贊成個人轉正了,只是工資沒有預想的多,只漲了八百,如今已經基本上手了,碰到的問題不少也是均可以獨立解決,並且還能抽出空餘的時間,學點新的東西,此次的轉正對我本人來講,意義非凡,至少證實了,我這麼久的努力仍是值得的,並且如今能夠靠着這份手藝掙到錢,並且這份工做是我確實喜歡的。
接來下我計劃會是繼續的增強自身的開發實力,多閱讀 牛人的博客和代碼,真的收貨很是大,並且知道的多了,也比較清楚本身的接來下要努力的方向,因此我會朝着這些方向去努力,不過會沒之前那麼拼命了,以前只顧着轉職,陪家人老婆的時間少了許多,如今稍微穩定點了,我想慢慢的補回來,不知學習不會放下的
爭取在三個月左右,再漲一次工資吧,在這裏立下證據,待往後覈驗。ide

******************************
updata:2017.2.11
最近的工做因爲比較大的變更,因而在這裏記錄下
首先,公司說的漲薪的八百,實際到了第二個發工資的時候,發現其實只漲了四百,期間說了各類理由,總之是這是一家不靠譜的公司,不靠譜的老闆
工做方面,我本身獨立完成了一款APP的開發,從零開始,一直開發到上線推廣,中間也碰到了種種的問題,在努力下也都一一解決了,這個是我在這家公司最大的收貨,第一個項目結束後,開始試着投簡歷,無心中找到了一家新的公司
新的公司經歷了三輪面試,第一輪是人事的,我把個人工做經驗說成了八個月(實際四個月),而後是項目總監,最後是老闆,整個面試過程很順利,因爲公司沒有安卓的開發人員,因此我那些技術上的吹噓也都一一瞞過去了,最終被錄用了,新的公司,待遇比以前的高了一千,上班時間也改爲了五天7.5小時,老闆跟公司的環境跟上家比,都好了許多,工做也基本上能夠勝任,好歹也是有點真本事,不是徹底的吹噓,最後,總結下對我的比較有幫助的部分:
一、寫博客:寫博客不只能夠激勵本身學習新的東西,並且之後碰到相似的問題,直接從博客中copy代碼,簡單省事;
二、把代碼中重複的模塊寫成一個工具類,下次調用直接簡單的一行代碼就能夠實現了,好比emptyView, viewPageIndicator。
三、從github上照搬代碼的時候,記得讀懂裏面的代碼,真的幫助很大,那些大神的代碼真的寫的太好了,每次讀完都頗有收穫。
四、工做中碰到不懂的,切勿立刻搜索答案,先查看官方api接口,尋找思路,最後再用搜索引擎
暫時就這些了,其實我還只能是入門級別的,能有更深刻一級的體會的時候,再來記錄下。。工具

***************************
update:2017.6.26
恰好如今有空,繼續更新下吧
目前的這家公司各方面感受都還能夠,雖然目前是我一我的獨立負責Android的開發,基本上是上手的,在技術上是沒有碰到什麼解決不了的問題,碰到不少不懂的內容,在Google搜索後,基本都找到答案了,或者尋找相關的源碼去了解下,也均可以一一的解決,這幾個月,能夠感受到本身在技術上又有了不錯的提高,現總結以下,但願有所參考;
一、儘早從Eclipse遷移到Android studio。雖然去年就開始接觸studio了,當也是懵懵懂懂,今年隨着1.0正式版本的發佈,內心就癢癢的,想遷到studio上面來,因爲對Gradle的不熟悉,還有配置等各類緣由,一直沒有遷移,不過也有陸陸續續的練習使用,在基本熟悉了,就開始遷移目前的工做項目了,遷過來了之後,就再也回不去了,Android studio真的比Eclipse好用太多了,你越熟練使用它,它就越好用,特別是github上面不少項目都是基於Gradle的,集成到studio中很方便,總之,強烈建議遷到studio開發平臺上來。
二、學習使用Git。公司用的版本工具是SVN,我估計不少公司都是用這個,我試了在studio上面集成SVN,但是試了不少次都失敗了,又據說git很先進,狠下心來學習了git,在Udacity上面有個Google開發的Git學習課程,免費的,粗略掌握後,就開始摸索在studio上面使用git,發現studio對git的集成太好了,雖然網上這方面的資料不多,可是基本上摸索了些就學會了,基本全部的git操做均可以在studio上進行,不用使用Git原生的命令,方便異常,另外在配合Bitbucket,簡直太好了,用Android studio + Git + Bitbucket,能夠天下無敵了啊,哈哈!
三、代碼方便維護和複用。在實際的開發過程當中,發現不少方法都是相同的,特別是網絡訪問這塊,對於相同的方法,儘可能寫在一個公用的BaseFragment或者BaseActivity中,這樣在後期,若是接口有改動的話,不須要每一個頁面都改動,只要改動通用的方法就能夠了,還有在每一個頁面的代碼結構要足夠清晰,多謝方法,不要不少代碼寫成一坨,這樣後期很差維護,會看的暈頭轉向的。
四、使用leakcanary。內存控制是個人薄弱環節,恰好最近Square出了這款工具,能夠很方便的檢測內存泄露,我在個人項目中一試,真的發現了好多問題,也發現了不少容易形成泄露的書寫習慣,嫉妒推薦使用。
五、使用AppCompatActivity。若是你的項目還在開發的話,不要用FragmentActivity了,用這個新出的,也是官方推薦使用的,能夠很好的兼容5.0以上的系統,另外用了也可讓各類系統的控件Style保存一致,各類好處說不盡,用了就知道了
六、BugHD,檢測崩潰。並非每次崩潰均可以被你採集到,這個工具能夠採集到你開發的APP的全部的崩潰,免費試用的,關鍵是集成很方便,我一直在用

如今基本上算是入行了,想一想以前剛開始投簡歷的時候,發了一百多封簡歷,接不到一個面試電話的狀況,不免有點唏噓,雖然上手工做暫時沒什麼問題了,可是想要進一步的深刻,仍是有許多的路要走,仍是繼續努力吧
下一步的方向應該是放在進一步研究各類api和效果實現上面,最近發現研究官方的源碼,收穫很大,官方的代碼寫的真的是太精闢,太有邏輯性了,很好的學習教材。

*************************
update:2017.9.3
最近工做又有一些變更,在這裏作個分享吧
原有的公司,由於項目的緣由,我已經空閒的快一個月了,預期接下來的幾個月都沒有什麼開發需求,根據我這段時間的表現,公司仍是但願我一直留下來的,萬一有新的項目,就不用再折騰的招人了,不過空閒對於我本身是莫大的時間浪費,因而就試着看看有沒有其餘合適的機會,總之,挺順利了,就找了份不錯的新工做。好了,下面分享一些最近新的感悟
一、 找工做的選擇,我以前都是選擇創業公司,很大的一部分緣由是由於個人工做經驗,很難進入一個大的公司,不過創業公司的失敗風險真的很大,特別是那些沒有天使輪的,真的很容易死亡,固然項目都的死亡,損失最大的應該是老闆,不過對於咱們作開發的,也由於的開發的產品沒有獲得市場的考驗,你也不知道你開發的APP到底好很差,有沒有什麼問題,機型的匹配怎樣。說了這麼多,我的的經驗是工做的選擇,仍是儘可能選擇一個靠譜的工做,有更大的用戶去使用你開發的APP,這樣對你的成長才是真的巨大的。
二、 作開發的時候,不只僅是實現功能,還有代碼的優化,結構佈局,真的很重要,我這幾天看了下Picasso的源碼,發現本身的代碼真的寫的太爛的,一看就是質量不夠好的,因此儘可能多看一些大神寫的代碼,瞭解他的佈局和思想,而後再拿來改進本身的代碼
三、 開發中碰到了問題,記得本身先去思考下解決方案,或者網上Google,不要立刻就到羣裏面去問,我最近退出了不少技術交流羣,由於有不少本身都沒怎麼思考的問題,就拋到羣裏面來,其實咱們作開發的,我以爲解決問題的能力比開發的技術還跟重要,等你熟練本身解決問題了,就會發現其實須要去求教別人的地方是不多的

最近接觸的多了,就愈加現本身不懂的也多了,以前說算是入行了,如今想起來,其實還只能算是入門,若是你也是走寫代碼這條路,就一塊兒猛幹吧,阿門。。。。


update:2018.2.3
最近觸動比較多,仍是繼續更新下吧
到了新公司,完整了參加完一個項目下來,感受本身收穫最大的不是技術方面的成長,而是態度方面的成長,良好的態度可以規避不少技術的問題的,恰好有時間,粗略寫個總結吧;
一、確認好產品文檔的技術細節:千萬千萬要跟產品確認好需求,產品的需求文檔會包含交互細節,頁面邏輯等,但每每會忽略技術的實現細節,或者在實現起來,有不少的細節須要考慮的,可是都是文檔說欠缺考慮的,通常的狀況下,一份新的需求,我大概要花費一天的時間,去完整的評估實現方案,在評估完成後,發現有出入的,還須要跟產品從新溝通確認,確認好後,千萬要記得讓產品更新文檔,之後測試好依據新的文檔測試。
二、在實現一個功能以前,先打好草稿:我作項目常常犯的一個錯誤是急着寫代碼,邏輯跟着代碼一邊寫一邊走,如今回過頭去查看原來寫的代碼,發現結構混亂,方法各類重複,邏輯耦合度高,總之就是爛,最近靜下心來,在完善一個功能以前,先用紙跟筆把各類情景考慮清楚,再把各類邏輯交互處理好,而且用流程圖之類的方法表達清楚,而後再開始寫代碼,這樣寫的代碼明顯質量高不少,bug也少,因爲邏輯結構清晰,後期的維護跟更新都比較簡單。
三、增強自測:不知道是否是開發的廣泛不喜歡測試,我好一陣都是對測試不感興趣,提不起勁,感受沒有技術含量,直到提交的代碼一次次被測試妹子提的bug給淹沒,脆弱的心靈深受打擊,因而只好痛定思痛,要增強自測,通常本身寫的模塊,本身是最清楚的,知道哪些地方容易出bug,基本功能測試一遍,再極端條件再測試一輪,基本沒有空手而歸的,每次都能發現代碼中的bug,不知道有沒有那種神通常的程序員,有一雙上帝之手,寫的代碼蹭蹭的出來,並且基本不出bug,我這輩子是沒可能到達這種境界了,因此只好老老實實的自測吧。
四、分支管理:如今應該通常用git了吧,建議是開一個主分支,這個分支打的包也是測試用的包,而後本身再個分支,在上面開發測試,若是有其餘的隊友,也各自開分支,新的功能開發自測合格後,再合併到主分支,這樣比直接在主分支開發,可以規避許多的bug,提及來簡單,我也是一開始忽略了,只好看着滿滿幾十頁的bug內心發抖。
五、小白心態:一直以爲本身是個小白,對於寫的功能,某個方法老是抱着懷疑的態度,對於我來講,抱着小白心態,或者菜鳥心態寫代碼,明顯質量好不少,可是進度慢了很多,若是抱着信心滿滿的心態寫代碼,速度明顯飆升,可是對於我來講,bug反而會變多,因此我通常儘可能讓本身保持菜鳥的心態寫代碼(代碼深似海,其實真只能算新手,每次看到Android的源碼,都深深的感受本身跟高手的差距達到估計這輩子不知道能否追的上)

對於外行入門Android開發的,儘可能去大一點的公司,你的成長會比小公司的大不少,我前幾份工做都是小公司,目前這個家公司規模還不錯,工做了幾個月,就能明顯的感受到以前成長的侷限性了

*************************
update:2018.9.10
有一陣沒有更新了,恰好有空,作些補充吧,能夠的話,這個答覆但願一直更新下去
在新的公司上班一年多了,基本上適應了這邊的節奏,還記得剛進來的時候,怕本身的水平太爛(也確實爛),晚上睡覺內心都會忐忑不安,以前每次找到新的工做,當步子邁的太大的話,心裏都會這樣糾結,不過這樣也有一點好處,他會逼着你往前走,由於你覺得把本身逼着沒有退路了,開發路上,義無反顧,一往直前。
你有沒有這種困惑:當你開發了一段時間,簡單的該會的會了,複雜的不會仍是不會,一開始的時候,可以明顯的感受到本身的進步,最近逐漸發現本身慢慢的進步變慢了,而後又忽然以爲開始停滯不前了,有一陣,我本身忽然有這種想法,發現本身進步愈來愈慢了,壓力小了,生活也安逸起來,人也變得懶惰起來,不像以前的那種拼,那股闖勁,好可怕,感受本身淪陷了!
因而我試着找回最開始的那種拼勁,接着讓本身進入快速成長的路上,不停的接受新的知識,逐漸的,又讓我找到節奏了,多虧了github,多虧了開源,安卓網上老是有不停的很好的庫開發出來供你們使用,我一邊使用這些庫,一邊查看別人的源碼,發現裏面的奧妙,慢慢的發現裏面的許多實現方式,都讓我很是的敬佩,你總能發現許多比你本身寫的還好的代碼,老是發現本身還有不少的不足,讓本身一直保持這種飢餓的狀態,原來我還有這麼多的不懂,還這麼的水,慢慢的找回了這種狀態,就像是一開始找工做同樣
我相信人是習慣於安於現狀,特別是現狀還不錯的時候,可是心態上,不能這樣想,要讓本身處於一種動盪的心態中,咱們的選擇,只有不停向前,雖然我已經三十了,看着周邊一羣羣的九零後,我但願個人激情不亞於年輕人,一直保持一份年輕的衝勁!

歡迎你們加入Android技術開發交流羣:653583088
本羣提供免費的學習指導以及免費的解答不懂得問題均可以在本羣提出來 以後還會有職業生涯規劃以及面試指導進羣修改羣備註:開發年限-地區-經驗方便解答問題

相關文章
相關標籤/搜索