任何一種移動開發生態系統其技術人員都是呈現金字塔式分佈的。我藉此也說說Developer和Programmer的區別:html
Programmer是真正意義上的程序員,寫程序的。靈魂級java
Developer是碼農,搬磚的,砌代碼,體力活。肉體級android
作Developer的感受就彷彿行屍走肉,被工做綁架,被代碼綁架,而不是駕馭代碼。若是天天,你感受本身彷彿就是一坨肉,天天把本身運到公司, 靈魂出竅式,條件反射式地CODING,而後下班又運回家,回到家你才真正解脫,真正找到自我。富士康的小弟小妹們也有一樣感受。那恭喜你,你就是一名 「Developer」。應該說,廣義程序員範圍內,99%都是Developer,只有1%才能稱之爲真正意義上的狹義的Programmer。軟件行 業也愈來愈變成,不須要每一個人都具有創造力,而只須要大量軟件藍領的行業。而Programmer也正是讓軟件行業保持持續創造力的靈魂力量。程序員
其實,真正讓軟件行業不斷往前發展,進步的應該是那些或許根本不會編程的計算機科學家,這個暫時不在這篇文章探討的範疇。web
將來軟件發展的趨勢,就是「讓Programmer駕馭Developer」
廣泛意義上如今中國軟件行業的工程師分爲如下幾種數據庫
1)地板級,NULL級別 編程
同事驅動型,這種純粹是「鳥籠型」公司用來湊人頭的,「坐檯型選手」。服務器
2)菜鳥級網絡
Google驅動型,類庫王子,API王子,浮躁型選手,通常沒有網絡就沒法工做,極度容易陷入比較模式,喜歡在論壇和QQ聊天羣裏面裝本身的B扯別個的蛋,又極度敏感,工做中擅長CPM模式(copy+paste+modify)。忽悠型技術人才,運氣好的時候,能混到一份不錯的工做。地板級和菜鳥級造成了中國程序員的主流人羣,其餘級別的在中國均可以稱之爲「非主流程序員」。框架
3)大哥級
官方文檔驅動型,開始有獨立思考抽象問題的習慣,感慨虛度了大學時光,開始喜歡寫博客,有必定的概括歸納能力,能獨立寫程序,身邊有必定數量的技術小弟。英語方面已經能初步有能力實現無障礙閱讀。
4)大俠級
理論驅動型,開始對理論書籍有獨特的鐘愛,什麼都喜歡上升到理論高度。能無障礙閱讀大型開源項目的源代碼,並理解其設計理念。
5)大牛級
論文驅動型,喜歡閱讀論文,並隨時關注前沿動態,能很容易地開發一些大型項目原型。
6)大師級
直接寫出對別人有實際意義的論文, 在大陸屬「稀有瀕危物種」。
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等桌面或者服務器操做系。
轉自:http://blog.csdn.net/theorytree/article/details/6649825