一、R&D概念的分拆
搞研發(fā)的掏出名片來一般會印上這么個部門:R&D。所謂 R&D就是Research & Develop,研究與開發(fā),所以簡稱研發(fā)。我曾經(jīng)碰到個高人,強調(diào)把這兩詞拆開來單獨理解。“研究”就是把一個團隊知識之外的知識點弄懂,引入項目中使用;“開發(fā)”就是把已經(jīng)明白的東西做出來。
二、為什么多數(shù)程序員更喜歡搞研究
一般來說,研究人員比較囂張,不喜歡按規(guī)矩行事,理想狀態(tài)是中國文化里那種特立獨行的大俠,一人單挑各種技術(shù)難題、熬夜數(shù)周最后搞定,寫個DEMO CODE解決了關(guān)鍵問題,最多再搞篇技術(shù)總結(jié)文檔,就可以長噓一口氣,等待眾同事膜拜;而開發(fā)人員相對比較孫子,膽敢做點不合規(guī)矩的事,那就是藐視流程藐視公司制度,要鎮(zhèn)壓的。所以在研發(fā)領域,絕大多數(shù)人比較向往研究崗位,待遇好地位高、可以單干、能夠證明自己的智商,最重要的是能夠不斷做新的東西不用重復勞動;而開發(fā)人員是苦力,整天做些“體力活”,比較沒有技術(shù)含量,也難有比較大的長進,工作本質(zhì)和手機生產(chǎn)線上按圖紙插元器件的小妹差不了多少。
我也遇到過某些比較特別的、喜歡做重復性勞動的、喜歡在已知領做工程開發(fā)的程序員,實際上這些程序員沒有很好的職業(yè)素養(yǎng),而且基本都缺乏上進心,朽木不可雕也。
三、重研究輕開發(fā)的中小型團隊多數(shù)下場悲哀
但對于中小型團隊,尤其是創(chuàng)業(yè)階段的團隊,如果只做開發(fā)而不做研究,運氣好還能茍延殘喘一陣子,養(yǎng)活團隊估計還沒問題;而側(cè)重研究而沒有開發(fā),絕對是死路一條,結(jié)果就是工程師做完研究,砍完大BOSS獲得經(jīng)驗值和等級的快速提升(我稱為“鍍金”)完畢后,已經(jīng)把投資人的錢燒光了,留個廢品給投資人,然后各自高飛。
比如一個創(chuàng)業(yè)階段的小團隊想做個很炫的UI框架能和iPhone媲美;或者想自己做個3D游戲引擎;或者想做一個矢量地圖引擎。不僅多數(shù)程序員喜歡砍這種高經(jīng)驗值的大BOSS,投資人也很難擋住這種誘惑力。但如果不是在該領域已有很深厚的積累,而是在只掌握了一二成核心技術(shù)的情況下去做這種研究,試圖把這種高風險項目做出來以獲得高回報的話,那基本上等于找死。高度研究型項目對于中小型團隊來說,就是投資人的高風險,程序員的高回報。
我就有過這方面的教訓。本人天賦不咋地,04年底從零開始奉命研究播放器核心,死磕TCPMP代碼,到07年自己寫出一個播放器核心的時候,我這組人已經(jīng)是換第三撥了,前兩撥十幾個兄弟都耐不住寂寞離職了。另一組人則有企業(yè)博士后帶隊,對MP3、REAL、H264的解碼效率進行優(yōu)化,研究也持續(xù)了兩年多,換了兩撥人馬。最后這個播放器和優(yōu)化了效率的解碼器也沒在手機電視市場爆發(fā)的時候為公司帶來多少價值。還好是個大公司養(yǎng)著這兩個“研究團隊”,要是換小公司的話,兩三年投入不出產(chǎn)品,早就死了。
四、研究和開發(fā)的資源布局
既然是R&D并提,說明兩者基本上密不可分。做軟件不可避免地、或多或少都會有研究的成分,而不純粹是工程開發(fā)。所以出現(xiàn)下面兩種資源布局:
(1)有的公司是把研究和開發(fā)任務混在一起,平均分給每個工程師;
(2)有的公司則把兩者割裂開,有專門的精英團隊做研究,有專門的工程團隊做開發(fā)。
有些軟件團隊會有這樣的追求:少數(shù)幾個大牛搞定一個開發(fā)框架,然后用月薪兩三千塊錢大量招“代碼工人”進來,快速開發(fā)出客戶需求。這是一種“軟件流水線化生產(chǎn)”的思路。當我們把這種軟件公司的模式比作“中國制造”的時候,就發(fā)現(xiàn)這很有趣。這種模式在國內(nèi)做企業(yè)開發(fā)(ERP、CRM、OA等)和網(wǎng)絡游戲開發(fā)的公司中被廣泛采用,