Joel Spolsky在耶魯大學(xué)的演講
Joel Spolsky是一個(gè)美國(guó)的軟件工程師,他的網(wǎng)絡(luò)日志“Joel談軟件”(Joel on Software)非常有名,讀者人數(shù)可以排進(jìn)全世界前100名。
上個(gè)月28號(hào),他回到母校耶魯大學(xué),與計(jì)算機(jī)系的學(xué)生座談。他發(fā)表了一個(gè)演講,回顧自己的人生經(jīng)歷,并總結(jié)了一些個(gè)人的體會(huì)。
我讀完他的演講稿,很受觸動(dòng),覺(jué)得他的人生體會(huì)非常具有啟示性。這篇演講非常長(zhǎng),分為三個(gè)部分(一、二、三)。我沒(méi)有時(shí)間全文翻譯,就摘錄一些精彩的段落,一共有四段。
大學(xué)里最有用的課程
Joel說(shuō),他在大學(xué)里上過(guò)的最有用的課,是一門(mén)他只上了一回,然后就再也沒(méi)有去過(guò)的課。
由于父母都是大學(xué)教授,親戚朋友都是學(xué)術(shù)界里的,大多有博士學(xué)位,所以Joel從小就認(rèn)定自己也會(huì)去讀博士,將來(lái)搞學(xué)術(shù)??墒?,有一門(mén)課程改變了他的想法,使他最終沒(méi)有去報(bào)考研究生院。
這門(mén)課程叫做“動(dòng)態(tài)邏輯”(Dynamic Logic)。在第一堂課上,教授證明了一個(gè)命題。假定有一個(gè)程序“f := not f,” f是表示真假的邏輯值,那么結(jié)論是程序運(yùn)行偶數(shù)次后,f的值保持不變。整個(gè)證明過(guò)程非常冗長(zhǎng),要花幾個(gè)小時(shí)講解,一共有幾十步。課后習(xí)題則是,證明如果f值保持不變,那么程序必然運(yùn)行了偶數(shù)次。
課后,Joel花了很多時(shí)間做題,還去圖書(shū)館借來(lái)了參考書(shū)。但是,他逐漸感到這樣做沒(méi)有意義:用大量瑣碎的、容易出錯(cuò)的步驟,去證明一個(gè)憑直覺(jué)就能認(rèn)定成立的命題,這不是一個(gè)富有實(shí)效的工作方法。在Joel看來(lái),計(jì)算機(jī)更應(yīng)該用來(lái)解決錯(cuò)誤,而不是讓人們陷入邏輯的陷阱,去產(chǎn)生錯(cuò)誤。(I decided that this Dynamic Logic stuff was really not a fruitful way of proving things about actual, interesting computer programs, because you’re more likely to make a mistake in the proof than you are to make a mistake in your own intuition.)通過(guò)這件事,他認(rèn)識(shí)到,自己不適合做純思辨性的學(xué)術(shù)研究。因此,他就退掉了這門(mén)課,并且以后也沒(méi)有選擇去上研究生院。
Joel認(rèn)為,就是這門(mén)只上了一次的課,恰恰成為了他在大學(xué)中上過(guò)的最有用的課,因?yàn)樗鼛椭x擇了正確的人生道路。
所以,Joel的第一個(gè)結(jié)論是:人生中重要的是,關(guān)注那些真正的問(wèn)題(real problem),不要陷入那些細(xì)枝末節(jié)的問(wèn)題(trivial problem)。就像蘇格拉底說(shuō)的,“認(rèn)識(shí)你自己”。
此外,Joel說(shuō),還有一門(mén)叫做CS 323的課,也很有用。這門(mén)課有大量的課后習(xí)題,都是關(guān)于編程的,平均每星期要花40個(gè)小時(shí)來(lái)做題。
Joel發(fā)現(xiàn)他能夠做出大部分的題目,更重要的是,他發(fā)現(xiàn)自己喜歡做這些題。這樣一來(lái),他就明白自己是適合編程的。另一方面,很多其他學(xué)生對(duì)這門(mén)課感到無(wú)比頭疼,覺(jué)得編程既枯燥又痛苦,每周40小時(shí)做這種題簡(jiǎn)直是一種刑罰。這些人于是明白,雖然同樣是計(jì)算機(jī)系的學(xué)生,但是他們并不適合編程。這是一件好事,因?yàn)檫@樣他們就避免了以后選擇錯(cuò)誤的職業(yè)。否則,讓一個(gè)不喜歡編程的人,一生都與程序打交道,這是多么悲慘的一件事??!
在Viacom的日子
畢業(yè)以后,Joel先在微軟公司干了一段日子,然后回到紐約,進(jìn)入維亞康母公司(Viacom),為這家巨型的娛樂(lè)傳播公司編寫(xiě)軟件,成為IT部門(mén)里一個(gè)程序員(in-house programmer)。
后來(lái),Joel回憶起來(lái),認(rèn)為這是他一生中最痛苦的日子,并且勸告計(jì)算機(jī)系的學(xué)生盡可能不要去做“in-house programmer”。
原因有三個(gè)。
首先,你永遠(yuǎn)沒(méi)有辦法正確地編寫(xiě)軟件,你不得不用最方便的方法編寫(xiě)軟件。因?yàn)檐浖С龇浅8甙海怨緯?huì)要求盡可能節(jié)省成本,你不可能試用新技術(shù),只能使用現(xiàn)有的最成熟、最保守的技術(shù)。
其次,你沒(méi)有辦法將一個(gè)項(xiàng)目做到盡善盡美。一旦程序可以正常運(yùn)行,你的工作也就結(jié)束了,可以接下去干公司的下一個(gè)項(xiàng)目了。你的作用是解決問(wèn)題,而不是將軟件寫(xiě)得盡可能好。如果你是在一個(gè)專業(yè)的技術(shù)性公司,比如Google或Facebook,情況就完全不一樣,你的軟件寫(xiě)得越好,公司就會(huì)越成功,所以公司會(huì)支持你在一個(gè)項(xiàng)目上不斷做下去。
最后,傳統(tǒng)公司IT部門(mén)里的程序員,只屬于公司內(nèi)部的維護(hù)人員,而不是直接從事核心業(yè)務(wù)的人員。因此,你永遠(yuǎn)辦法進(jìn)入管理層。但是,在技術(shù)性公司,程序員會(huì)變成CEO。
因?yàn)檫@三個(gè)原因,Joel覺(jué)得in-house programmer不是一個(gè)好的職業(yè),不幸的是,80%的程序員屬于這一類,年復(fù)一年,很多人的生命就是這樣被耗干的。(it’s frightening because this is what probably 80% of programming jobs are like, and if you’re not very, very careful when you graduate, you might find yourself working on in-house software, by accident, and let me tell you, it can drain the life out of you.)
Joel的第二個(gè)結(jié)論是:選擇職業(yè)時(shí),不要只考慮職位是否專業(yè)對(duì)口,應(yīng)該盡量選擇業(yè)務(wù)方向與你專業(yè)相同的公司。
雖然,維亞康母公司(Viacom)口頭表示很重視互聯(lián)網(wǎng),但是,分配給程序員的工作間,總是很小的屋子,光線黯淡,而且還用擱板分割出小間,供三個(gè)人使用。經(jīng)理們各自的辦公室則完全不同,都有大玻璃窗,可以俯視哈德遜河。
在一次公司內(nèi)部的圣誕晚會(huì)上,Joel見(jiàn)到了負(fù)責(zé)互聯(lián)網(wǎng)戰(zhàn)略的執(zhí)行董事。Joel問(wèn)他,公司打算怎么使用互聯(lián)網(wǎng),后者只是泛泛地說(shuō),互聯(lián)網(wǎng)很重要,這是未來(lái)的發(fā)展方向。Joel感到很失望,他相信這個(gè)執(zhí)行董事其實(shí)對(duì)互聯(lián)網(wǎng)毫無(wú)認(rèn)識(shí),只不過(guò)是人云亦云。說(shuō)到底,這個(gè)董事對(duì)這一切可能根本無(wú)所謂,反正他每年都有200萬(wàn)美元的年薪,保持現(xiàn)狀就是最好。對(duì)他來(lái)說(shuō),Joel就是一個(gè)打字員似的“寫(xiě)網(wǎng)頁(yè)的人”,Joel做了什么和工作中的付出,他并不關(guān)心。(It convinced me that he had no flipping idea whatsoever what it was that was happening and what the internet meant or what I did as a programmer, and he was a little bit scared of it all, but who cares, because he’s making 2 million dollars a year and I’m just a typist or “HTML operator” or whatever it is that I did, how hard can it be, his teenage daughter can do that.)
所以,Joel決定辭職了。
管理人員的作用
離開(kāi)維亞康母以后,Joel進(jìn)了一家叫做Juno Online Services的互聯(lián)網(wǎng)公司,這家公司提供網(wǎng)上免費(fèi)電子郵件服務(wù)。那個(gè)時(shí)候是90年代中期,hotmail和gmail都還沒(méi)有成立。
作為程序員,Joel在這里工作得很愉快,但是公司本身的經(jīng)營(yíng)卻不成功。雖然是一家互聯(lián)網(wǎng)公司,但是,Juno Online Services完全采用傳統(tǒng)的“從上至下”的管理方式,就是領(lǐng)導(dǎo)想出來(lái)一個(gè)主意,然后命令程序員負(fù)責(zé)實(shí)現(xiàn),結(jié)果就是對(duì)技術(shù)細(xì)節(jié)一無(wú)所知的人,決定了一切。
這同硅谷的方式完全不同,在那里,管理人員只負(fù)責(zé)創(chuàng)造一個(gè)良好的工作環(huán)境,然后讓真正的聰明人把東西做出來(lái)。(What I was used to from the west coast was an attitude that management is just an annoying, mundane chore someone has to do so that the smart people can get their work done.)硅谷公司內(nèi)部的運(yùn)作更像大學(xué)里的學(xué)術(shù)討論會(huì),會(huì)議主席的作用只是主持會(huì)議而已。
Joel的第三個(gè)結(jié)論是,公司管理層的作用就是搬動(dòng)家具、清理出空間,讓有才華的研究人員做出一流產(chǎn)品。(Managers exist to get furniture out of the way so the real talent can do brilliant work.)
Juno Online Services經(jīng)營(yíng)得不成功,以及對(duì)員工才華的不尊重,使得Joel在2000年下定決心,不再為別人打工了,開(kāi)始創(chuàng)業(yè)。
表達(dá)能力的重要性
在創(chuàng)業(yè)之初,Joel并不知道該去做什么。他看到許多很蠢的人,拿著很蠢的商業(yè)計(jì)劃,開(kāi)辦互聯(lián)網(wǎng)公司。他想,這樣的公司都能開(kāi)出來(lái),那么我也能開(kāi)公司,只要我比他們少蠢10%就可以了,我要按照我的想法來(lái)管理,對(duì)每一個(gè)程序員都給予最大的尊重,那樣就有機(jī)會(huì)做出高質(zhì)量的產(chǎn)品。我們不關(guān)心風(fēng)險(xiǎn)資本家怎么說(shuō),也沒(méi)有高高在上的領(lǐng)導(dǎo),我們只關(guān)心客戶的感受,用軟件解決客戶的問(wèn)題,從而獲得報(bào)酬,生存下去。(In those days, I was seeing lots of really dumb people with really dumb business plans making internet companies, and I thought, hey, if I can be, say, 10% less dumb than them, that should be easy, maybe I can make a company too, and in my company, we’d do things right for a change.) We’d treat programmers with respect, we’d make high quality products, we wouldn’t take any shit from VCs or 24-year-olds playing President, we’d care about our customers and solve their problems when they called, instead of blaming everything on Microsoft, and we’d let our customers decide whether or not to pay us.)
在這種想法的鼓勵(lì)下,Joel創(chuàng)辦了Fog Creek軟件公司。
從創(chuàng)業(yè)之初,Joel就開(kāi)始將自己的想法和遇到的事情,寫(xiě)成文章,發(fā)表在互聯(lián)網(wǎng)上。當(dāng)時(shí)還沒(méi)有Blog這種東西,但是他其實(shí)已經(jīng)在寫(xiě)了。Joel慢慢發(fā)現(xiàn),他的文章真的有人看,并且讀者越來(lái)越多,其中很多人最終都接受了他的想法。實(shí)際上,Joel寫(xiě)的很多東西都不是原創(chuàng)性的,其中還時(shí)不時(shí)包括一些笑話,但是讀者不在乎,“Joel談軟件”成了一個(gè)熱門(mén)網(wǎng)站,平均每篇文章都有幾十萬(wàn)、甚至上百萬(wàn)的讀者。
這對(duì)Joel的創(chuàng)業(yè)幫助極大,F(xiàn)og Creek本來(lái)是一家無(wú)名的小軟件公司,但是由于很多人讀Joel的文章,因此他們也了解并且相信Joel的公司。這使得Fog Creek從創(chuàng)業(yè)的第一年起就是盈利的,并且每年都在發(fā)展。
Joel將創(chuàng)業(yè)的成功,部分歸功于他在大學(xué)里受過(guò)的寫(xiě)作訓(xùn)練,那時(shí)有一個(gè)教授每周都要布置寫(xiě)論文,并且對(duì)平庸的文章恨之入骨,不給學(xué)分。這使得Joel學(xué)會(huì)了將復(fù)雜的話題說(shuō)得清晰易懂,并且引人入勝。
因此,Joel的第四個(gè)結(jié)論是,一個(gè)普通工作人員和一個(gè)領(lǐng)袖之間的差別,就是有沒(méi)有良好的表達(dá)能力。(Being able to write clearly on technical topics is the difference between being a grunt individual contributor programmer and being a leader.)