<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    狂淘

    www.kuangtao.net

       :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      6 隨筆 :: 185 文章 :: 68 評論 :: 0 Trackbacks

    作者Joel Spolsky

    [編者按]由于Joel Spolsky的雙重身份(昔日耶魯大學(xué)計(jì)算機(jī)系學(xué)長,今日Fog Creek軟件公司的CEO),所以聽聽他的建議,對于當(dāng)今無數(shù)困擾于就業(yè)壓力的中國高校計(jì)算機(jī)專業(yè)學(xué)子來說,是大有裨益的。你們會發(fā)現(xiàn),大多數(shù)建議,都在強(qiáng)調(diào)軟實(shí)力的價值。本文轉(zhuǎn)載自《軟件隨想錄》(作者:Joel Spolsky ,譯者: 阮一峰,200912月出版),感謝北京圖靈文化發(fā)展有限公司的支持。

    如果你喜歡編程,那么你真是受到了上天的眷顧。你是非常幸運(yùn)的少數(shù)人之一,能夠以自己喜歡的事謀生。大多數(shù)人沒有這么幸運(yùn)。你認(rèn)為理所當(dāng)然的觀念熱愛你的工作,其實(shí)是一個很現(xiàn)代的概念。通常的看法是,工作是一種讓人很不開心的事,你為了拿工資才不得不去上班。你工作的目的是為了攢下錢去干那些自己真正喜歡干的事,但是前提是你得等到65歲退休之后才行,而且還有不少條件。條件一,你的積蓄必須足夠多;條件二,你沒有老到走不動,你還有體力去干那些事情;條件三,你喜歡的事情不需要用到脆弱的膝蓋、昏花的視力,也不要求你走上一里地不喘氣,等等。

    我剛才說到哪里了?對了,我要提建議。

    畢業(yè)前練好寫作

    如果不是Linus Torvalds不斷地散布福音,請問Linux操作系統(tǒng)會成功嗎?雖然他是一個非常聰明的計(jì)算機(jī)天才,但是Linux吸引來全世界一大批志愿者的真正原因卻是Linus Torvalds的表達(dá)能力。他通過電子郵件和郵件列表用書面形式傳播自己的想法,最終引起了所有人的注意。

    你聽說過現(xiàn)在風(fēng)靡一時的極限編程[ ] ”Extreme Programming)嗎?我在這個地方不談我對極限編程的看法,我只說如果你聽過這個詞,那么原因就是它的倡導(dǎo)者都是一些非常有才華的作家和演說家。

    即使我們縮小范圍,將目光局限在任何一個軟件開發(fā)團(tuán)體中,你也會發(fā)現(xiàn)該團(tuán)體中最有權(quán)勢和影響力的程序員正是那些表達(dá)能力強(qiáng)的程序員,他們無論是做書面表達(dá)還是做口頭表達(dá),都能夠清晰、自如、具有說服力地傳達(dá)觀點(diǎn)。此外,長得高也有助于提升影響力,不過這個不取決于你。

    一個普通程序員與一個優(yōu)秀程序員的區(qū)別,不在于他們懂得的編程語言誰多誰少,也不在于他們喜歡用Python語言還是喜歡用Java語言,而在于他們能否與他人交流思想。如果你能說服其他人,你的力量就可以得到放大。如果你能寫出清晰的注釋和技術(shù)規(guī)格說明書,其他程序員就能夠理解你的代碼,因此他們就能在自己的代碼中使用,而不必重寫。如果你做不到這一點(diǎn),你的代碼對其他人就沒有價值。如果你能為最終用戶寫出清晰的使用手冊,其他人就能明白你的代碼是用來干什么的,這是唯一讓別人明白你的代碼有何價值的方法SourceForge[ ]上有許多優(yōu)美的、有用的代碼,但是它們都像被埋葬了一樣,根本沒人來用,原因就是它們的作者沒有寫好使用說明(或者壓根就沒寫)。這樣一來就沒有人知道他們的成果,他們杰出的代碼就衰亡了。

    如果一個程序員不會用英語寫作、沒有良好的寫作能力,我就不會雇他。如果你能寫,不管你去哪家公司工作,你很快就會發(fā)現(xiàn)寫作技術(shù)文檔的任務(wù)會落到你頭上,這意味著你已經(jīng)開始在放大自己的影響力了,管理層正在注意到你。

    大學(xué)里有些課程被公認(rèn)為寫作密集型writing intensive)課程,這就是說為了拿到學(xué)分,你必須寫作多得可怕的文字。一定要去上這樣的課程!不要管學(xué)科,只要這門課每周甚至每天都要你寫東西,你就去上。

    你還可以動手寫日記或者網(wǎng)志。你寫得越多,寫作就會變得越容易。寫起來越容易,你就會寫得越多。這是一個良性循環(huán)。

    畢業(yè)前學(xué)好C語言

    第二點(diǎn)我要講的是C語言。請注意,我說的是C語言,而不是C++。雖然在實(shí)際使用中C語言已經(jīng)越來越罕見,但是它仍然是當(dāng)前程序員的共同語言。C語言讓程序員互相溝通,更重要的是,它比你在大學(xué)中學(xué)到的現(xiàn)代語言(比如ML語言、Java語言、Python語言或者其它正在教授的流行垃圾語言)都更接近機(jī)器。你至少需要花一個學(xué)期來了解機(jī)器原理,否則你永遠(yuǎn)不可能在高級語言的層次寫出高效的代碼。你也永遠(yuǎn)無法開發(fā)編譯器和操作系統(tǒng),而它們恰恰屬于目前程序員能夠得到的最佳工作之列。別人也永遠(yuǎn)不會放心將大型項(xiàng)目的架構(gòu)設(shè)計(jì)交給你。我不管你懂多少延續(xù)(continuation)、閉包(closure)、異常處理(exception handling),只要你不能解釋為什么while (*s++ = *t++);這句代碼的作用是復(fù)制字符串,或者不覺得這是世界上對你來說再自然不過的事情,那么你就是在盲目無知的情況下編程。在我看來,這就好像一個醫(yī)生不懂得最基本的解剖學(xué)就在開處方,他看病的根據(jù)完全是因?yàn)槟切┩尥弈樀尼t(yī)藥廠商銷售代表說這種藥有用。

    畢業(yè)前學(xué)好微觀經(jīng)濟(jì)學(xué)

    如果你沒有上過任何經(jīng)濟(jì)學(xué)課程,那么我首先來做一個超短的評論:經(jīng)濟(jì)學(xué)是這樣的學(xué)科之一,剛開始學(xué)的時候轟轟烈烈,有許多有用的、言之有理的理論和可以在真實(shí)世界中得到證明的事實(shí),等等;但是,再學(xué)下去就每況愈下,有用的東西就不多了。經(jīng)濟(jì)學(xué)一開始那個有用的部分正是微觀經(jīng)濟(jì)學(xué),它是商業(yè)領(lǐng)域所有重要理論的基礎(chǔ)。跟在微觀經(jīng)濟(jì)學(xué)后面的東西就不行了。你接下來學(xué)的是宏觀經(jīng)濟(jì)學(xué),如果你愿意,盡管跳過去,也不會有什么損失。宏觀經(jīng)濟(jì)學(xué)開頭的部分是利息理論,內(nèi)容比方說是利率與失業(yè)之間的關(guān)系,但是怎么說呢,看上去這部分里面還沒有被證實(shí)的東西多于已經(jīng)被證實(shí)的東西。學(xué)完這部分,后面的內(nèi)容越來越糟糕,許多經(jīng)濟(jì)學(xué)專業(yè)的學(xué)生實(shí)際上都變成在搞物理學(xué),因?yàn)檫@樣才能在華爾街上找到更好的工作。但是不管怎樣,你一定要去學(xué)微觀經(jīng)濟(jì)學(xué),因?yàn)槟惚仨毟愣┙o和需求,你必須明白競爭優(yōu)勢,你必須理解什么是凈現(xiàn)值(NPV),什么是貼現(xiàn),什么是邊際效用。只有這樣,你才會懂得為什么生意是現(xiàn)在這種做法。

    為什么計(jì)算機(jī)系的學(xué)生也應(yīng)該學(xué)經(jīng)濟(jì)學(xué)?因?yàn)椋瑥慕?jīng)營一家公司的角度來看,比起那些不懂的程序員,一個理解基本商業(yè)規(guī)則的程序員將會更有價值。就是這么簡單。我無法告訴你有多少次我是那樣地充滿挫折感,因?yàn)槲铱吹搅颂嗟奶岢鲆恍┋偪竦南敕ǖ某绦騿T,這些想法在代碼上也許可行,但在資本主義世界中毫無意義。如果你懂得商業(yè)規(guī)則,你就是一個更有價值的程序員,你會因此得到回報的,但是前提是你要去學(xué)習(xí)微觀經(jīng)濟(jì)學(xué)。

    不要因?yàn)榭菰锞筒贿x修非計(jì)算機(jī)專業(yè)的課程。

    想提高GPA績點(diǎn)的一個好方法就是多選修非計(jì)算機(jī)系的課程。請千萬不要低估你的GPA的重大意義。千千萬萬的人事經(jīng)理和招聘人員在拿到一份簡歷的時候,第一眼就會去看GPA,包括我也是這樣。我們不會為這種做法道歉。為什么?因?yàn)?/span>GPA不反映單個的成績,而是代表了許多個教授在一段很長的時間中,在不同的情況下,對你的表現(xiàn)的一個總的評估。SAT成績難道不夠嗎?哈,那只不過是一場幾個小時的測試罷了。GPA中包括了四年大學(xué)期間你的小論文、期中考試和課堂表現(xiàn),總數(shù)有幾百次之多。當(dāng)然,GPA也有自己的問題,不是百分之百準(zhǔn)確。比如,這些年來,老師對學(xué)生的打分越來越寬松,學(xué)習(xí)成績有通貨膨脹的趨勢。再比如,GPA無法反映課程的難度,沒人能夠看出你的GPA是來自無名社區(qū)大學(xué)家政系的輕松課程還是來自加州理工學(xué)院針對研究生的量子力學(xué)課程。漸漸地,我形成了一套自己的做法,首先我會過濾掉所有來自社區(qū)大學(xué)、GPA低于2.5的簡歷,然后我會要求剩下的人給我寄成績單和推薦信。我再從中發(fā)現(xiàn)那些成績一貫優(yōu)秀的人,而不是那些僅僅在計(jì)算機(jī)系課程中得到高分的人。

    為什么我要關(guān)心某人的歐洲歷史課程成績呢,畢竟作為雇主我要找的應(yīng)該是程序員啊?何況,歷史是那么枯燥,不得高分很正常。哦,這么說來,你的意思是我應(yīng)該雇用你,而不用考慮一旦工作變得枯燥你會不會努力工作?別忘了,在編程工作中也有很枯燥的東西。每一項(xiàng)工作都有枯燥難耐的時刻。我不想雇用那些只想干有趣事情的人。

    選修有大量編程實(shí)踐的課程

    我依然清楚記得我發(fā)誓絕不讀研究生的那一刻。那是在一門叫做動態(tài)邏輯的課程上,教師是活力十足的耶魯大學(xué)教授Lenore Zuck,她是計(jì)算機(jī)系那些聰明的老師中最聰明的人之一。

    如今, 由于記憶力糟糕, 我已經(jīng)差不多把這門課的內(nèi)容忘光了,但是不管怎么說,在這里我還是想要對付著說一下。大致上,形式邏輯的意思是說,如果條件成立,你就能證明結(jié)論也成立。比如,根據(jù)形式邏輯,已知只要成績好,就能被雇用,然后假定“Johnny的成績好,你就可以得到一個嶄新的結(jié)論“Johnny會被雇用。這完全是經(jīng)典方法。但是,一個解構(gòu)主義者(deconstructionist)只需要10秒鐘就能破壞形式邏輯中所有有用的東西。這樣一來,留給你的只是一些趣味性,而不是實(shí)用性。

    現(xiàn)在再來說動態(tài)邏輯。它與形式邏輯其實(shí)是一回事,但是必須再多考慮時間因素。比如,你打開燈之后,就能看見自己的鞋子,已知燈以前是亮的,那么這就意味著你看見了自己的鞋子

    對于像Zuck教授那樣聰明的理論家,動態(tài)邏輯充滿了吸引力,因?yàn)樗瓷先ズ苡邢M屇阍谛问缴献C明一些計(jì)算機(jī)程序的相關(guān)理論問題。這樣做說不定很有用。比如,你可以用它在形式上證明,火星漫游車的閃存卡不會發(fā)生溢出(overflow)問題,不會因而整天一遍又一遍地重啟,耽誤了它在那顆赤紅色的星球上漫游尋找火星人馬文(Marvin the Martian)。

    在第一堂課上,Zuck博士寫滿了整整兩面黑板,甚至黑板旁邊的墻上都寫上了很多證明步驟。需要證明的問題是,有一個控制燈泡的開關(guān),現(xiàn)在燈泡沒有亮,這時你打開了開關(guān),請證明燈泡將會點(diǎn)亮。

    整個證明過程復(fù)雜得不可思議,處處都是陷阱,必須十分小心。保證這個證明不出錯太困難了,還不如直接相信打開開關(guān)燈就會亮。真的,雖然證明過程寫滿了許多塊黑板,但是還是有許多中間步驟被省略了,因?yàn)槿绻獜男问竭壿嬌贤暾C明所有步驟,那就瑣碎得無法形容了。許多步驟是用各種經(jīng)典的邏輯證明方法推導(dǎo)得到的,包括歸納法、反證法等,甚至有些部分還是由旁聽的研究生證明的。

    留給我們的課后作業(yè)是證明逆命題:如果燈原來是關(guān)著的,現(xiàn)在卻亮了,那么請證明開關(guān)的狀態(tài)一定同原來相反。

    我動手開始證明,我真的去證明了。

    我在圖書館里待了很長時間。

    我對照著Zuck博士的原始證明想依樣畫葫蘆。研究了幾個小時之后,我在其中發(fā)現(xiàn)了一個錯誤。可能我抄寫的時候抄錯了,但是這使得我想通了一件事。如果花費(fèi)3個小時,寫滿了一塊又一塊的黑板,每一秒鐘都可能出錯,最后能夠證明的卻只是一個很瑣碎的結(jié)論,那么這種方式有多大的實(shí)用性呢?在活生生、充滿趣味的現(xiàn)實(shí)世界中,你永遠(yuǎn)都不會有機(jī)會使用它。

    但是,動態(tài)邏輯的理論家們對這一點(diǎn)不感興趣。他們看上它不是因?yàn)樗杏茫且驗(yàn)樗梢詾樗麄儙斫K身教職。

    我放棄了這門課,并且發(fā)誓絕不會去讀計(jì)算機(jī)科學(xué)的研究生。

    這個故事告訴我們,計(jì)算機(jī)科學(xué)與軟件開發(fā)不是一回事。如果你真的非常幸運(yùn),你的學(xué)校可能會開設(shè)很像樣的軟件開發(fā)課程。但是另一種可能是,你的學(xué)校根本不教你在現(xiàn)實(shí)中如何編程,因?yàn)榫W(xué)校都覺得,教授工作技能最好留給職業(yè)技術(shù)學(xué)校、犯人重返社會的培訓(xùn)項(xiàng)目去做。你到處都能學(xué)怎么寫代碼。別忘了,我們是耶魯大學(xué),我們的使命是培養(yǎng)未來的世界領(lǐng)袖。你交了16萬美元的學(xué)費(fèi),卻在學(xué)循環(huán)語句的寫法,這怎么可以?你以為這是什么地方,難道是機(jī)場沿途的酒店里臨時拼湊起來不靠譜的Java語言培訓(xùn)班?哼哼。

    麻煩在于我們沒有一種真正教授軟件開發(fā)的專門學(xué)校。你如果想成為一個程序員,你可能只能選擇計(jì)算機(jī)科學(xué)專業(yè)。這是一個不錯的專業(yè),但是它同軟件開發(fā)不是一回事。在那些400等級的課程代號中,去尋找名稱中帶有“Practicum”這個詞的課程吧(編者注:指供人實(shí)習(xí)的課程)。不要被這個拉丁語單詞嚇倒,這些都是有用的課程,之所以起這種名字,只是為了讓那些文縐縐、裝腔作勢、滿嘴胡說八道的公司經(jīng)理們覺得高深莫測。

    別擔(dān)心所有工作都被印度人搶走

    我首先要說的是,如果你本身就已經(jīng)在印度了,或者你就是印度人,那么你真的毫無必要去想這件事,根本不用琢磨所有的工作機(jī)會是不是都跑到了印度。那些都是非常好的工作,好好地享受吧,祝你身體健康。

    但是,我不斷聽說計(jì)算機(jī)系的入學(xué)人數(shù)下降得很厲害,已經(jīng)到了危險的程度。根據(jù)我聽到的說法,其中的一個原因是學(xué)生們不愿去學(xué)一個工作機(jī)會都流向印度的專業(yè)。這種擔(dān)心大錯特錯,有很多理由可以反駁。首先,根據(jù)一時性的商業(yè)潮流決定個人的職業(yè)選擇,這是愚蠢的。其次,即使編程工作無一幸存地都流向了印度和中國,但是學(xué)習(xí)編程本身依然是一種第一流的素質(zhì)訓(xùn)練,可以為各種超級有趣的工作打下基礎(chǔ),比如業(yè)務(wù)流程工程(business process engineering)。再次,不管是在美國還是在印度,真正優(yōu)秀的程序員依然是非常非常短缺的,這一點(diǎn)請相信我。不錯,確實(shí)有相當(dāng)一批失業(yè)的IT從業(yè)者在那里鼓噪,抱怨他們長時間找不到工作,但是你知道嗎?即使冒著觸怒這些人的風(fēng)險,我還是要說,真正優(yōu)秀的程序員根本不會失業(yè)。最后,你還能找到更好的專業(yè)嗎?你覺得什么專業(yè)好?主修歷史學(xué)?如果那樣,你畢業(yè)的時候就會發(fā)現(xiàn),根本沒有其他選擇,只能去法學(xué)院。不過我倒是知道一件事:99%的律師都痛恨他們的工作,痛恨他們當(dāng)律師的每一分鐘。可是,律師每周的工作時間偏偏長達(dá)90小時。就像我前面說過的:如果你喜歡編程,那么你真是受到了上天的眷顧。你是非常幸運(yùn)的少數(shù)人之一,能夠以自己喜歡的事謀生。

    不過說實(shí)話,我不覺得學(xué)生們真的有上面的想法。近年來,計(jì)算機(jī)系入學(xué)人數(shù)的下降只是回到了歷史上的正常水平,因?yàn)榍靶┠甑幕ヂ?lián)網(wǎng)狂熱使得入學(xué)人數(shù)出現(xiàn)了大泡沫,抬高了基數(shù)。由于這種泡沫,許多并不真的喜歡編程的人也來讀計(jì)算機(jī)系。他們心里想的是,只要進(jìn)了計(jì)算機(jī)系,將來就能找到誘人的高薪工作,就能獲得24歲當(dāng)上CEO、進(jìn)行IPO的機(jī)會。謝天謝地,這些人現(xiàn)在都離計(jì)算機(jī)系遠(yuǎn)遠(yuǎn)的了。

    找一份好的暑期實(shí)習(xí)工作

    精明的招聘負(fù)責(zé)人都知道,喜歡編程的人高中時就將牙醫(yī)的信息輸入了數(shù)據(jù)庫,進(jìn)入大學(xué)前就去過三次電腦夏令營,為校報做過內(nèi)容管理系統(tǒng),有過軟件公司的夏季實(shí)習(xí)經(jīng)歷。招聘負(fù)責(zé)人就是要在你的簡歷上找這些東西。

    如果你喜歡編程, 就不要隨便什么工作都答應(yīng),否則你會犯下最大的錯誤。不管是暑期工作,還是兼職或者其他性質(zhì)的工作,只要與編程無關(guān),就不要輕易接受。我知道,其他19歲的孩子都想去購物中心里打工,在那里折疊襯衫。但是你與他們不同,你19歲時就已經(jīng)掌握了一門非常有價值的技能。將時間浪費(fèi)在折疊襯衫上是很愚蠢的,等到畢業(yè)的時候,你的簡歷上本應(yīng)該寫滿了一大堆與編程相關(guān)的經(jīng)歷。就讓那些財經(jīng)類的畢業(yè)生去租車公司幫助人們滿足他們租車的需要吧,你要干的是別的事(在電視中扮演超人的Tom Welling1除外)。

    為了讓你的生活變得更容易一些,也為了強(qiáng)調(diào)這整篇文章完全是為了滿足我的個人目的,我要告訴你,我的公司——Fog Creek軟件公司——提供軟件開發(fā)方面的暑期實(shí)習(xí)機(jī)會。我們非常看重簡歷。比起其他公司的實(shí)習(xí)工作,你在Fog Creek最有可能學(xué)到更多的編寫代碼、軟件開發(fā)、商業(yè)運(yùn)作方面的知識。這是去年夏天我們的一個實(shí)習(xí)生Ben說的。他會這樣說,并不完全是因?yàn)槲遗闪巳说剿乃奚嶙屗@樣說。我們接受實(shí)習(xí)申請的截止日期是21日。一起來吧。

    如果你聽從了我的建議,你還是有可能落得一個悲慘的下場,比如很早就賣掉了微軟公司的股票,再比如拒絕了谷歌公司的工作機(jī)會,原因是你想要一間自己的可以關(guān)上門的獨(dú)立辦公室,或者做出了其他生命中愚蠢的決定。但是,這些可不是我的錯。我一開始就告訴過你,不要聽我的話。

    (注1 T o m W e l l i n g是一個美國演員, 在電視劇《超人前傳》(Smallville)中扮演超人。該電視劇講述還沒有成長為后來超人的克拉克·肯特少年時代的故事。)

    作者簡介:

    Joel Spolsky,世界最具影響的程序員網(wǎng)志Joel on Software的主人,軟件業(yè)一位旗幟鮮明的思想者,一位傳統(tǒng)軟件管理理念的挑戰(zhàn)者。他創(chuàng)辦的這個網(wǎng)站被程序員譽(yù)為反呆伯特宣言書,并被翻譯為三十多種語言。Joel畢業(yè)于耶魯大學(xué),隨后即進(jìn)入微軟公司工作,曾任微軟公司E x c e l 開發(fā)小組項(xiàng)目經(jīng)理。現(xiàn)在他在自己創(chuàng)辦的Fog Creek軟件公司任CEO。此外,他與人合辦的Stack Overflow已經(jīng)成為如今最熱門的技術(shù)網(wǎng)站。
    www.kuangtao.net  狂淘購物網(wǎng)

    posted on 2010-01-29 14:34 狂淘 閱讀(135) 評論(0)  編輯  收藏 所屬分類: 生活
    主站蜘蛛池模板: 亚洲视频国产视频| 亚洲jizzjizz在线播放久| 久久久久高潮毛片免费全部播放 | fc2成年免费共享视频网站| 亚洲精品国产精品乱码在线观看| 97在线线免费观看视频在线观看 | 亚洲乱码中文字幕在线| 国产AV无码专区亚洲AWWW| xxxxwww免费| 亚洲黄片手机免费观看| 亚洲天堂一区在线| 亚洲精品国产自在久久 | 黄色毛片免费在线观看| 亚洲视频一区在线播放| 亚洲av区一区二区三| 美女内射毛片在线看免费人动物| 牛牛在线精品观看免费正| 亚洲一区二区三区不卡在线播放| 亚洲一区精品伊人久久伊人| 成年私人影院免费视频网站| 国内精品免费视频精选在线观看| 亚洲丁香婷婷综合久久| 亚洲一本综合久久| 五月婷婷亚洲综合| 永久免费AV无码国产网站| 182tv免费视频在线观看| 国产区图片区小说区亚洲区| 亚洲成人福利在线观看| 亚洲AV日韩AV永久无码久久 | 亚洲AV无码码潮喷在线观看| 国产成人精品免费直播| 最近免费中文在线视频| 二区久久国产乱子伦免费精品| 亚洲精品无码久久久久APP | 亚洲理论在线观看| 久久亚洲精品国产精品黑人| 免费99热在线观看| 四虎影院在线免费播放| 黄页免费的网站勿入免费直接进入| 国产一区二区免费视频| 国产真人无码作爱免费视频|