為什么我還在編程寫代碼
人們通常認(rèn)為,隨著你不斷成長(zhǎng)你可能不再承擔(dān)像是編寫程序這樣的實(shí)際工作,而是轉(zhuǎn)而從事更高層次像是管理團(tuán)隊(duì)和募集資金這樣的任務(wù)。在學(xué)術(shù)界尤其如此,“真正的教授”會(huì)把細(xì)節(jié)分配出去只負(fù)責(zé)“宏觀的事物”。換句話說(shuō),組織會(huì)呈現(xiàn)縱向協(xié)作:在這樣的組織結(jié)構(gòu)里,位于頂層的人負(fù)責(zé)監(jiān)督其他(廉價(jià))的雇員。
在研究領(lǐng)域,這意味著資深科學(xué)家把想法交給青年科學(xué)家去實(shí)現(xiàn)。世易時(shí)移,資深科學(xué)家可能無(wú)法完成青年科學(xué)家從事的工作,但是他們會(huì)轉(zhuǎn)變成募集科研資金的專家。這個(gè)模型會(huì)不斷放大:資深科學(xué)家領(lǐng)導(dǎo)中層科學(xué)家,而后者負(fù)責(zé)管理年輕的科學(xué)家,如此這般。Jorge Cham將這種模型稱為Profzi模式,因?yàn)橹挥匈Y金充足且不斷增加的情況下這種模式才能運(yùn)作得更好。
人們通常認(rèn)為,隨著你不斷成長(zhǎng)你可能不再承擔(dān)像是編寫程序這樣的實(shí)際工作,而是轉(zhuǎn)而從事更高層次像是管理團(tuán)隊(duì)和募集資金這樣的任務(wù)。在學(xué)術(shù)界尤其如此,“真正的教授”會(huì)把細(xì)節(jié)分配出去只負(fù)責(zé)“宏觀的事物”。換句話說(shuō),組織會(huì)呈現(xiàn)縱向協(xié)作: 在這樣的組織結(jié)構(gòu)里,位于頂層的人負(fù)責(zé)監(jiān)督其他(廉價(jià))的雇員。在研究領(lǐng)域,這意味著資深科學(xué)家把想法交給青年科學(xué)家去實(shí)現(xiàn)。世易時(shí)移,資深科學(xué)家可能無(wú) 法完成青年科學(xué)家從事的工作,但是他們會(huì)轉(zhuǎn)變成募集科研資金的專家。這個(gè)模型會(huì)不斷放大:資深科學(xué)家領(lǐng)導(dǎo)中層科學(xué)家,而后者負(fù)責(zé)管理年輕的科學(xué)家,如此這 般。Jorge Cham將這種模型稱為Profzi模式,因?yàn)橹挥匈Y金充足且不斷增加的情況下這種模式才能運(yùn)作得更好。
與之對(duì)應(yīng)的是橫向協(xié)作。在橫向合作中,資深科學(xué)家會(huì)參與一切活動(dòng),從一個(gè)偉大的創(chuàng)意到***的實(shí)現(xiàn)。他們會(huì)盡可能地避免繁雜的工作或者開(kāi)動(dòng)腦筋將其自動(dòng)化。 通常協(xié)作是為了獲得不同的觀點(diǎn)或者互補(bǔ)的知識(shí)。即使資金緊張這種模式依然有效,但當(dāng)很多人員加入時(shí)會(huì)產(chǎn)生各種問(wèn)題——橫向協(xié)作過(guò)于地緊密。
(本文作者:加拿大新不倫瑞克大學(xué)副教授Daniel Lemire) 不同的模式分別適用于不同類型的工作。我認(rèn)為縱向協(xié)作適用于長(zhǎng)期且可預(yù)期結(jié)果的計(jì)劃,橫向協(xié)作適用于需要機(jī)遇和“瘋狂”創(chuàng)意的情況。
我傾向橫向協(xié)作,標(biāo)志之一就是盡管年紀(jì)很大但我還在編程。這是不同尋常的,以至于人們會(huì)為此皺起眉頭。有些編程工作需要很多時(shí)間投入,一年中我會(huì)花2到3 個(gè)月編寫程序。也許我的時(shí)間是非常寶貴的,不應(yīng)該浪費(fèi)在類似編程這樣的底層工作。我完全可以花一些錢把它們交給別人完成。那么為什么我還需要編程?
也許Donald Knuth大師的這段話就是對(duì)此***的注解:
那些致力于更高層次和抽象思維的人們通常會(huì)錯(cuò)誤地認(rèn)為低層次的具體想法相對(duì)而言沒(méi)有價(jià)值而且很可能被人遺忘。…… 恰恰相反,***的計(jì)算機(jī)科學(xué)家需要透徹地了解計(jì)算機(jī)實(shí)際運(yùn)行的基本概念,而且計(jì)算機(jī)科學(xué)的精髓就在于能夠同時(shí)理解眾多層次抽象的能力。
然而我也有自己的看法:
• 我希望自己的工作是重要且具有影響力的。即便是被廣泛引用的研究論文都少有人閱讀,很少有研究論文能夠產(chǎn)生重要的影響。然而,從事和軟件相關(guān)的工作會(huì)相對(duì)容易。比如,最近Facebook的一個(gè)小組集成了我發(fā)布在Apache Hive上的一個(gè)壓縮位圖索引庫(kù):基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù)框架。如果為Facebook是否有人讀過(guò)我為這個(gè)軟件撰寫的論文打賭,我肯定會(huì)賺到一大筆錢。
• 一次又一次的實(shí)踐,迫使對(duì)自己的想法有著更好地理解。通常的情況是,在論文里看上去非常棒的想法實(shí)現(xiàn)起來(lái)卻非常棘手。我也經(jīng)常在實(shí)施過(guò)程中發(fā)現(xiàn)文章中數(shù)學(xué)論證存在bug,怎么可能把這項(xiàng)工作外包給其他人呢?也許我可以這么做,但結(jié)果一定不會(huì)得到豐碩的成果。
• 隨著時(shí)間的推移,你的編程水平會(huì)變得更好。我花費(fèi)幾十年時(shí)間鍛煉自己的專長(zhǎng)。當(dāng)你花上幾天時(shí)間從頭開(kāi)始并解掉一個(gè)難題之后,了解到別人可能要花上幾周甚至幾個(gè)月的時(shí)間,這種感覺(jué)是非常享受的。
假設(shè)我的論點(diǎn)合理,而且Donald Knuth也贊同我的觀點(diǎn),那么為什么當(dāng)我承認(rèn)自己是一名程序員科學(xué)家時(shí)人們會(huì)對(duì)此驚訝不已呢?我想這是因?yàn)槿藗儠?huì)拒絕編程這樣低層次的工作,這一點(diǎn)從《有閑階級(jí)論》 中就可以看出。實(shí)際上,我們往往追求名望而不是實(shí)用。制作工具、烹飪或種田不會(huì)帶來(lái)聲望。為了***限度地提升自己的聲望,你必須上升到有閑階級(jí):你的工作 一定不要產(chǎn)生實(shí)際的作用。因此,成為一名CEO或政客要比成為護(hù)士或者廚師帶來(lái)更大的聲望。那些離現(xiàn)實(shí)世界更遠(yuǎn)的科學(xué)家們會(huì)更加有聲望。編程是一項(xiàng)類似制 作工具的工作,因此來(lái)自有閑階級(jí)的人們不會(huì)喜歡。人們會(huì)把自己稱作工程師、分析師或是開(kāi)發(fā)者,但很少稱自己為“程序員”,因?yàn)檫@會(huì)顯得太功利。
注意:并非每個(gè)人都應(yīng)該編程。這是一項(xiàng)非常耗時(shí)的活動(dòng)。因?yàn)槲一ㄙM(fèi)了很多時(shí)間編程,因而無(wú)法去參與很多其他令人興奮的事情。