給菜鳥級Android程序員的一封信

給菜鳥級Android程序員的一封信

首先恭喜你加入這個正在改變世界人們對移動終端的看法的大平臺,Android的市場佔有率已經不用多說,遠遠超於蘋果的ios。當然,最近蘋果也宣佈要走低端市場,但是你可以想想,一種產品怎麼讓它最容易讓人接受,那就是免費,爲什麼人們那麼容易接受android因爲android開源。開源,就是免費。消費者是不懂這些的,廠商出什麼新東西,他們就會去買,而且普遍消費者都有一種很傻的觀點,認爲越貴就是越好。所以,商家會想盡辦法讓自己的成本最低,售價最高。成本最低,首選Android系統。

很多菜鳥踏進Android就開始寫控件什麼的覺得挺容易上手,確實面向對象思想這種高級語言Java是比較容易上手,但是僅僅上手入門這種程度並不滿足寫程序的要求,只能稱之爲寫代碼。寫程序和寫代碼最大的區別就是程序的完整性能夠頂住大部分的異常,除了代碼本身異常,就是用戶的異常操作,有時候真想不到他們是怎麼操作的可以讓自己的程序奔潰。當然,寫代碼是基本功,也只有在打好基本功的基礎下才能夠能力搭建好上層建築。

想學好Android,第一步打好JavaSE基礎,這個是基礎到不能再基礎的問題了。記得有一次版主羣裏有個人還說有個HR給他打電話,說他們公司要招做Android的,你會Java嗎?行業內聽到這句話就會爆笑,會Android的肯定會Java,但是會Java的不一定會Android。因爲Android平臺下的app基本上都是用Java語言開發,當然現在C++和C#也可以開發Android應用了。是不是做Android的就不需要理解JavaEE呢?答案肯定不是,需要了解JavaEE,因爲JavaEE做出來的網站是最強大也是最複雜的網站系統,Android作爲客戶端需要經常跟服務器打交道,你去了解一個最難的服務器網站框架,那碰到其他語言做的網站服務器那不是更容易了嗎?如果不將自己的職業方向定位在互聯網的朋友,你們可以只學JavaEE的基礎部分,也就是servlet和jsp部分就夠了,有時間還可以瞭解下webservice的搭建。接着就是Android基礎,UI編寫(別小看這個東西,很多人還是不太會寫),各種基礎控件要會使用,各種高級控件要了解怎麼用,真正用到的時候纔去深入學習,四大組件的生命週期,作用,什麼時候應該使用必須深入掌握。有些人會問學了那麼多東西,不記得。是的,一下子學太多東西是會不記得,因爲你用得少。所以需要通過做項目,小demo去深入所學知識。網上也有很多小項目的視頻,可以學着去做,做完再去深入的思考能不能用別的方式去做,能不能再加點什麼功能,在性能上怎麼去提高運行速度,怎麼防止內存外溢,怎麼防止ANR這些常見的問題。

有些菜鳥有些習慣不太好,就是一碰到問題就問人,一是浪費別人的時間,二是顯得自己更菜更不具備思考能力。作爲程序員,自學能力強是必須的。計算機行業的信息更新速度比任何行業都要快,不學習就意味着被淘汰,成爲行業中的低層人士。爲什麼有些人工作了六七年還是五六千的工資,爲什麼有些人工作了三年工資就能上萬呢?因爲他們的學習態度影響了他們。並不是人人都那麼有想法,不是人人都那麼有野心想往上爬,也並不是人人都會除了做出上司給出的要求又能想到更好的東西加到項目中,也並不是人人都想成爲行業中的領頭羊。總之,沒有想法的人是最可怕的,因爲他們怎麼努力都爬不上去。當碰到問題的時候,首先要做去是上網去查,很多人喜歡用百度,但是百度百不出什麼專業知識,我都建議大家用谷歌。中文字查不到,然後再用英文去查,都查不到了,在技術行業相關的論壇發帖,問人。開發android首選論壇是eoe論壇,CSDN雖然是全國最大的開發者論壇,但是在移動設備方面做得沒有eoe好,eoe論壇好是好在他們的學習氛圍,很多熱心的前輩樂意解答問題,相互學習,共同進步。英語是一個很重要的工具,它幾乎成了你以後想要在行業內提升更高階梯的必要工具,IT行業最發達最新的東西都是來自美國,通常第一手資料都是以英文的方式傳播,如果英文沒鍛鍊好,還要等別人翻譯給你看,那也要至少一年的時間,那你就比別人落後了一年,再不好就是翻譯的人並不是IT專業的人,把專業的東西翻譯成亂七八糟,還搞錯了意思,那就比別人落後不止一年了。最典型的2012年,Android系統版本從2.3到4.1,幾個版本性的飛躍就在一年時間內發生,根本是來不及更新翻譯文檔。程序員要多去看看別人的成功的軟件,用戶體驗,才能設計好自己的軟件,做精品軟件。國內有很多自己的app,感覺不管從界面上還是功能上,跟國際軟件相比差一大截。在做項目的過程中和用別的產品的同時要不斷吸取好產品的功能,性能優勢,添加到自己開發的項目當中。項目多了,自然積累了比較多的項目分析經驗,通常這種也就是所謂的需求分析,分析市場的需求,市場需求決定軟件能否被人接受,決定了軟件是否能盈利,而不是我想做什麼功能它就有價值。學會分析一個產品的需求,這是系統架構師必備的職業素養,也是未來要繼續往程序員行業上爬的一個高度,當然,系統架構師之前,還有分析員,項目經理,軟件工程師。

有些菜鳥很喜歡問這行好不好就業,待遇怎麼樣?說真的,有實力還怕找不到工作嗎?沒有實力纔會去愁這些東西。對於沒有實際項目經驗的菜鳥來說看到招聘寫着2年工作經驗以上年限的就不要投簡歷去碰壁了,因爲那裏要請領頭羊或者單幹的人,單幹對於新人來說學不到東西,進步會相當慢。當然,現在很多公司都寫着要找1年工作經驗以上的,那沒有經驗怎麼辦呢?可以通過學習網上的一些項目視頻,先看懂視頻,然後可以脫離視頻把項目做一次,那就基本上可以寫代碼了。寫真正項目,還需要一些職業素質就是處理異常,前面已經說過了。要注意行業的走勢,發覺適合項目發開的書籍,例如性能分析,性能優化諸如此類的書。最後會有菜鳥疑惑到底學Android好還是學JavaEE好,這個真的沒有可比性。因爲,前者是客戶端爲主,後者是服務器爲主,沒有所謂的好壞,而且現在的時代確實,這兩者的搭配誰也離不開誰。如果做嵌入式的某些終端,Android還可能是當作服務器來使用,不過這種可能極低。

到底是做應用,做遊戲,還是做底層好呢?見仁見智,雖然做底層起初是比較高薪,但是它基本上就是一直在都是在機器打交道,除了單片機就是計算機,後期發展能提升到一個什麼高度,我不太瞭解,對底層有興趣的人可以向做底層的前輩請教。做遊戲的話,比應用的難度要高一些,因爲遊戲涉及到大量算法,在用戶體驗上應用和遊戲是不分上下的,重在創新。遊戲最難是遊戲引擎,應用難是應用框架,遊戲還有很多各種圖像處理,應用如果不是做圖像相關的應用對這些要求不大,但是如果應用要做音視頻流媒體這種難度也是很大的,總體來說遊戲編程和應用編程最終的難度差異不分上下,但是遊戲創造的直接盈利比應用要高一些,導致遊戲程序員的工資普遍比應用高一些。但是,一個遊戲再怎麼好玩,人們是會膩的。而做應用的普遍是爲商務服務,人們可以不玩遊戲,但是人們不能不搞商務活動。所以,總體來說做底層和做應用是最穩定的,遊戲也不賴的,只是相對其他兩種不穩定些。總體行業來說直接價值,底層最高,遊戲其次,接着就是應用了。通常做應用的還有職業方向轉移,就是做服務器,JavaEE的範疇。Android+JavaEE這種組合就業工資待遇有多高,我就不說了,大家可以在招聘搜一下就知道了。底層開發通常會跟C++,C語言結合一起,遊戲開發,會跟C++語言的OpenGL ES建模技術結合。其實到底做哪個方向最好,哪個最賺錢是沒有標準的答案,在於你是否感興趣,是否願意投身於此方向,是否在這個方向鍛鍊到了,學到了東西,掌握了知識,用到了真正的項目上,最後用最短的時間去完成。

加油吧,有夢想的朋友!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章