小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

給計(jì)算機(jī)系學(xué)生的七條建議

 老莊走狗 2006-01-14

給計(jì)算機(jī)系學(xué)生的建議


作者: 周思博 (Joel Spolsky)
譯: Chen Bin
2005年1月2日

雖然大概一兩年前我還在夸夸其談桌面應(yīng)用程序是將來的潮流,大學(xué)生們現(xiàn)在還是偶爾向我請教職業(yè)發(fā)展的問題。所以我把我的建議寫下來。以供學(xué)生們閱讀,嘲笑,忽略。

大多數(shù)銳氣十足的學(xué)生從來不向前輩征求意見。在計(jì)算機(jī)科學(xué)領(lǐng)域,這樣做是正確的。因?yàn)榍拜厒兒芸赡苷f些“在2010年前,市場對于那些只會(huì)敲擊鍵盤的代碼工人的需求將會(huì)超過一億(因此前景是樂觀的)”,或者諸如“Lisp語言現(xiàn)在真的很熱門”。

我和那些前輩也差不多,當(dāng)我給別人建議時(shí),實(shí)際上我不知道自己在說些什么。我是如此的落后于時(shí)尚,以至于連AIM也搞不明白,而不得不使用 email(恐龍時(shí)代的產(chǎn)品,在那個(gè)時(shí)代,音樂是刻在扁扁的的圓圓的盒子上,噢,那種盒子叫cd)。(譯者按:我認(rèn)為祖兒這里在說反話,后文很多地方作者都在說反話,讀者盡量理解這種美國式幽默吧。)

所以你最好不要理睬我將要說的,你應(yīng)該立刻去制作某種在線交友軟件。

然而,

如果你喜歡編程,那就感謝上帝吧:你屬于幸運(yùn)的少數(shù)人,這些人喜歡工作,他們的工作可以保證他們能過上舒適的生活。大多數(shù)人沒有這么幸運(yùn)。對大多數(shù)人來說,工作是不愉快的,忍受工作的目的攢錢,是為了在年滿65歲退休后能過上自己想過的生活。如果他們想過的生活不需要靈活的膝蓋,明亮的眼鏡,輕盈的腳步的話。

現(xiàn)在讓我回到主題,我將提供一些建議。

好了,不羅嗦了,下面就是Joel給計(jì)算機(jī)系學(xué)生們七條免費(fèi)的建議:

  1. 畢業(yè)前學(xué)會(huì)寫作
  2. 畢業(yè)前學(xué)會(huì)C語言
  3. 畢業(yè)前學(xué)習(xí)微觀經(jīng)濟(jì)學(xué)(microeconomics)
  4. 不要因?yàn)槟承┓怯?jì)算機(jī)課程枯燥無趣就敬而遠(yuǎn)之
  5. 學(xué)習(xí)有大量編程實(shí)踐的課程
  6. 不要擔(dān)心工作都跑到印度去了
  7. 好好做夏季畢業(yè)實(shí)習(xí)

讓我逐條解釋這些建議。但解釋之前我要說明一下,如果因?yàn)檫@些建議是Joel的建議你就打算無條件地接受,以至于連我的理由都想跳過,那么你就太單純,太容易被別人騙了。如果你是那種單純的人,我還要給你第八條建議,找心理醫(yī)生咨詢一下如何培養(yǎng)自信(self-esteem)。

畢業(yè)前學(xué)會(huì)寫作

如果Linus Torvalds不懂如何布道的話,Linux會(huì)成功嗎? 正象每一個(gè)黑客,Linus精通寫作,他知道如何準(zhǔn)確地在email和郵件討論組中使用書面英語表達(dá)自己的思想,所以他能夠從全世界召集大量志愿者為Linux工作。

你聽說過最近風(fēng)靡全世界的極限編程(Extreme Programming)嗎? 即使你不懂什么是極限編程,你至少聽說過這個(gè)詞。為什么?因?yàn)樾麄鳂O限編程的人都是天才的作者和演說家。

就看看你身邊的那些小型的軟件開發(fā)組織吧,最有權(quán)力和影響力的人是那些可以用自信,準(zhǔn)確,舒適的英語交流的人。好吧,我承認(rèn)這些人也許言過其實(shí),但是你無可奈何。

一個(gè)合格的程序員和一個(gè)偉大的程序員的區(qū)別不在于知道多少種編程語言,不在于他們是喜歡Python或者Java,而是在于他們是否擅長表達(dá)。他們能夠說服,所以他們獲得權(quán)力。他們能夠?qū)懬宄靼椎脑u論和接口文檔,所以他們使得別人不用重寫,而可以重用他們的代碼,否則他們的代碼就是毫無用處的。他們也能夠?qū)懗銮逦挠脩羰謨?,于是最終用戶可以理解他們的代碼是做什么用的,明白了他們的工作的價(jià)值。sourceforge埋葬著許多精美的代碼,這些已死的代碼無人使用,因?yàn)榇a的作者很少寫(或者根本不寫)用戶手冊。

我不會(huì)雇傭一個(gè)不懂寫作的程序員。如果你擅長寫,你就很容易找到工作,緊接著你就會(huì)被要求寫技術(shù)規(guī)格文檔,這意味著你已經(jīng)被管理層注意到了。

大學(xué)里有一些課程,要求你做很多的寫作練習(xí),不要猶豫,趕快參加這些課程。不要錯(cuò)過任何要求你每周或者每天練習(xí)寫作的課程。

給自己建立一個(gè)網(wǎng)絡(luò)日志(weblog)。在上面寫的越多,你會(huì)寫地越容易。寫地越容易,你就寫地越多,這是一個(gè)正向地循環(huán)激勵(lì)。

畢業(yè)前學(xué)會(huì)C語言

我可沒有說是C++。雖然現(xiàn)在用C的工作不多,但是掌握各種編程語言的程序員事實(shí)上用C來交流(lingua franca);更重要的是,C比某些“現(xiàn)代”語言更接近機(jī)器語言。我不管現(xiàn)在大學(xué)里在教什么流行的垃圾語言(trendy junk),你至少得花一個(gè)學(xué)期接近機(jī)器。否則,你不可能使用高級(jí)語言寫出高效的代碼。這意味這你不會(huì)有機(jī)會(huì)寫編譯器或者操作系統(tǒng),也許這是更好的編程工作;別人不會(huì)相信你能夠?yàn)榇箜?xiàng)目設(shè)計(jì)架構(gòu)。無論你知道多少高級(jí)的控制結(jié)構(gòu),知道如何進(jìn)行錯(cuò)誤處理,如果你不能解釋為什么while (*s++ = *t++);的意思是進(jìn)行字符串拷貝(而且對你而言這是世界上最自然,最易懂的代碼),那么你就是在對編程一竅不通的狀態(tài)下編程(programming based on superstition)。打個(gè)比方,就好比一個(gè)醫(yī)生不懂基本的解剖學(xué)就給你開處方,如果你問這個(gè)醫(yī)生為什么開這種藥而不是那種藥,他會(huì)說因?yàn)獒t(yī)藥銷售代表說這種藥有用。

畢業(yè)前學(xué)習(xí)微觀經(jīng)濟(jì)學(xué)(microeconomics)

我個(gè)人對經(jīng)濟(jì)學(xué)的一些理解:在經(jīng)濟(jì)學(xué)剛誕生的時(shí)候,它只是局限于有限的領(lǐng)域,在這些領(lǐng)域中人們發(fā)展和發(fā)現(xiàn)了很多有用的理論和很有趣的事實(shí),這些理論和事實(shí)是從邏輯上是可以證明的。然后, 經(jīng)濟(jì)學(xué)開始走下坡路了。 “有限的領(lǐng)域”就是微觀經(jīng)濟(jì)學(xué),它對于商業(yè)可以進(jìn)行有意義的指導(dǎo)。然后,事情就開始變糟了(以下部分你可以跳過),你接下來碰到的是討論諸如失業(yè)率和銀行利率之間關(guān)系之類東東的宏觀經(jīng)濟(jì)學(xué),很多時(shí)候宏觀經(jīng)濟(jì)學(xué)討論的理論都是無法證明正確或者錯(cuò)誤的。接下來事態(tài)更加惡化了,經(jīng)濟(jì)學(xué)中的一些領(lǐng)域開始和物理學(xué)搭界,嗯,學(xué)習(xí)物理經(jīng)濟(jì)學(xué)也許你幫你在華爾街找到好工作。言歸正傳,無論如何請學(xué)習(xí)微觀經(jīng)濟(jì)學(xué),因?yàn)槟阈枰朗裁词?#8220;供給和需求”,什么是競爭優(yōu)勢,什么是凈現(xiàn)值(NPVs,Net Present Value,指項(xiàng)目經(jīng)濟(jì)壽命期內(nèi)現(xiàn)金流入總和與現(xiàn)金流出總和之差額),什么是折扣和邊際效用(discounting and marginal utility),如果你真想了解商業(yè)是如何運(yùn)作的話。

為什么計(jì)算機(jī)系的學(xué)生要學(xué)習(xí)經(jīng)濟(jì)學(xué)?因?yàn)槔斫馍虡I(yè)基本規(guī)律的程序員對商業(yè)界來說是寶貴的程序員。我記得無數(shù)個(gè)程序員使我非常沮喪,因?yàn)樗麄冊诖a中堅(jiān)持某些瘋狂的設(shè)計(jì),這些設(shè)計(jì)從技術(shù)上來說,完美;從資本主義的角度來看,發(fā)瘋。如果你是一個(gè)理解商業(yè)的程序員,商業(yè)會(huì)給你回報(bào)。這就是你要學(xué)習(xí)經(jīng)濟(jì)學(xué)的原因。

不要因?yàn)槟承┓怯?jì)算機(jī)課程枯燥無趣就敬而遠(yuǎn)之

首先,你需要讓你的學(xué)分平均分(GPA)看起來漂亮點(diǎn)。

不要低估學(xué)分平均分的威力。很多雇主和人事經(jīng)理(包括我)閱讀簡歷時(shí)首先看成績,為什么?因?yàn)檫@代表了大部分的教授在很長的時(shí)期內(nèi)對你的學(xué)業(yè)的一個(gè)平均的看法。托福成績(美國的托福大致相對于我國的高考中的語文考試)?哈,幾個(gè)小時(shí)的測驗(yàn)而已。當(dāng)然學(xué)分不一定說明了一切,如果你修的是很難的課程,學(xué)分就有可能低一點(diǎn)。即使你的學(xué)分平均分很高,我還是要看各科分?jǐn)?shù)是否一致。如果你應(yīng)聘的是軟件工程師職位,我為什么要關(guān)心你在大學(xué)里學(xué)的歐洲歷史課程分?jǐn)?shù)的高低呢?畢竟,歷史很枯燥。那么要是你要編程的部分也是很枯燥的,你是不是要放棄了?事實(shí)上,有時(shí)候編程是枯燥的,如果你不能忍受編程中的枯燥部分的話,你就不能完成整個(gè)工作,雇主不愿意雇傭你這樣的員工。

我在大學(xué)里修過一門叫做“文化人類學(xué)”的課程,因?yàn)槟菚r(shí)候我也搞不懂我到底要學(xué)什么,聽起來這么課程可能還蠻有意思的。

出乎我的意料。我不得不閱讀大量講述巴西熱帶雨林中的印第安人如何如何的書,讓人真昏昏欲睡。聽老師講解也好不到哪去,我發(fā)覺看教室外的草如何長更有趣點(diǎn)。土著人如何烤蕃薯藤和我有什么關(guān)系?我為什么要去討論如何烤蕃薯藤?但是期中考試馬上就要到了,我暗暗下定決心,如果我能跨越“文化人類學(xué)”這個(gè)障礙,以后也許沒有什么能難倒我了。我決心得A并且得到了A。以后當(dāng)我不得不坐在林肯中心,連看18個(gè)小時(shí)的瓦格納的《尼伯龍根的指環(huán)》時(shí),我終于明白我為什么要學(xué)習(xí)“文化人類學(xué)”了,相比之下,我也能忍受這種歌劇了。

學(xué)習(xí)有大量編程實(shí)踐的課程

我還記得決定不去讀研究生的那一刻。

就是在學(xué)習(xí)《動(dòng)態(tài)邏輯》(Dynamic Logic)這門課的時(shí)候,我記得是耶魯?shù)腖enore Zuck(一個(gè)天才的教師)教的。

修這門課的時(shí)候,我已經(jīng)不再是雄心勃勃了。我可不指望在這么課程中得個(gè)A,我夢想的是混個(gè)及格。邏輯本質(zhì)上是很簡單的:如果結(jié)論正確,前提必須正確。例如,如果“所有讀書好的人都能找到工作”并且“張三的讀書好”,那么“張三能夠找到好工作”。就這么簡單。

但是我要學(xué)的是動(dòng)態(tài)邏輯, 動(dòng)態(tài)邏輯和一般邏輯差不多,但是要考慮時(shí)間因素。例如,“在你開燈之后,你可以看見你的鞋子”加上“過去燈被打開了”意味著“你現(xiàn)在可以看到你的鞋子”

動(dòng)態(tài)邏輯學(xué)對于象Zuck教授這樣的天才理論家來說非常誘人,因?yàn)檫@門學(xué)科的知識(shí)也許可以用來證明計(jì)算機(jī)程序是否正確。我記得在第一堂課上,為了證明“如果你有一盞關(guān)著的燈”并且“你按了一下開關(guān)”,那么“現(xiàn)在燈亮了”,Zuck教授就使用了兩黑板加上邊上的墻壁。

證明過程難以置信的復(fù)雜。我覺得如此復(fù)雜的證明過程很可能會(huì)有小錯(cuò)誤,但是我沒辦法證明證明過程本身是正確的。事實(shí)上,寫在黑板上的證明跳過了很多中間步驟,許多步的證明使用了演繹法,使用了歸納法,以及一些研究生才懂的證明方法。

作為課后作業(yè),我們需要證明以下命題:如果燈過去是關(guān)著的,并且現(xiàn)在它是開著的,請證明有人按了開關(guān)

我真的試著證明它了。

我花了許多小時(shí),試圖證明這個(gè)命題。

在無數(shù)個(gè)小時(shí)的努力后,我發(fā)覺Zuck博士的原始的證明有一個(gè)邏輯上的錯(cuò)誤,也許這個(gè)錯(cuò)誤是我的筆記抄錯(cuò)了,我不知道。于是我終于認(rèn)識(shí)到,如果為了證明一個(gè)簡單的問題需要花三個(gè)小時(shí)寫下幾黑板的證明步驟,再考慮到這個(gè)漫長的證明過程中可能會(huì)引入種種錯(cuò)誤,那么這種機(jī)制是不可能用來證明任何有趣的東西的。

對動(dòng)態(tài)邏輯學(xué)家來說,有用是無關(guān)緊要的。

于是我退出了那門課程,發(fā)誓永遠(yuǎn)不會(huì)去讀計(jì)算機(jī)系的研究生。

這個(gè)故事的主題是,計(jì)算機(jī)科學(xué)和軟件開發(fā)不一樣。如果你非常非常幸運(yùn),你的學(xué)校會(huì)開軟件開發(fā)的課程。然而,他們也可能不開這樣的課程,因?yàn)槊拼髮W(xué)認(rèn)為教授實(shí)用技巧的事情應(yīng)該留給那些二三流的技術(shù)學(xué)院或者某些釋放犯人再安置計(jì)劃。你可以在任何地方學(xué)習(xí)編程,我們是耶魯大學(xué),我們培養(yǎng)未來的世界領(lǐng)導(dǎo)人。你付給耶魯16萬美元的學(xué)費(fèi)就是為了學(xué)習(xí)如何寫循環(huán)語句嗎?你把耶魯當(dāng)成什么地方了?Java速成班嗎?哼。

問題在于,我們沒有一個(gè)專業(yè)的學(xué)校教授軟件開發(fā)。所以如果你想成為一個(gè)程序員,你可以進(jìn)計(jì)算機(jī)系讀書(當(dāng)然計(jì)算機(jī)科學(xué)也值得學(xué)習(xí)),但是你學(xué)的不是軟件開發(fā)。

如果走運(yùn)的話,你可以在計(jì)算機(jī)系發(fā)掘出很多有大量編程實(shí)踐的課程,就象你能在歷史系找到很多提供寫作水平的課程一樣。這些課程絕對值得學(xué)習(xí)。如果你喜歡編程,不要為你不能上教授諸如lambda算子或者線性代數(shù)的課程沮喪,在那里你連摸一下計(jì)算機(jī)的機(jī)會(huì)都沒有。找找看有沒有名字中帶有“實(shí)習(xí)(Practicum)”字樣的課程,不要在乎Practicum是個(gè)拉丁語。有用的(無奈狀)課程就是需要在課程名中塞一些拉丁語,才能從那些裝模作樣(Liberal Artsy Fartsy)管理層的眼前蒙混過關(guān)。

不要擔(dān)心工作都跑到印度去了

啊哈,如果你人在印度,你就無所謂了。愿你享受外包帶來的工作機(jī)會(huì)并順祝身體健康。

但是我聽說現(xiàn)在愿意讀計(jì)算機(jī)系的學(xué)生越來越少了。據(jù)說原因之一是工作機(jī)會(huì)都跑到印度去了。我認(rèn)為這種觀點(diǎn)是大錯(cuò)特錯(cuò)。首先,根據(jù)眼前的商業(yè)時(shí)尚選擇事業(yè)是非常愚蠢的。其次,即使工作真的都跑到印度和中國去了,編程對于其他有趣的工作來說都是極好的訓(xùn)練,例如業(yè)務(wù)流程工程(business process engineering)。第三,無論是在美國還是印度,好程序員仍然是非常短缺的,請相信我。當(dāng)然,現(xiàn)在有許多所謂搞IT的人吵吵嚷嚷地說就業(yè)形勢不好,工作太難找。但是事實(shí)如何?恕我直言,好程序員找工作還是很容易。第四,你還有更好的主意嗎?歷史系的畢業(yè)生找工作更容易嗎?去法學(xué)院如何?據(jù)我所知,99%的律師恨他們的工作,每分鐘都恨。而且律師一周工作90小時(shí)。正象我以前說過的,如果你喜歡計(jì)算機(jī),那么感謝上帝,你將屬于全世界人中的極少數(shù)的幸運(yùn)兒,這些幸運(yùn)兒熱愛他們的工作,而且工作也可以提供體面的收入。

實(shí)際上,我也不認(rèn)為報(bào)考計(jì)算機(jī)系的人越來越少有多大的意義。相對于internet泡沫時(shí)期大家都瘋狂的往計(jì)算機(jī)系擠,現(xiàn)在的人數(shù)回落只是回歸正常水平而已。在泡沫時(shí)期,我們這個(gè)行業(yè)涌入了許多對計(jì)算機(jī)毫無興趣的南郭先生,他們夢想的是拿著高的嚇人的薪水加誘人的期權(quán),然后年輕退休。謝天謝地,現(xiàn)在這些人都跑了。

好好做夏季畢業(yè)實(shí)習(xí)

明智的招聘者知道熱愛編程的人初中就為當(dāng)?shù)氐难泪t(yī)寫數(shù)據(jù)庫程序,高中就在計(jì)算機(jī)夏令營教課,為校報(bào)規(guī)劃網(wǎng)站,在某個(gè)軟件公司做實(shí)習(xí)。他們找的就是這樣的人。

如果你喜歡編程,你最容易犯的最大的錯(cuò)誤就是“有活就接”。我知道,其他專業(yè)的學(xué)生假期打工可顧不了這些條條框框。但是你不一樣,你擁有一種特殊技能,不要浪費(fèi)它。當(dāng)你畢業(yè)時(shí),你的簡歷上應(yīng)該已經(jīng)羅列一堆的編程工作實(shí)習(xí)。讓其他人去“為大家提供租車服務(wù)”(Tom Welling是個(gè)例外,他業(yè)余時(shí)間去演超人)。

最后,為了讓你的生活更容易一點(diǎn),也為了說明我這篇文章是能夠自圓其說的,我將給我自己的公司的做做廣告。我的公司Fog Creek軟件公司,可以為大學(xué)生提供軟件開發(fā)方面的實(shí)習(xí)機(jī)會(huì)。在我們公司,你可以學(xué)習(xí)“編碼,開發(fā),商業(yè)”。去年在我們公司實(shí)習(xí)的Ben就是這么說的,可不是因?yàn)槲医o他什么好處他才這么說。二月一號(hào)截至,抓緊機(jī)會(huì)吧。

如果你聽了我的建議,你就會(huì)太早地賣掉Microsoft公司的股票,拒絕Google提供的職位,原因是因?yàn)槟阋呀?jīng)擁有自己的公司了。到時(shí)候可別后悔,更別怪我,呵呵。



本文最先用英文出版,題為 Advice for Computer Science College Students  

Joel Spolsky 是紐約市一家小軟件公司,Fog Creek Software, 的創(chuàng)始人。他畢業(yè)于耶魯大學(xué),曾在美國微軟公司,Viacom,  Juno 任軟件設(shè)計(jì)師及經(jīng)理。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多