一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

一個(gè)很有借鑒價(jià)值的編程故事

 北書(shū)房2014 2017-03-12

  英文原文:A Cautionary Tale of Learning to Code

  這是一個(gè)真實(shí)的故事,關(guān)于我自己的。一個(gè)理智的生命個(gè)體是怎么一步步走向瘋狂?

  我穿著西裝,坐在辦公室里,腦子里有一個(gè)模糊的創(chuàng)業(yè)想法。然后,我決定學(xué)習(xí)編程。我曾經(jīng)無(wú)意中聽(tīng)到過(guò)幾個(gè)人在那吹牛說(shuō)自己怎么使用一種叫Ruby的語(yǔ)言輕松實(shí)現(xiàn)自動(dòng)辦公。我想“呵,Ruby”。我回到家,谷歌Ruby。15秒之后,我隨機(jī)選擇了一個(gè)Ruby教程,開(kāi)始學(xué)習(xí)。

  一周以后,我參加人生中的第一次黑客聚會(huì)。在場(chǎng)的每個(gè)人都在討論什么Scala,Clojure,Go。我想,他們學(xué)得還真是多。轉(zhuǎn)身我就借了三本O'reilly的書(shū),每本書(shū)看了大概50頁(yè)。

  什么?你問(wèn)我為什么沒(méi)有完整地看完一本書(shū)?那還不是因?yàn)槊勘緯?shū)開(kāi)始的時(shí)候簡(jiǎn)單易懂,然后就開(kāi)始做假設(shè),假設(shè)你具備這個(gè)知識(shí),假設(shè)你會(huì)使用那種工具,可是這些我都不會(huì)好嗎?

  我的一個(gè)朋友告訴我應(yīng)該學(xué)Emacs,并且給了我他的配置文件。我又花了幾個(gè)小時(shí)學(xué)習(xí)基本的Lisp語(yǔ)法,以便我能自己設(shè)置配置文件。

  然后一個(gè)人從我身邊經(jīng)過(guò),看見(jiàn)我正在使用Emacs,就問(wèn)“你怎么還在用Emacs(表情自行腦補(bǔ)),你不知道Vim更好嗎?”我想“呵,Vim”,于是我開(kāi)始背誦Vim成堆的鍵盤(pán)快捷鍵。

  工程師們經(jīng)常討論這樣一個(gè)話(huà)題,文本編輯器哪家強(qiáng)?并且,工程師們將這看成是一場(chǎng)宗教戰(zhàn)爭(zhēng)——評(píng)判的標(biāo)準(zhǔn)不在于客觀的準(zhǔn)則,而在于歷史分歧。

  那時(shí)候,我認(rèn)為如果我打字越快,我編程的速度也會(huì)越快。所以我拋棄了傳統(tǒng)的鍵盤(pán)布局,用上了程序員必備的Dvorak鍵盤(pán)布局(就像下面這樣)。客觀上來(lái)說(shuō),對(duì)程序員而言,這是最高效的一種鍵盤(pán)布局。

  看著上面的鍵盤(pán)布局,你能告訴我有多少字母鍵,數(shù)字鍵,特殊字符鍵的位置沒(méi)有變動(dòng)嗎?答案是個(gè)位數(shù)。

  等我能夠成功啟動(dòng)Linux,一分鐘能夠敲出十個(gè)單詞的時(shí)候,我開(kāi)始通過(guò)看書(shū)和Udacity的課程學(xué)習(xí)Python。

  經(jīng)過(guò)七個(gè)月的艱苦奮戰(zhàn),我得到了第一份軟件工程師的工作。

  CTO面試我的時(shí)候,我告訴他所有我學(xué)過(guò)的工具和我正在使用的高大上的配置文件。CTO禮貌地聽(tīng)我說(shuō)著,時(shí)不時(shí)點(diǎn)點(diǎn)頭。等我吹噓完自己淵博的知識(shí)之后,他看了我一眼,然后說(shuō)“其實(shí),大部分事情都有很多解決的辦法,但是只有其中的極小一部分是有意義的”。

  四年以前,我所在的公司決定使用Ruby on Rails構(gòu)建他們的產(chǎn)品。對(duì)于語(yǔ)言的選擇,所有的工程師都沒(méi)有意見(jiàn),現(xiàn)在,他們的許多原始代碼還在工作。所有的工程師都用MacBook,因?yàn)镸acBook不僅可靠,并且和他們?cè)诋a(chǎn)品中使用的Ubuntu Linux服務(wù)器非常類(lèi)似。這里的工程師不討Vim和Emacs哪家強(qiáng),每個(gè)人使用的文本編輯器都是RubyMine,這是一個(gè)強(qiáng)大的集成開(kāi)發(fā)環(huán)境,默認(rèn)配置非常好用。這里的每個(gè)工程師使用的工具完全一致,意味著每個(gè)人可以隨便挑選自己的座位,然后立馬和左邊或右邊的同事開(kāi)始結(jié)對(duì)編程,而不需要糾結(jié)開(kāi)發(fā)環(huán)境的配置問(wèn)題。使用完全相同的配置能極大地方便兩個(gè)開(kāi)發(fā)者之間的合作。

  雖然我不會(huì)Ruby on Rails,公司也覺(jué)得我能勝任工作。因?yàn)槲視?huì)Python和Django,并且贏得了黑客馬拉松的比賽,公司認(rèn)為這些可以說(shuō)明問(wèn)題。

  最開(kāi)始的幾周真是艱難,這種艱難不僅僅來(lái)自于我來(lái)到一個(gè)新的團(tuán)隊(duì),使用一種新的語(yǔ)言,新的框架和新的代碼庫(kù),而是因?yàn)槲野l(fā)現(xiàn)身邊的人都是以一種自虐的態(tài)度在學(xué)習(xí)編程。

  我獨(dú)自在圖書(shū)館、咖啡廳坐了幾個(gè)月,每天就是盲目的通過(guò)命令行安裝各種工具,調(diào)試Linux驅(qū)動(dòng),解決一些細(xì)枝末節(jié)的問(wèn)題,比如說(shuō)括號(hào)不匹配。我涉足每一個(gè)能想到的在線課程,報(bào)了無(wú)數(shù)的MOOC課程。我認(rèn)為實(shí)際上我什么都沒(méi)學(xué)到,直到在某個(gè)月的考核中,我上升至第五位。這些經(jīng)歷給我的印象是,編程是一場(chǎng)你永遠(yuǎn)無(wú)法取得勝利的戰(zhàn)斗。我開(kāi)始明白那些看起來(lái)正常的程序員他們的過(guò)往實(shí)際上是那么灰暗,他們經(jīng)歷過(guò)太多,又壓抑得太久,不得不說(shuō),學(xué)習(xí)編程簡(jiǎn)直就是一個(gè)反社會(huì)的活兒。

  辭掉上一份工作的第一個(gè)周末,我上傳了這張自拍。那天我起了個(gè)大早,穿了件體面的西裝,穿西裝是為了提醒自己:我可是要去學(xué)習(xí)編程的人。Facebook的標(biāo)語(yǔ)“我的新辦公室——餐桌上。我每天過(guò)著朝8晚6的生活,只有在必須要休息的時(shí)候才休息”。在生活中,我學(xué)程序員說(shuō)話(huà),像他們一樣思考,現(xiàn)在,我已經(jīng)習(xí)慣了這個(gè)詞。

  我的同事幾乎從沒(méi)遇到過(guò)語(yǔ)法錯(cuò)誤,因?yàn)樗麄兊腎DE替他們解決這個(gè)問(wèn)題。而當(dāng)他們遇到一個(gè)錯(cuò)誤信息,如果在幾分鐘內(nèi)不能解決問(wèn)題,他們就會(huì)給其他同事發(fā)送一條即時(shí)消息,請(qǐng)求其他人的幫助。他們會(huì)隨意跳到別人的桌旁,然后開(kāi)始結(jié)對(duì)編程。這里的程序員不會(huì)太自我,也不自詡為精英。他們也不認(rèn)為編程是一件痛苦的事。有的只是成年朋友之間的建設(shè)性的對(duì)話(huà)。

  一個(gè)團(tuán)隊(duì)中的成員使用的工具是高度一致的。在Passion Project和黑客馬拉松中,開(kāi)發(fā)者可能會(huì)使用新的JavaScript框架,比如說(shuō)Angular.js。而在一個(gè)真正的團(tuán)隊(duì)里,成員把精力主要放在使用現(xiàn)有的技術(shù)提升產(chǎn)品之上。從這個(gè)角度來(lái)說(shuō),他們是保守的。

  在ThoughtBot你也會(huì)看到類(lèi)似的情況,在ThoughtBot中,每個(gè)人都堅(jiān)持使用一個(gè)小且高效的工具集(Rails,Vim,Postgres和Redis)。因?yàn)楣ぞ呒。怨こ處熑菀壮蔀樵擃I(lǐng)域?qū)<?,又因?yàn)槊總€(gè)人使用的工具集都是一樣的,所以相互之間進(jìn)行互操作就變得很容易。

  所以真正的問(wèn)題是,如果高效的團(tuán)隊(duì)在使用一個(gè)小且固定的工具集的時(shí)候最高效,那么是不是人們?cè)趯W(xué)習(xí)編程的時(shí)候使用一個(gè)小且固定的工具集是最好的。那些在線編程課程和編程訓(xùn)練營(yíng)顯然是這么想的。

  但是作為一個(gè)個(gè)體,可以選擇的工具那么多,真的很難決定到底該怎么選。我知道這一點(diǎn)是因?yàn)槲医?jīng)歷過(guò)。一個(gè)好的程序員的技能集合可以用T形來(lái)表示——涉獵的領(lǐng)域很多,但是真正擅長(zhǎng)的領(lǐng)域不多。但是,經(jīng)過(guò)經(jīng)年累月的積累,T形將會(huì)慢慢變成下劃線形。

  我遇到過(guò)許多學(xué)習(xí)編程的人,上來(lái)就想什么都學(xué),什么都會(huì),最終,他們都失敗了,放棄了他們成為一個(gè)程序員的夢(mèng)想。我不想這種情況也發(fā)生在你的身上。

  你需要專(zhuān)注更多方面

  事不宜遲,下面給出一些新手容易犯的大錯(cuò)誤:

  • 從這種語(yǔ)言轉(zhuǎn)到那種語(yǔ)言,又從那框架跳到這個(gè)框架,或者騙自己可以精通所有的語(yǔ)言或框架
  • 使用小眾的工具來(lái)搭建自己的開(kāi)發(fā)環(huán)境,而不是選擇傳統(tǒng)的、可信賴(lài)的工具。
  • 學(xué)習(xí)像Docker和Famo.us這樣的工具,僅僅因?yàn)樗鼈冃缕?,雖然更加基礎(chǔ)的技術(shù)都還沒(méi)掌握好。

  如果非得用一個(gè)詞來(lái)總結(jié)我的建議,我會(huì)說(shuō):專(zhuān)注。

  我問(wèn)你,你會(huì)用專(zhuān)注這個(gè)詞來(lái)描述你的編程學(xué)習(xí)計(jì)劃嗎?如果你認(rèn)為你的計(jì)劃夠?qū)Wⅲ?,你現(xiàn)在可以停止閱讀,回到你的計(jì)劃開(kāi)始學(xué)習(xí),因?yàn)槲也幌胝f(shuō)任何可能導(dǎo)致你失去專(zhuān)注的事情。

  如果你還的計(jì)劃不夠?qū)W?,那你也有福了——照我說(shuō)的去做,你也能專(zhuān)注,但是這需要花費(fèi)你幾分鐘的時(shí)候做幾個(gè)艱難的決定。等等,你們別走?。?/p>

  好的,你還沒(méi)走。下面就是你需要做出的艱難的決定。

  1. 選擇一種軟件類(lèi)型,可以是Web應(yīng)用,手機(jī)應(yīng)用,游戲,或者嵌入式。我推薦web應(yīng)用,因?yàn)樗鼔蜢`活。學(xué)習(xí)的資源也很多,工作機(jī)會(huì)更是數(shù)不勝數(shù)。如果你的興趣點(diǎn)不在web應(yīng)用上,關(guān)掉這個(gè)頁(yè)面,在Google搜索框里面輸入“getting started in _____ development”,將返回的結(jié)果一條條點(diǎn)進(jìn)去看。
  2. 選擇一種編程語(yǔ)言:JavaScript,Ruby或者Python。每種語(yǔ)言有自己的強(qiáng)項(xiàng),都有與之相對(duì)的用于構(gòu)建web應(yīng)用的工具(分別是Node.js,Rails或Django)。除非你自己明確知道自己該學(xué)哪種語(yǔ)言,否則我推薦你學(xué)習(xí)JavaScript,因?yàn)樗褂米顝V泛。
  3. 選擇一門(mén)在線課程。這里有一些選項(xiàng)供你選擇:如果對(duì)JavaScript感興趣,去FreeCodeCamp.com或者NodeSchool.io上找;如果對(duì)Ruby感興趣,去TheOdinProject.com或者TeamTreehouse.com上找;如果對(duì)Python感興趣,去Udacity.com上找。相信設(shè)計(jì)這些課程的老師們的智慧,按照建議的順序完成這門(mén)課程,不要跳來(lái)跳去。
  4. 買(mǎi)一個(gè)新的/舊的MacBook,或者在你現(xiàn)在的電腦上安裝Ubuntu Linux。至于其他你可能需要的工具,按照在線課程的建議安裝即可。

  一旦你做出了這些決定,剩下的路就太簡(jiǎn)單了。你只要保持清醒,不要被周?chē)男鹿ぞ咚曰?。一周七天,每天學(xué)一點(diǎn)在線課程,哪怕一次只有半小時(shí)。相信你今天做出的決定。最后,請(qǐng)記住:只要有耐心,任何能干的人都能成為絕世coder,當(dāng)然也包括你。

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    亚洲av熟女国产一区二区三区站| 国产成人精品99在线观看| 亚洲欧美精品伊人久久| 婷婷基地五月激情五月| 一区二区福利在线视频| 99国产精品国产精品九九| 丰满人妻少妇精品一区二区三区| 99久久人妻中文字幕| 91精品视频免费播放| 国产一区二区三区草莓av| 久久大香蕉精品在线观看| 亚洲一区二区精品免费| 日本久久精品在线观看| 日本一区二区三区久久娇喘| 日韩精品一级片免费看| 久久亚洲成熟女人毛片| 欧美国产日韩在线综合| 亚洲中文在线男人的天堂| 亚洲精品成人福利在线| 女人精品内射国产99| 国语久精品在视频在线观看| 熟女中文字幕一区二区三区| 99久免费精品视频在线观| 日韩人妻毛片中文字幕| 韩国日本欧美国产三级| 国产极品粉嫩尤物一区二区| 免费播放一区二区三区四区| 亚洲精品福利视频你懂的| 在线视频免费看你懂的| 黄片免费在线观看日韩| 少妇在线一区二区三区| 精品偷拍一区二区三区| 亚洲三级视频在线观看免费| 日韩熟妇人妻一区二区三区 | 人妻精品一区二区三区视频免精 | 精品国产品国语在线不卡| 日韩欧美在线看一卡一卡| 国产一区二区精品丝袜| 四季av一区二区播放| 九九热视频网在线观看| 91人妻人人揉人人澡人|