Android 企業(yè)招聘需求與開發(fā)者狀況簡析
隨著 Android 大行其道,目前國內(nèi)也有越來越多的企業(yè)投身其中,而從企業(yè)的招聘與人才缺口的觀察中,還是讓我找到了那么一些不同。也比較好的解釋了為什么現(xiàn)在企業(yè)很難招到 Android 高端人才,而又有一些 Android 開發(fā)者面對(duì)著高薪也不愿意去企業(yè)內(nèi)就職。
首先我想明確一點(diǎn),那就是招聘和應(yīng)聘這回事,其實(shí)是一個(gè)互利的過程,企業(yè)需要有人來為其項(xiàng)目進(jìn)行服務(wù),而開發(fā)者也希望通過自己的勞動(dòng),來為自己謀取福利。當(dāng)雙方通過協(xié)商達(dá)成一致后,招聘就成立了,而目前的主要問題,并不是協(xié)商,而是信息,雙方需求信息的可靠性,對(duì)對(duì)方需求的理解情況,將直接導(dǎo)致一次招聘的成敗。
我的 gtalk 上有很多獵頭,有很多都是專職做移動(dòng)互聯(lián)網(wǎng)方面的推薦的,從這一方面來看,也可以說國內(nèi)移動(dòng)互聯(lián)網(wǎng)發(fā)展得如火如荼吧,也有一些獵頭是有技術(shù)背景,很有經(jīng)驗(yàn)的。通過與他們交談,我大致可以提取到以下的一些企業(yè)需求:
1) 三年以上 Android 開發(fā)經(jīng)驗(yàn)
2) 曾經(jīng)獨(dú)自完成過一個(gè)較大型的項(xiàng)目,例如微博客戶端,手機(jī)閱讀器等
3) 精通 Java /J2EE 開發(fā)
4) 熟悉 Android 系統(tǒng)構(gòu)成,熟讀 Android 源碼的優(yōu)先
5) 可以把 Android 程序界面做成 iPhone 那樣的優(yōu)先
6) 能破解,修改他人程序的優(yōu)先
而從我自己與業(yè)內(nèi)的開發(fā)人員交流,以及我面試到的人才來說,也可以大致提取出人才對(duì)企業(yè)的需求
1) 薪資位于行業(yè)內(nèi)中高水平
2) 能按自己的想法編寫代碼,不要有過多的限制,特別是不要強(qiáng)迫寫文檔
3) 在想做一些自己的研究的時(shí)候,可以占用上班時(shí)間,甚至停下手里的工作
4) 有一個(gè)自由上國外網(wǎng)站的環(huán)境
5) 做過一陣子之后,可以不再寫代碼,轉(zhuǎn)做管理
簡單的對(duì)比一下,身為開發(fā)者的你是不是覺得有些招聘需求很無喱頭,不屑和這樣的公司為伍;或者身為 HR 的你覺得開發(fā)者要求太高,要在簡歷篩選的時(shí)候先扔掉他們的?在這種情況下,人才能夠適配到適合的崗位,幾乎就是夢(mèng)話。
下面我簡單的分析一下企業(yè)的需求。
一) N年的經(jīng)驗(yàn)到底重不重要?
誰都知道 Android 是一個(gè)新領(lǐng)域,它是 2008 年底才興起,并被人廣泛得知,現(xiàn)在是 2011 年底,正好三年,難道你想招一個(gè)從 2008 年就搞 Android 的人?這樣的人并不是沒有,但是也不多。因此 Android 領(lǐng)域內(nèi)的招聘,凡是遇到“三年”這個(gè)需求的,也就固定了獵頭只能找那些人。其他的 Android 工程師,沒有三年那么久的經(jīng)驗(yàn),但是并不代表他們寫不出優(yōu)秀的應(yīng)用。說到底 Android 開發(fā)并不困難,我在盛大做 Android 培訓(xùn)數(shù)十期,也遇到過不少完全沒有編程基礎(chǔ)的人,一周培訓(xùn)可以通過考試,然后再一個(gè)月進(jìn)項(xiàng)目組開發(fā)實(shí)習(xí),出來后換崗直接做公司項(xiàng)目,現(xiàn)在也做得好好的。關(guān)鍵問題在于有沒有學(xué)習(xí)欲望,愿不愿意提升自己,經(jīng)驗(yàn)可以讓一個(gè)人在遇到某些特定問題時(shí),快速拿出解決方案,減少一定的成本,但是有的時(shí)候,經(jīng)驗(yàn)也會(huì)固化一個(gè)人的思想,使他不愿往新的方向走。我需要有經(jīng)驗(yàn)的人,但是我更需要勇于創(chuàng)新的人。
二) 獨(dú)自完成大型項(xiàng)目指的是什么
我曾經(jīng)寫過一篇文章,說騎士作戰(zhàn)和兵團(tuán)作戰(zhàn)的。雖然目前的移動(dòng)互聯(lián)網(wǎng)世界里,越來越適合單兵作戰(zhàn),但是同樣也不應(yīng)該拋棄多人合作的模式。往外說開,Android 也不是一個(gè)人“獨(dú)自”完成的。另外什么是大型項(xiàng)目,在這點(diǎn)上完全沒個(gè)準(zhǔn),微博客戶端是大型項(xiàng)目嗎?閱讀器是大型項(xiàng)目嗎?可以是,也可以不是。在我的理解上,一個(gè)項(xiàng)目只要包含明確起止時(shí)間,有具體詳細(xì)的需求和策劃方案,有成果時(shí)間約束性,有組織架構(gòu),那么它就是一個(gè)大型項(xiàng)目。這樣的東西一個(gè)人能完成嗎?我不排除這個(gè)可能性,但是很難。一般情況下,企業(yè)需要了解的,是一個(gè)開發(fā)人員對(duì)代碼的掌控能力,不妨將這一條改為“代碼掌控力5萬行”或是其他。
三) 精通 Java / J2EE?
雖然 Android 是采用 Java 作為其主要開發(fā)語言,但是要求精通 Java 或 J2EE,這著實(shí)有點(diǎn)扯蛋。移動(dòng)開發(fā)的思想和 PC 或服務(wù)器的開發(fā)思想幾乎完全沒有一致性,精通那些做什么,不如說熟悉 Java 語法來得實(shí)際。至于說 J2EE,和 Android 更是半毛錢關(guān)系都沒有。說到這里,還得再提一下,有一些企業(yè)招聘時(shí),會(huì)附加說有 C 語言經(jīng)驗(yàn)的優(yōu)先,這是對(duì)的,一個(gè)精通 C 的人,的確可以在 Android 下大有作為,雖然他們寫的東西往往用戶看不到。舉個(gè)簡單的例子,加解密模塊,當(dāng)然用 Java 也可以寫,但是用 C 寫可以大幅提高性能,你是用戶的話,你會(huì)選性能高的還是低的,不用說了吧。另外就是 C 擁有***的可移植性,這點(diǎn)也不用說了。
四) 熟悉 Android 架構(gòu)和源碼
我想這點(diǎn)不用說了,可以說是業(yè)內(nèi)的共識(shí),如果自己沒下載過 Android 代碼,沒編譯過 Android 系統(tǒng),那還是花點(diǎn)時(shí)間自己研究一下吧。唯一讓我不爽的地方,就是很多企業(yè)口口聲聲的要求開發(fā)人員熟讀 Android 源碼,可以在源碼基礎(chǔ)上做修改,但是連一臺(tái) Linux 都不給配,難道讓人都去折騰 CygWin?
五) 把 Android 做成 iPhone?
每當(dāng)我聽到這種需求,我都會(huì)忍不住想罵人,想把程序做得像 iPhone 的界面,為啥不直接搞 iPhone 開發(fā),非要在 Android 上折騰那些,搞得一點(diǎn)個(gè)性都沒有。以上只是我個(gè)人的看法,當(dāng)然我也承認(rèn) iOS 在很多方面的確做得很好,值得學(xué)習(xí)。但是有一點(diǎn)始終請(qǐng)你記得,移動(dòng)設(shè)備不是 PC,在 PC 做開發(fā),你可以做到 Windows,Linux,Mac 各平臺(tái)行為表現(xiàn)都一樣(如 Eclipse),但是在移動(dòng)設(shè)備上,應(yīng)該盡可能的發(fā)揮平臺(tái)特性,讓用戶覺得他購買的設(shè)備物有所值,追求幾個(gè)平臺(tái)表現(xiàn)形式一樣,硬要把 Android 搞成 iPhone 的,我只想問你們,它們真的一樣么?
六) 會(huì)破解和修改
這是我聽到的最無喱頭的招聘需求了,也許是中國特色吧。很多獵頭給我打電話,問著問著就會(huì)提到,“你會(huì)破解軟件的吧”,“你有沒有做過給一個(gè)已經(jīng)發(fā)布的軟件加上自己的廣告啊”諸如此類的話。我就不明白了,這種技術(shù)不是應(yīng)該被封印的么?行業(yè)里面用破解手段的,僅僅是為了學(xué)習(xí)研究,如果用來取消他人的收費(fèi)限制,或是反編譯后惡意修改,這不是一個(gè)正當(dāng)?shù)募夹g(shù)人該做的事。作為我個(gè)人來說,我鄙視這樣的公司,但是我也無法阻止,或許你作為一個(gè)開發(fā)者,在應(yīng)聘的時(shí)候看到這個(gè)需求,你知道怎么做。Google Group 上曾有人這樣說,“雖然我能力有限,也沒做過什么好產(chǎn)品,但是我的每一行代碼都是自己寫的,光憑這點(diǎn)就比國內(nèi)很多公司強(qiáng)”。很多人并不明白代碼在開發(fā)者心目中的地位。
好了,說完了企業(yè),再說說開發(fā)者吧,不知你有沒有發(fā)現(xiàn)一個(gè)現(xiàn)象,就是越來越多的開發(fā)者,都不再趨向于寫代碼,而且趨向于“指揮他人寫代碼”。也許是因?yàn)閷懘a太累,或者是不想老是受人指揮,又或者是覺得自己的年齡不再適合,總之會(huì)有一個(gè)理由。但是從我個(gè)人來說,我還是偏愛寫代碼,與策劃斗,與測(cè)試斗,與電腦斗,其樂無窮。
#p#
下面來說說開發(fā)者的需求吧,與企業(yè)的完全不一樣,也許企業(yè)的招聘人員,真的該看看什么是應(yīng)聘者真正的需求。
一) 薪資待遇
一個(gè)開發(fā)者不要高薪,幾乎是不可能的,應(yīng)屆畢業(yè)生做 Android 開發(fā),往往也能拿 8~10K,足以證明這個(gè)行業(yè)有多火(當(dāng)然你也可以說它是泡沫,我不反對(duì))。這個(gè)我不想多說,要求高薪是對(duì)的,當(dāng)然前提是自己清楚自己的能力,如果你說你剛學(xué) Android 開發(fā)一個(gè)月,連 eclipse 都配得不熟練,就想要 20K 的工資,那我只能對(duì)你說,have a good day dream :)
二) 按自己的想法寫代碼,不寫文檔
的確,做開發(fā)的都比較隨性,就拿我自己來說,我很有可能一整天什么都寫不出來,也有可能啥時(shí)靈感來了,兩天兩夜不睡覺也要把東西寫出來。所以對(duì)于開發(fā)者來說,一定程度上的自由很重要。如果一個(gè)項(xiàng)目只有你一個(gè)人做,那么想怎么寫代碼都隨你。但是對(duì)于一個(gè)需要多人合作的項(xiàng)目來說,完善的代碼規(guī)范和文檔也是有必要的,它可以幫助到以后的維護(hù)。開發(fā)人員不愿寫文檔是不對(duì)的,畢竟沒有人比身處前線的更了解每句代碼的作用,實(shí)在不愿寫文檔的,也把注釋寫得漂亮點(diǎn)吧,省得以后麻煩,如果文檔注釋都不愿寫的,那你還是自己寫個(gè)應(yīng)用傳Market吧。
三) 可以占用上班時(shí)間做自己的研究
其實(shí)現(xiàn)在允許員工這么做的公司不少的,所以基本上不必?fù)?dān)心,當(dāng)然這還是有前提,就是在你已完成了當(dāng)前自己手頭的工作,擁有空余時(shí)間時(shí),可以這么干。要說停下手里的工作來做自己的研究,這就比較難了,先看看自己遇到的是什么主吧。做個(gè)廣告,盛大創(chuàng)新院是鼓勵(lì)員工這么干的,100%的時(shí)間都可以用來做自己的研究,而且創(chuàng)新院也有很多 Android 項(xiàng)目,非常棒。
四) 自由上網(wǎng)
相信這點(diǎn)也不需要多說,國內(nèi)的網(wǎng)絡(luò)環(huán)境大家有目共睹。對(duì)于這樣的要求,企業(yè)有什么理由不滿足呢?我以前也待過一個(gè)完全不允許員工上網(wǎng)的公司,生不如死。對(duì)于現(xiàn)在的移動(dòng)互聯(lián)網(wǎng)企業(yè),沒有網(wǎng)絡(luò)還做啥事?曾經(jīng)有人跟我這么說過,“連個(gè) Android SDK都下不到,這樣的公司還做啥開發(fā)”,“不給我上 twitter,錢再多有屁用”,這雖然可能是一時(shí)沖動(dòng)或是面試時(shí)受了點(diǎn)氣才說出來的話,但是目前開發(fā)者對(duì)網(wǎng)絡(luò)的需求,的確日益強(qiáng)烈了。
五) 要求有轉(zhuǎn)做管理的機(jī)會(huì)
其實(shí)這點(diǎn)我很能理解,因?yàn)槲乙彩菑倪@條路走過來的,被策劃和測(cè)試壓著通宵加班并不好過,我也曾經(jīng)很想很想躍升比他們更高的職位,然后把那些欺負(fù)過我的人全炒了。但是當(dāng)我真的坐上了經(jīng)理的位子,手下有了一班人之后,我開始理解最初身為程序員的那些事。其實(shí)說白了也很簡單,因?yàn)楣疽?xiàng)目,項(xiàng)目就要人來做,項(xiàng)目組里有各種各樣的人,有各種各樣的溝通問題。開發(fā)的人往往理解代碼很在行,但是理解需求卻往往不那么順利,一趟代碼寫下來,與需求往往有出入,這能不改嗎?也難怪策劃和測(cè)試要盯著了,大家都承受了壓力。相信你在網(wǎng)上也看到過很多描述程序員悲慘生活的惡搞圖片,而事實(shí)上,程序員要的并不是那個(gè)管理職位,而是要一個(gè)有人傾聽,認(rèn)同其發(fā)言的機(jī)會(huì),他們也需要被尊重。
對(duì)于企業(yè)來說,一個(gè)合格的 Android 開發(fā)人員可能是這樣的
1) 熟悉 Android 框架,閱讀過 Android 源碼
2) 熟悉 Andorid SDK,特別是網(wǎng)絡(luò),線程
3) 有較強(qiáng)的代碼掌控力
4) 懂一點(diǎn) NDK 或 C (精通就更好了)
5) 使用 Git 來管理代碼
開發(fā)者的需求總結(jié)起來也很簡單
1) 符合自己能力與產(chǎn)出的薪資待遇
2) 一個(gè)能夠發(fā)揮自己能力,且受到尊重的環(huán)境
3) 可以滿足自己學(xué)習(xí)、提升能力的愿望
4) 優(yōu)秀的網(wǎng)絡(luò)環(huán)境
到了這里,身為開發(fā)者的你,是不是覺得企業(yè)的需求其實(shí)也不那么扯蛋;身為 HR 的你是不是覺得開發(fā)者也挺可愛的。
回到一開始說的,招聘和應(yīng)聘是一個(gè)互利的過程,企業(yè)需要想清楚自己要什么,能給什么,想清楚自己的發(fā)展計(jì)劃,千萬不要為了與同行搶人才,提出各種不合理的需求,比如說明明是做客戶端的,卻說要有 ROM 開發(fā)的經(jīng)驗(yàn),這樣會(huì)把人嚇跑,就算招到了人才,他也會(huì)認(rèn)為自己不受重用,對(duì)企業(yè)越來越?jīng)]有信心。而作為開發(fā)者,要明確自己的能力,做好自己的職業(yè)規(guī)劃,沒有哪個(gè)企業(yè)愿意招一個(gè)光說不做,或是不知道什么時(shí)候就跑路的人。
在當(dāng)前移動(dòng)互聯(lián)網(wǎng)越來越火的情況下,無論企業(yè)或是開發(fā)者,都應(yīng)該明確的想清楚,自己想要什么,想做什么,以靠譜的信息進(jìn)行人才資源的交換及利用。不浪費(fèi)人才,不惡意競(jìng)爭,給予良好環(huán)境,給予尊重。