挨踢部落故事匯(20):Android程序員的十大轉型之路
玖哥是一個來自東北的Android攻城獅,現在定居被譽為“大湖名城,創(chuan)新(xiao)高地”的合肥。知識面極廣,不僅廣泛涉獵IT相關知識,還熱愛文學,性格幽默,被譽為“會搞Android的段子手”。他還是一個藏書人士,擁有汗牛充棟的IT書籍,而且每本書都認真閱讀過,從不拿書當擺設。
玖哥·Android攻城獅
先說說Android程序員不可能轉型的幾個方向,以下四個不靠譜方向的靠譜性遞減:
首先不會轉型iOS,iOS和Android工程師的工作內容都是大同小異的。
其次不會轉型Windows Phone,好多Andr oid程序員就是受不了產品經理嘮叨:“像QQ客戶端那樣做成和iOS一樣”才轉型的,怎麽會轉型比Android還難做成和iOS一樣的WP?
再次不會轉型Windows和MacOS等桌面軟件,桌面開發周期長、難度大、升級不易,這是一個已經接近窮途末路的夕陽產業。
最後不會開JavaME或者Symbian的歷史倒車,除非他有本事讓每個用戶都買(就一個“買”字,同時包含“想買”和“買得到”的意思)停產多年的機型。
玖哥觀察如今的技術形勢,並親身探索了一個Android程序員轉型的十個技術方向的可行性:
1、Android病毒和惡意應用
最近肆虐全世界的WannaCry讓安全成了IT圈最熱的話題,開發膩了善意應用的Android工程師最便捷的轉型方向就是開發Android病毒和惡意應用。在4.x時代對Android對敏感權限還不是很敏感的時候,玖哥就研究過給肉雞偽造短信記錄和讓肉雞給通訊錄裏所有(或特定)聯系人發送短信的病毒。去年還研究過竊取友商App推送內容、強殺友商App進程、卸載友商App甚至讓友商App被卸載後就再也不能在這臺肉雞上安裝的惡意應用(或應用裏的惡意功能)。
轉型建議:此外鎖定肉雞裏的重要文件勒索用戶(Android上的WannaCry?)和竊取肉雞用戶的支付密碼的實現在技術上也像強奸8歲女童一樣簡單,只不過事後逍遙法外很難。這個轉型方向只適合拿自己的手機當肉雞玩玩,千萬不要用這些技術賺錢。
2、SDK
開發SDK本質上仍然在為Android應用開發軟件,只是不直接開發Android應用。
每個Android程序員工作幾年後都積累了屬於自己的或大或小的類庫,比如封裝好的LogUtils和ToastUtils等;也都或多或少研究過常用開源框架的底層原理,比如了解Picasso和EventBus等;還應該對不開源的第三方服務有自己簡單的二次封裝,比如玖哥就封裝了一鍵實現支付寶和微信支付的moudle(免費的Ping++?)。
轉型建議:盡管看見自己的鏈接出現在無數Android應用的Gradle文件的compile後面,開發了無數軟件的一部分的成就感不會比開發完整的軟件差。但是幾乎沒有老板會為了支持你開發開源軟件發你工資。
3、JavaEE
Android程序員轉型Java在基礎知識方面是沒什麽難度的,畢竟語言相通,特性相似。同時每個Android程序員在大學時J2EE課程學得都不會很差,不過有些知識是該忘掉的,比如Hibernate已經落後於時代了,SpringMVC的全面使用才是Java後臺的大勢所趨。
轉型建議:建議不想每天改UI的剛入行不久的Android工程師轉型,玖哥有好幾個學弟就是參加工作後從Android轉型Java的,他們過得都不錯。很多工作年限較長的Android工程師本來就是JavaEE轉型來的,就別轉回去了。
4、手遊
首先考慮不放棄Java語言和Android開發習慣的情況:最合適的就是能把遊戲view直接插入普通layout裏的AndEngine,前幾年大紅大紫的Flappy Bird就是用它開發的。AndEngine的開發方式和Android別無二致,且有豐富的開源demo。不過AndEngine沒有官方文檔,理論學習上有一定難度。玖哥用AndEngine開發了畢業設計,參加工作後也用AndEngine獲得了幾個獎,他珍藏著一本AndEngine的非官方文檔《Android遊戲開發實踐指南》(全新未拆封),期待著有一天能回到2014年把它送給那個買不起它的畢業生。
提到了AndEngine就不得不提國產AndEngine——OGEngine,它是基於AndEngine衍生的遊戲引擎,有詳細的純中文文檔和說漢語的技術支持楊城(筆名:小城),極適合開發Android TV遊戲。OGEngine目前已停止更新,這個國產遊戲引擎的悲劇在於推出時間太早,希望Android TV普及的時候卷土重來的OGEngine能讓中國在遊戲引擎方面領跑全世界。
LibGDX是一個跨平臺的遊戲開發框架,同樣使用Java作為開發語言,前文所說的AndEngine就是基於LiBGDX實現的。LibGDX最大的優點就是極強的兼容性,不僅兼容Android和iOS,還兼容Windows、Linux、Max OS X等桌面系統。極強的兼容性還為開發提供了便利——不必打開Android模擬器,直接用電腦debug你的應用。在LibGDX和Android之間相互轉型都很容易,知名的Android專家宋誌輝、吳佳俊等都是從LibGDX轉型Android的。
如果不要Java語言,那就有Cosos2d-x可供選擇。《Cocos2d-x遊戲開發實戰精解》的作者歐桐桐(筆名:OTT)認為Android程序員一般對面向對象的知識掌握的比較全面,上手Cosos2d-x比較容易,並且Cosos2d-x是中國人維護的,文檔全、資源多、教程多。OTT在得知玖哥是和他一樣的藏書人士後還特地贈送一本他的大作鼓勵玖哥。
轉型建議:做好心理準備,國內手遊行業比普通的移動互聯網行業加班更瘋狂,建議剛入行沒多久的Android工程師為了加班費轉型,不建議30歲以上的Android工程師轉型。
5、HTML5
HTML5也是Android工程師改行的好方向,HTML5在移動互聯網領域應用非常廣泛,比如混合開發、手機站、小遊戲、微信公眾號、微信小程序等。簡單的手機站和對性能要求不高小遊戲直接用從懶人模板(http://www.lanrenmb.com/)上找到的資源稍微修改一下即可,這裏只說說混合開發應用和小遊戲怎麽開發。
最著名的HTML5移動開發框架當屬Facebook發布於2015年的React Native,這是一套跨平臺、動態更新的 JavaScript 框架,口號是“Learn once, write anywhere”。與之類似有同屬舶來的PhoneGap等。
國產的HTML5開發框架在國內也百家爭鳴,常見的有HBuilder和AppCan,二者共同特點是都為了便於新手入門制作了專用的編譯器。2016年,在Qcon大會上宣布開源的Weex也異軍突起,來自阿裏的它因為開發的軟件與原生App別無二致受到很多人的青睞。
開發對性能要求比較高的HTML5遊戲,靠模板是不行的。2014年2月創立於北京的Egret是一套完整的HTML5遊戲開發解決方案,其核心產品白鷺引擎(Egret Engine)憑借上手簡便、性能強大已占據國內超七成的手機頁遊引擎市場份額。
Egret布道師徐聰(筆名:臭臭打不死人)還送了玖哥Egret官方教程《Egret——HTML5遊戲開發指南》和Egret吉祥物。
轉型建議:一般來說,除非手機頁遊或商場,大多數用HTML5開發的Android應用就是胡鬧。這條路線幾乎是專為電商和小遊戲行業準備的,如果公司有這方面的需求,Android程序員可以憑借平時自學的這方面技術完成任務。
6、VR
2015年底遊戲外設王者雷蛇推出了VR遊戲頭顯,2016年各大遊戲廠商和小工作室爭先恐後開發VR遊戲爭奪市場,開啟了“中國VR元年”。雖然目前VR主要用在娛樂領域,被很多人視為玩具,但是VR所具有的價值卻遠遠超出“玩具”的範疇。
前文討論遊戲引擎的時候沒說Unity-3d不是疏漏,而是要把Unity-3d放在這兒談。Unity-3d 是Unity公司開發的一個3D遊戲開發工具,近年來的新版本不斷加強對VR硬件系統的支持。Android程序員轉型VR不僅可以實現自己從小就想讓遊戲跳出四角方框的夢想,還有Unity-3d所用的C#語言本來就是嚷著“我不是Java語言”的Java語言的學習優勢。
轉型建議:VR現在正是一片藍海,只要自學能力夠強,轉型VR就像2015年在合肥買房一樣明智。當然前提是你能找到願意出錢的老板或投資人。
7、大數據
移動互聯網時代是一個科技發達,信息流通的時代,大數據就是這個高科技時代的產物。馬雲曾在演講中提到:未來的時代將不是IT時代,而是DT的時代。DT就是Data Technology(數據科技)的縮寫,大數據的合理利用與否成了很多行業成敗的關鍵。
移動互聯網經過這些年的發展,拿O2O和當噱頭已經唬不住投資人了。Hadoop也就自然而然受到了青睞,很多每4個月“生產”一批“兩年經驗”的“程序員”的培訓機構也問過玖哥:“Android和iOS現在不吃香了,你能幫我介紹幾個Hadoop講師嗎?”
轉型建議:與轉型Java後臺一樣,Android程序員轉型Hadoop也具備語言相通,特性相似的優勢。目前各大培訓機構已經如蠅逐臭爭相批量生產Hadoop程序員,如果你是因為陷入了他們培訓的Android程序員造成的紅海才轉型的話,建議你不要轉型,提升自己的競爭力才是王道。
8、人工智能和深度學習
前一陣子AlphaGo戰勝了人類世界的圍棋世界冠軍柯潔,轟動了全世界。柯潔認為AlphaGo是能夠打敗一切的圍棋上帝,這個說法玖哥不敢茍同,畢竟它沒有和“天”對弈過,但存在能“勝天半子”的人類——祁同偉。即使AlphaGo不能打敗一切,也沒有人有理由認為人工智能和深度學習不能成為IT屆的重要發展方向。
TensorFlow是谷歌基於DistBelief進行研發的第二代人工智能學習系統,具備極佳的靈活性和可延展性,在和人工智能相關的領域都有廣泛的應用。TensorFlow是開源的,會大大降低深度學習在各個行業中的應用難度,有遠大的發展前景。
轉型建議:盡管玖哥堅信將來會T(ensor)F(low)的boys受女性歡迎程度不亞於TFboys,但TensorFlow暫時很不成熟,這個“將來”距今多久還是未知數。
9、Android系統
Linux作為目前大多數服務器的操作系統,學習Linux的大多數人的目的是做一個運維。然而把腦洞再開大一點的話,Android程序員精通了Linux之後可以開發一套屬於自己的Android系統。《Linux大棚命令百篇》的作者吳鵬沖(筆名:Roc,和玖哥一樣也是水滸迷)和《循序漸進Linux》的作者高俊峰都送了一本自己的作品鼓勵他開發屬於自己的Android ORM。
這張照片攝於2016年3月30日玖哥拿著《循序漸進Linux(第二版)》回到母校的自習室裏攻讀想成為像高老師一樣能定制自己的Android系統的Linux專家的路上(雙關)。
轉型建議:如果Android程序員準備跳槽到生產手機等搭載Android系統的硬件廠商的話,學習Linux再合適不過了,否則就只能自己刷機玩了。
10、產品經理
每個人都可能變成自己最討厭的人,玖哥也不例外。他從《人人都是產品經理》中學到了產品經理的情懷,還從《從點子到產品》中學到了產品經理的技術。還有幸趕上了今年3月《從點子到產品》的作者劉飛收徒。關於玖哥轉型產品經理失敗的情況是一個發生在他和劉飛之間的“挖隋煬帝墳墓的開發商名叫楊勇”的故事:
2016年初,玖哥帶新人,沒有收劉飛(同名學弟)為徒
2017年初,劉飛帶新人,不肯收玖哥為徒
轉型建議:產品經理也是技術崗位,只不過寫的是給人看的需求文檔。如果一個Android程序員寫的代碼只能讓電腦看懂而不能讓負責維護的程序員看懂,那麽就不要轉型產品經理。
【寫在最後】
Android程序員轉型機會雖然多,但不要因為看招聘網站上某個職業平均工資高就轉型,隨波逐流的弄潮兒必然會在浪潮之巔摔得好慘。培訓機構常說“Android不吃香了,移動互聯網的寒冬來了”來吸引人報名學習速成的Hadoop和TensorFlow,其實遭遇寒冬的不是某個行業,而是某些基礎不好的人。
如果你也願意分享你的故事,請加51CTO開發者QQ交流群 312724475聯系群主小官,期待你精彩的故事!
挨踢部落故事匯(20):Android程序員的十大轉型之路