Android開發的技術層次

中國實現“軟件強國”之路,長路漫漫兮,任重而道遠!

(中國是軟件大國,“大”體現在有“海量”的"人山人海“的Null級和菜鳥級技術人員)


請點擊如下參考文章:

成爲編程巨星的唯一祕訣



Full Understanding                                              透徹理解


任何一種移動開發生態系統其技術人員都是呈現金字塔式分佈的。


我藉此也說說Developer和Programmer的區別。


Programmer是真正意義上的程序員,寫程序的。靈魂級
Developer是碼農,搬磚的,砌代碼,體力活。肉體級


做Developer的感覺就彷彿行屍走肉,被工作綁架,被代碼綁架,而不是駕馭代碼。

如果每天,你感覺自己彷彿就是一坨肉,每天把自己運到公司,靈魂出竅式,條件反射式地CODING,然後下班又運回家,回到家你才真正解脫,真正找到自我。 富士康的小弟小妹們也有同樣感覺。

那恭喜你,你就是一名“Developer”。


應該說,廣義程序員範圍內,99%都是Developer,只有1%才能稱之爲真正意義上的狹義的Programmer。

軟件行業也越來越變成,不需要每個人都具備創造力,而只需要大量軟件藍領的行業。

而Programmer也正是讓軟件行業保持持續創造力的靈魂力量。

其實,真正讓軟件行業不斷往前發展,進步的應該是那些或許根本不會編程的計算機科學家,這個暫時不在這篇文章探討的範疇。


未來軟件發展的趨勢,就是讓Programmer駕馭Developer


普遍意義上現在中國軟件行業的工程師分爲以下幾種


1)地板級,NULL級別:               同事驅動型,這種純粹是“鳥籠型”公司用來湊人頭的,“坐檯型選手”,不懂什麼是抽象。


興趣愛好:喜歡看《快樂大本營》之類的節目。

職場規劃:基本沒什麼想法,覺得搞IT還不錯,比一些小學同學混得好。

名人崇拜:曉得蓋茨是IT首富。


2)菜鳥級:                                   Google驅動型                  類庫王子,API王子,浮躁型選手,  一般沒有網絡就無法工作,,極度容易陷入比較模式,喜歡在論壇和QQ聊天羣裏面裝自己的B扯別個的蛋,又極度敏感,工作中擅長CPM模式(copy+paste+modify)。忽悠型技術人才,運氣好的時候,能混到一份不錯的工作。地板級和菜鳥級形成了中國程序員的主流人羣,其他級別的在中國都可以稱之爲“非主流程序員”,大腦基本不抽象思考。


興趣愛好:喜歡看一些成功學的書和名人自傳,相信 《我的成功可以複製》,要《作最好的自己》

職場規劃:有搞管理的迫切願望。

名人崇拜:喜歡李開復、馬雲。


3)大哥級:                                    官方文檔驅動型                 開始意識到獨立思維和抽象思維的重要性強迫自己去抽象思維,感慨虛度了大學時光,開始喜歡寫博客,有一定的抽象歸納概括能力,,能獨立寫程序,身邊有一定數量的技術小弟。英語方面已經能初步有能力實現無障礙閱讀。


興趣愛好:開始關注一些如《大道至簡》和《人月神話》之類的技術管理類書籍。

職場規劃:想做技術和管理兼顧型人才。

名人崇拜:瞭解約翰。卡馬克之類的人,開始知道高德納、迪科斯徹之類的人。


4)大俠級:                                   理論驅動型                        開始對理論書籍有獨特的鐘愛,什麼都喜歡上升到理論高度。能無障礙閱讀大型開源項目的源代碼,並理解其設計理念。開始寫一些簡單的框架和庫。抽象思維能力已達到“習慣級”。


興趣愛好:開始關注一些哲學方面入門級的讀物。開始喜歡寫一些心情隨記。

職場規劃:做好了做中國第二批技術老人的準備。

名人崇拜:瞭解高德納、迪科斯徹之類人,並知道的更多的關於ACM獲獎人員的情況及鑽研領域的情況。



5)大牛級:                                    論文驅動型                         喜歡閱讀論文,並隨時關注前沿動態,能很容易地開發一些大型項目原型。代碼水平已經達到遊刃有餘的框架級,抽象思維能力已達到“本能級”。


興趣愛好:開始閱讀一些哲學方面提高級的讀物,並對人文領域產生濃厚興趣,會閱讀一些小說和散文,有寫散文的習慣。

職場規劃:已經是技術老人了。

名人崇拜:對ACM獲獎人的情況及鑽研領域瞭如指掌,並已經開始把個人崇拜轉移到其他領域。



6)大師級:                                    直接寫出對別人有實際意義的論文, 在大陸屬“稀有瀕危物種”。


興趣愛好: unknown

職場規劃: unknown

名人崇拜: unknown






Android系統也是一樣,在龐大的Android開發人員羣體中,我認爲可以由低到高分爲以下四個層次:


1)應用層開發


使用java語言,基於android的框架和類庫,進行應用層程序的開發。

這類開發一般依賴於短期記憶,也就是我們所說的類庫王子、API王子。

這類人員,只要會UI佈局,熟悉常用的widget,寫幾個消息回調函數,鼓搗一下網絡類,簡單的數據庫操作,會讀寫保存點配置信息,調用一下播放器,發一下短消息。

再用一哈比如Gallery這樣外行看起來表面上比較炫的類。


這類開發人員一般自我感覺良好,比較自大,認爲android開發也不過如此。

這類技術門檻很低,這類開發人員中的真正的熟手和高手,是充分熟悉官方文檔的,已經過了什麼都去Google的階段,達到了查什麼都直接去查

http://developer.android.com/reference/packages.html  的地步。

而且在大腦中已經形成了一個官方文檔的索引,查什麼都能達到時間複雜度爲常數的地步。


充分利用好官方文檔,全部類庫在大腦中有比較有條路的記憶,告別了雜亂無章的短期記憶。

成爲了一個高級的“類庫王子”。


雖然依然知其然不知其所以然,但是已經從“碼農”升級爲一個“高級碼農”。


所有的框架和高級語言技術(特別是虛擬機技術),其實都是爲了實現軟件的工程化,爲廣大藍領工人準備的。這些工程技術,降低了軟件開發的難度,使一些比較難的,抽象的晦澀的高級技術和概念完全對應用層開發人員透明,但是這是以犧牲一定的軟件效率爲代價的。


不過還好,軟件開發不是競技比賽,不是以難度值爲判斷標準的,實用、經濟、快速適應市場纔是最重要的,同時飛速的硬件和底層基礎性軟件系統的研究進展,和自始至終的軟件分層的思想,讓一切阻擋軟件工程化的障礙都不再存在。


這部分人中的大部分人,一般比較注重經濟利益,有一定的經濟壓力。尚未把編程作爲自己的一種愛好和自我實現的途徑。多半感興趣的是怎麼找到一份好工作,怎麼得到一份好薪水。但是他們忽視了,從長遠來看,中國的軟件職場,最終的發展方向肯定不是“五分運氣,三分做人,兩分技術”。對於一個技術人員來說,技術纔是獲得競爭優勢的唯一途徑。在技術上沒有競爭優勢,你就失去了一個技術人員的安身立命之本


他們

盲目崇拜所謂的“創新和創意”,誤以爲那是不用刻苦鑽研技術而又改變自己命運的捷徑!

輕信那些所謂的”創富神話“,殊不知如果離開了紮實的技術功底而追逐那些“快餐技術”,而去妄談創富只不過是誤入了“你方唱罷我登場”的衆多“技術生態圈的公關陷阱”。成爲技術沙場上“一將功成萬骨枯”的犧牲品。


他們也推崇所謂的“實用主義”,強調“做出好產品纔是王道”,但是真正的好產品,都離不開一個好的技術平臺。另外不對自己實用的技術平臺,有比較深入的理解,是不可能做出真正的好產品的。



2)中間層開發


中間層是爲應用層提供  “Infrastructure”  基礎設施。 其需要更加深厚的技術功底。

不過我覺得,從應用層開發達到一定技術水平後,轉到中間層或者稱之爲“框架層”開發的人,比一開始就坐框架層開發的人,更容易深入。

做過應用層開發的人,更有所謂的“切膚之疼”,從而更能理解一些策略和爲什麼的原理性的東西。


使用C/C++語言,基於NDK JNI方式的開發。

需要對android的整體框架機制和android系統codebase非常熟悉.

一般都會自己自己下載android的系統源代碼,自己編譯IMAGE.

熟悉android系統的Custom Building System.

能修改和擴展Android的框架和 服務.

移植和定製nativelibray 和框架 ,如opencore,opengl,webkit

定製一套系統的UI,製作點ROM

也就是我們國內所謂的自主研發的手機操作系統。


這類開發人員一般屬於稍微資深一點的,一般都有強烈的技術飢餓感,覺得自己懂的很少,不停的去提高充實自己。


3)操作系統級別的開發,系統定製

熟悉Linux驅動開發,Linux內核結構

針對特定硬件的移植

這類開發的技術含量其實和中間層開發差不太多,從某種意義上還不如。

其實,驅動開發更主要的要求需要一定的硬件知識。

這類開發人員一般是各大手機廠家的開發人員,由於接觸的面比較窄,技術飢餓感不如中間層開發人員。


第二,第三層的開發人員通常在國內的廠家任職,比如魅族、小米、HTC。

只有這個樣的廠家經過一定的技術沉澱,纔會向最高層進軍,中國軟件行業纔會做出真正意義上的自主的平臺。



4)找出Android的不足,幫助Google持續改進Android

這種人是真正意義上的android程序員,他們會有選擇的去閱讀android框架源代碼,會認真的去閱讀dalvik的源代碼。

自身知識結構也比較成熟,知識面比較廣。

會很多上面三類人都不具有的調試和跟蹤技巧。

對一些操作系統和平臺設計的思想和策略,瞭如指掌。


在問題域和技術域之間左右逢源。


這些人,多半也精通其他移動平臺,比如Symbian,Meego,IOS,WP

甚至Windows NT, Linux  edition for Server.等桌面或者服務器操作系統。




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