<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          React 作者 Dan 的十年回顧

          共 11615字,需瀏覽 24分鐘

           ·

          2024-05-11 07:55

          我的十年回顧

          2020 年 1 月 1 日
          我作為一名剛從高中畢業(yè)的一年級(jí)大學(xué)生開始了這十年。我當(dāng)時(shí)17歲,沒有工作,沒有任何行業(yè)聯(lián)系,而且真的什么都不懂。現(xiàn)在你正在閱讀我的博客!我會(huì)感到自豪的。
          我在不同的播客上講述了我的故事的一些片段。現(xiàn)在感覺是時(shí)候?qū)懴铝钗易铍y忘的部分了。
          每個(gè)人的故事都是獨(dú)一無(wú)二的,無(wú)法直接復(fù)制。我出生在一個(gè)上層中產(chǎn)階級(jí)家庭,而且看起來(lái)像一個(gè)典型的程序員刻板印象,這讓我受益匪淺。人們?cè)谖疑砩厦半U(xiǎn)。盡管如此,我還是希望分享我的故事能夠有助于比較我們的經(jīng)歷。即使我們的情況相差很大,至少你可能會(huì)發(fā)現(xiàn)其中的一些有趣。

          2010年

          我出生在俄羅斯,2009 年在那里完成了高中學(xué)業(yè)。在俄羅斯,如果你考試成績(jī)足夠好,高等教育是免費(fèi)的。我在幾所大學(xué)嘗試過機(jī)會(huì)。我特別希望能進(jìn)入一所學(xué)生經(jīng)常贏得編程比賽的大學(xué)(我當(dāng)時(shí)認(rèn)為這很酷)。
          然而,事實(shí)證明我的數(shù)學(xué)考試成績(jī)不夠好。因此,我可以選擇的與編程有關(guān)的選項(xiàng)并不多。從剩下的選項(xiàng)中,我選擇了一所向?qū)W生提供 Macbook 的大學(xué)。(還記得帶有 GarageBand 的白色塑料耳機(jī)嗎?它們是最好的。)
          2010 年夏天,我剛剛完成了在那里的第一年。事實(shí)證明,在接下來(lái)的兩年里,課程中不會(huì)有太多編程內(nèi)容。但有很多線性代數(shù)、物理和其他科目我覺得不是特別有趣。一開始一切都很好,但我開始偷懶,逃課,而我必須早起聽課。我的知識(shí)差距逐漸像滾雪球一樣越滾越大,大學(xué)第一年我所記得的大部分內(nèi)容都是與徹底失敗的感覺相關(guān)的焦慮。
          即使對(duì)于我熟悉的科目,事情也沒有完全按照我的計(jì)劃進(jìn)行。我們的英語(yǔ)課非常基礎(chǔ),我得到了老師的口頭批準(zhǔn),可以跳過大部分課程。但當(dāng)我來(lái)參加期末考試時(shí),我不被允許_交卷_,除非我付錢跟同一個(gè)老師進(jìn)行幾個(gè)小時(shí)的“補(bǔ)習(xí)”。這段經(jīng)歷讓我對(duì)高等教育產(chǎn)生了怨恨和懷疑。
          除了是一個(gè)糟糕的學(xué)生之外,我還處于我的第一段認(rèn)真的戀愛關(guān)系中——而且進(jìn)展得也不太順利。我不高興,但我認(rèn)為你可以通過繼續(xù)不高興并“解決”它來(lái)解決這個(gè)問題。不幸的是,我沒有智慧再擺脫幾年的非工作關(guān)系。
          現(xiàn)在到了光明的一面。從職業(yè)角度來(lái)說,2010 年對(duì)我來(lái)說是激動(dòng)人心的一年。我找到了第一份工作——軟件開發(fā)人員!事情是這樣發(fā)生的。
          我的大學(xué)附近有一個(gè)小場(chǎng)地,舉辦了不同的活動(dòng)。這個(gè)場(chǎng)所是一個(gè)“企業(yè)孵化器”——請(qǐng)注意,不是硅谷類型的企業(yè)孵化器——而是一個(gè)小型的俄羅斯企業(yè)孵化器。我不知道他們“孵化”了什么企業(yè)。然而,他們舉辦了一場(chǎng)有關(guān)軟件開發(fā)的演講,我決定去看看,因?yàn)槲曳浅?释@類內(nèi)容。我在現(xiàn)實(shí)生活中不認(rèn)識(shí)任何程序員,也不知道聚會(huì)的存在!
          我現(xiàn)在不記得談話內(nèi)容了。但我知道給出這個(gè)消息的人是一家俄美外包公司的高管。我從 12 歲起就開始編程,所以我找到他并詢問他們是否正在招聘。他給了我一封電子郵件,我完成了他們的測(cè)試練習(xí),幾周后就得到了這份工作。
          我在 2010 年夏天開始了我的第一份工作。我的薪水是每年 18,000 美元(是的,這是 18,而不是 180)。這在發(fā)達(dá)國(guó)家來(lái)說是微不足道的,但同樣,這是俄羅斯——所以租金也很便宜。我立即搬出了媽媽的公寓,開始以每月 150 美元的價(jià)格租一個(gè)房間。我很興奮。我用我的第一份薪水買了一部 iPhone,并驚嘆于它的 UI 有多好。
          夏天來(lái)了又去,大學(xué)第二年開始了。但這是在沒有我的情況下開始的。現(xiàn)在我開始做實(shí)際的工作,人們付錢給我,我就失去了聽課和做練習(xí)的最后一點(diǎn)動(dòng)力。我不再去那里了,也沒有參加期中考試。我歸還了我的 Macbook。我唯一一次去那里是五年后,去取論文。
          一個(gè)簡(jiǎn)短的題外話。我并不是說大學(xué)毫無(wú)價(jià)值,或者你應(yīng)該退學(xué)。這對(duì)我來(lái)說是正確的決定,但我知道當(dāng)事情困難時(shí)我可以依靠我的家人(稍后會(huì)詳細(xì)介紹)。我也已經(jīng)有工作了。
          由于我的背景(一個(gè)很早就開始編碼的人),我有幸_默認(rèn)_被視為知識(shí)淵博。不符合這種刻板印象的人通常會(huì)獲得學(xué)位只是為了獲得假定的能力。所以就是這樣。

          2011年

          我的大部分工作是在更便宜的外包公司之后修復(fù)糟糕的代碼。由于我自己沒有行業(yè)經(jīng)驗(yàn),我對(duì)每個(gè)項(xiàng)目都進(jìn)行了過度設(shè)計(jì),以嘗試我能掌握的每一種很酷的技術(shù)。我什至將隨機(jī)的 Microsoft Research 項(xiàng)目投入生產(chǎn)。對(duì)于那個(gè)很抱歉。我也做了一些很好的工作。
          我的第一個(gè)有趣的工作項(xiàng)目是一次旅行。我們的客戶是紐約的一家投資集團(tuán)。我對(duì)投資還是一無(wú)所知,但基本上他們有一個(gè)電子郵件系統(tǒng)來(lái)接收訂單,這些訂單需要經(jīng)過不同級(jí)別的審批。他們有一項(xiàng)服務(wù)可以管理這一點(diǎn),但該服務(wù)非常不穩(wěn)定,沒有人能弄清楚它是如何工作的。我的工作是去現(xiàn)場(chǎng),在紐約工作一個(gè)月,并修復(fù)服務(wù)。
          該服務(wù)是由一家更便宜的外包公司的承包商編寫的。九年過去了,我仍然記得他的名字。該代碼中最令人難忘的部分是一個(gè)三萬(wàn)行函數(shù)。為了弄清楚它的作用,我必須將其打印在紙上,將紙張放在桌子上,然后用鉛筆進(jìn)行注釋。事實(shí)證明,這是同一個(gè)代碼塊,在不同的條件下重復(fù)了五十次。我猜某人的報(bào)酬是按代碼行數(shù)計(jì)算的。
          那個(gè)月我添加了一些日志記錄來(lái)弄清楚該服務(wù)在生產(chǎn)中的作用,然后從頭開始重建它以減少不穩(wěn)定。在一家非科技公司工作是一次令人困惑的經(jīng)歷。例如,如果不編寫一個(gè) Word 文檔來(lái)描述我的更改并讓 IT 部門負(fù)責(zé)人簽字同意,我就無(wú)法推送錯(cuò)誤修復(fù)。現(xiàn)在_是_一些代碼審查。
          旅行即將結(jié)束時(shí),我深夜去酒吧看了一場(chǎng)音樂會(huì)。第二天早上,我應(yīng)該向客戶展示我一個(gè)月的工作。我的會(huì)議安排在上午 9 點(diǎn)。不幸的是,我睡過頭了,直到下午1點(diǎn)才醒來(lái)。我的經(jīng)理為我道歉,我滿臉尷尬地回家了。
          工作中沒有受到任何影響。這個(gè)項(xiàng)目總體上是成功的,客戶知道我是一個(gè)奇怪的俄羅斯家伙,不知道如何梳理頭發(fā)。但我知道我讓自己出丑了。我也并不是特別期待更多的“企業(yè)項(xiàng)目”。工作變成了一件苦差事。
          我回到了俄羅斯的圣彼得堡。夏天,那里的天空不會(huì)變黑。在一個(gè)晚上的自我反省中,我?guī)е环N模糊的不安感從一家酒吧跳到了另一家。早上7點(diǎn)左右,我腦子里突然靈光一閃。我吃了一份沙威瑪,坐地鐵去辦公室,等HR,然后辭職了。
          我的朋友正計(jì)劃去克里米亞旅行(在克里米亞被吞并之前),并問我是否愿意加入。我收拾了一個(gè)帳篷和一部舊諾基亞手機(jī),電池可以用一周。我們?cè)诓煌乃季S狀態(tài)迷霧中露營(yíng)了兩周,大部分時(shí)間都赤身裸體。除了兩集之外,我?guī)缀醪挥浀媚谴温眯械娜魏问虑椤?br>有一次,有人拿刀威脅我。那個(gè)人說要?dú)⒘宋遥诙焖妥吡耍磺卸既绯!_€有一次,我愚蠢地試圖獨(dú)自繞著懸崖游泳,差點(diǎn)被淹死。我被海里的一塊巖石救了,我爬了上去,昏倒了大約一個(gè)小時(shí)。
          這次旅行就像一次硬件重置。我的倦怠得到了治愈,我準(zhǔn)備好再次編寫代碼了。(但不要說我告訴過你要差點(diǎn)死才能治愈倦怠。)
          唯一的問題是……我的技能無(wú)關(guān)緊要!哎呀。
          你看,我主要是在編寫桌面軟件。有人聽說過桌面軟件嗎?那已經(jīng)不是什么事情了。要么你做后端,要么你做移動(dòng),要么你做前端。我對(duì)他們倆一無(wú)所知。而且我沒有工作。所以我不得不搬回去和媽媽住在一起。(謝謝媽媽!)
          很快,我在社交網(wǎng)絡(luò)上看到了一條帖子。這是一個(gè)從硅谷回到俄羅斯的俄羅斯人寫的。他正在尋找愿意免費(fèi)參與他的項(xiàng)目的人,作為回報(bào)他免費(fèi)教我們網(wǎng)絡(luò)開發(fā)。當(dāng)時(shí),這對(duì)我來(lái)說聽起來(lái)很劃算。
          我加入了這個(gè)計(jì)劃。我很快發(fā)現(xiàn)沒有真正的教學(xué)參與:我們從網(wǎng)上得到了一些教程,我們大部分是通過互相幫助來(lái)學(xué)習(xí)的。幸運(yùn)的是,當(dāng)我住在媽媽家時(shí),我有能力這樣做一段時(shí)間。我學(xué)習(xí)了 Git、Python 基礎(chǔ)知識(shí)、Django、一點(diǎn) CSS 和 JavaScript 以及一些 Bash 來(lái)部署我的更改。你好,網(wǎng)絡(luò),我來(lái)了。
          九年后,我仍然不確定我對(duì)這個(gè)項(xiàng)目的感受。一方面,我們免費(fèi)參與他的項(xiàng)目。另一方面,我們獲得了完全的 root 訪問權(quán)限,能夠在生產(chǎn)中推動(dòng)我們的更改并從錯(cuò)誤中吸取教訓(xùn),這真的很令人興奮。它給了我們一個(gè)學(xué)習(xí)的結(jié)構(gòu)。我們不需要花任何錢,而且你可以隨時(shí)退出。由于圍繞教育,這些項(xiàng)目具有一定的社會(huì)效用。這讓我想起了開源。
          我仍然感謝這個(gè)人設(shè)立了這個(gè)臨時(shí)“訓(xùn)練營(yíng)”并成為我的導(dǎo)師。但我不想暗示免費(fèi)工作通常是一種很好的練習(xí)方式。我不是在這里提供建議——我只是講述我的故事。
          我建立了一個(gè)儀表板,我們可以在其中跟蹤自己的學(xué)習(xí)成績(jī)。我的導(dǎo)師建議我將其作為產(chǎn)品推銷給開設(shè)課程的公司。我短暫地嘗試“初創(chuàng)公司”是很尷尬的。我不知道我在開發(fā)什么產(chǎn)品,而且我向不同的人推銷不同的東西。本質(zhì)上,我最終用一個(gè)引擎為不同的客戶制作了幾個(gè)完全不同的網(wǎng)站,并在此過程中賺取了大約 200 美元。我在這上面浪費(fèi)了幾個(gè)月的時(shí)間,也浪費(fèi)了愿意提供幫助的朋友的時(shí)間。我對(duì)此感到羞恥,并將其關(guān)閉。一線希望是我成為了一名網(wǎng)絡(luò)開發(fā)人員。
          但我仍然沒有工作。

          2012年

          作為一名 20 歲的 Web 開發(fā)人員,我只想在一個(gè)地方工作。這是一家俄羅斯社交媒體公司。俄羅斯的每個(gè)人都使用他們的產(chǎn)品。那個(gè)產(chǎn)品非常精致。而且這個(gè)團(tuán)隊(duì)被認(rèn)為_很酷_。幾乎是精英。
          他們的高管經(jīng)常發(fā)布有關(guān)他們工程師的薪酬有多高的信息。這個(gè)工程師小團(tuán)隊(duì)似乎對(duì)技術(shù)挑戰(zhàn)以及公司對(duì)待這些挑戰(zhàn)的方式感到滿意。在俄羅斯科技圈,許多人都知道他們的名字。
          我的導(dǎo)師向我介紹了他們的 CTO,我得到了一份 JavaScript 練習(xí)。它涉及到構(gòu)建他們的預(yù)先輸入的克隆,你可以在其中選擇要發(fā)送消息的朋友。我花了兩周時(shí)間構(gòu)建它。它在所有瀏覽器中都是像素完美的。我小心翼翼地復(fù)制了類似的緩存和去抖動(dòng)行為。
          現(xiàn)場(chǎng)面試是一場(chǎng)災(zāi)難。顯然,我沒有他們規(guī)模的經(jīng)驗(yàn)。然而,他們表示,如果我“了解他們的產(chǎn)品”,他們?cè)敢饨o我嘗試一下。他們給了我一個(gè)為該社交媒體網(wǎng)站設(shè)計(jì)注銷狀態(tài)的練習(xí)。他們希望它顯示功能手機(jī)的圖片 - 許多人不知道該移動(dòng)網(wǎng)站可以在廉價(jià)手機(jī)上運(yùn)行。
          我花了一周時(shí)間設(shè)計(jì)該頁(yè)面。我做了很多小細(xì)節(jié),甚至在里面藏了一些復(fù)活節(jié)彩蛋。我為自己感到驕傲。然而,我找不到任何設(shè)計(jì)得體、看起來(lái)不難看的功能手機(jī)。相反,我在那里放了一個(gè)漂亮的 iPhone 設(shè)計(jì)。我想,如此美觀。
          當(dāng)然,我被拒絕了。我實(shí)際上忽略了唯一的硬性要求——為什么我這么笨?我哭了幾個(gè)小時(shí),因?yàn)槲艺娴牟幌朐谄渌胤焦ぷ鳌N胰匀缓蛬寢屪≡谝黄穑瑳]有賺錢。
          當(dāng)時(shí)我嚴(yán)重懷疑自己的技術(shù)。很多事情對(duì)我來(lái)說都是“神奇的”。畢竟,我開始懷疑退學(xué)是否是一個(gè)好主意。我在 iTunes U 上報(bào)名了 iOS 開發(fā)課程。我還在 Coursera 上報(bào)名了兩門課程:編譯器和機(jī)器學(xué)習(xí)。也許他們會(huì)讓我成為一個(gè)“真正的程序員”。
          獨(dú)自完成這些課程是很孤獨(dú)的。我與我們的網(wǎng)絡(luò)開發(fā)“訓(xùn)練營(yíng)”的一些人組織了一次小型聚會(huì)。我們會(huì)在我導(dǎo)師的聯(lián)合辦公空間聚集并觀看不同的在線課程。
          一個(gè)月后,我收到一封電子郵件。有人想招聘一名開發(fā)人員,他從參加我聚會(huì)的人那里聽說了我。我患有單核細(xì)胞增多癥,忽略了這封電子郵件,但這個(gè)人一直給我發(fā)電子郵件。他想用Skype。
          羅曼·馬祖連科 (Roman Mazurenko) 并不是典型的初創(chuàng)公司創(chuàng)始人。Roman 對(duì) DIY 出版很感興趣。幾年來(lái),他和幾個(gè)朋友一起讓莫斯科變得很酷。他組織聚會(huì)并為時(shí)尚雜志擺姿勢(shì)。我不知道會(huì)發(fā)生什么。但羅曼非常腳踏實(shí)地,交談起來(lái)很有趣。他的夢(mèng)想是建立一個(gè)像這個(gè)概念視頻中那樣的 DIY 發(fā)布平臺(tái)。我必須搬到莫斯科并隨時(shí)隨地學(xué)習(xí) iOS 開發(fā)。(順便說一句,視頻中的人不是Roman,而是一個(gè)朋友,視頻中的應(yīng)用程序是用Flash制作的假動(dòng)畫。Roman非常擅長(zhǎng)制作煙霧和鏡子。)
          我說是。
          我沒有完成我的編譯器和機(jī)器學(xué)習(xí)課程。我學(xué)到了足夠多的知識(shí),知道這些主題并不神奇。在那之后,我對(duì)它們失去了大部分興趣。

          2013年

          到 2013 年,我的薪水達(dá)到了 3 萬(wàn)美元/年——幾乎是我之前工作的兩倍。雖然按美國(guó)標(biāo)準(zhǔn)來(lái)看較低,但在俄羅斯卻相當(dāng)不錯(cuò)。我還在 Stampsy 談判了一些股票(劇透警告:它最終完全一文不值)。
          我們的團(tuán)隊(duì)有五名開發(fā)人員和兩名設(shè)計(jì)師。我們一開始是開發(fā)一款 iPad 應(yīng)用程序,但我們都對(duì) iOS 沒有任何真正的了解。我記得當(dāng)隊(duì)友第一次弄清楚如何實(shí)現(xiàn)我們需要的動(dòng)畫時(shí),我松了口氣。在那之前,我以為我們注定要失敗。
          幾個(gè)月來(lái),我確實(shí)住在我們的辦公室里。回顧這段時(shí)期,我對(duì)自己的生活與工作平衡并不感到自豪,而且這種平衡并不健康。然而,這幾個(gè)月我學(xué)到的東西比兩年前更多,我并不后悔。
          最終,我搬出了辦公室。我開始和羅曼住在同一套公寓里。我的房間每月花費(fèi) 1000 美元。這是一套寬敞的公寓,位于莫斯科唯一我喜歡的區(qū)域,距離辦公室僅五分鐘步行路程。
          我們認(rèn)為我們編寫的某些代碼可能對(duì)其他人有用。因此我們開始在 GitHub 上發(fā)布這些作品。我們并沒有期待什么偉大的事情,即使得到一些貢獻(xiàn)也真的很好。我在那段時(shí)間從事的最受歡迎的項(xiàng)目有 30 顆星。對(duì)我們來(lái)說,這已經(jīng)很多_了_。
          我們團(tuán)隊(duì)的一位設(shè)計(jì)師向我介紹了 Bret Victor 的演講,特別是《原則發(fā)明》。我認(rèn)為這是一次非常好的談話。_非常_好的一個(gè)。
          四月份,我們發(fā)布了我們一直在開發(fā)的iPad 應(yīng)用程序。Apple 聯(lián)系了我們的團(tuán)隊(duì)并要求提供資源以在 App Store 中展示它。我們欣喜若狂。它保持了數(shù)周的特色,人們開始使用它。
          當(dāng)我們意識(shí)到產(chǎn)品不適合市場(chǎng)時(shí),我們的興奮很快就消失了。該應(yīng)用程序旨在創(chuàng)建漂亮的雜志式布局,但沒有人在 iPad 上擁有任何漂亮的內(nèi)容。此外,iPad 的相機(jī)質(zhì)量也很糟糕。該產(chǎn)品沒有任何意義。我們?cè)跄懿徽J(rèn)識(shí)到這一點(diǎn)呢?
          我的私人關(guān)系也崩潰了。我們并不合適,大多數(shù)時(shí)候都是因?yàn)楹ε鹿陋?dú)而互相依偎。我們終于分手了。
          有幾個(gè)月的時(shí)間,我沒有和我們共同圈子里的人說話,而是專注于工作。但我意識(shí)到我想念一位特別的朋友。我寫信給她,她說她也想念我。我安排了一起旅行的計(jì)劃。
          我感冒了。隨著我們旅行的日子越來(lái)越近,我感覺更糟,但我希望也許我會(huì)沒事。當(dāng)我從莫斯科開往圣彼得堡的火車到達(dá)時(shí),我明顯發(fā)燒了。她說無(wú)論如何也要到她那兒去。她給我泡了一些熱茶,給了我溫暖的襪子,然后我們接吻了。我搬進(jìn)去了。

          2014年

          對(duì)我來(lái)說,2014 年是 React 年。
          在經(jīng)歷了短暫的生存危機(jī)后,我們放棄了 iPad 應(yīng)用程序并決定轉(zhuǎn)向網(wǎng)絡(luò)應(yīng)用程序。這意味著我必須學(xué)習(xí) JavaScript,這次是真正的學(xué)習(xí)。我們用 Backbone 構(gòu)建了一個(gè)不錯(cuò)的原型,但交互部分的編碼很痛苦。
          我的同事看到了 React,但最初不予理睬。但幾個(gè)月后,他告訴我 React 實(shí)際上并沒有那么糟糕。我決定嘗試一下 React。諷刺的是,我從 Backbone 轉(zhuǎn)換到 React 的第一個(gè)組件是一個(gè) Like 按鈕。
          而且效果很好。_真的_很好。這感覺不像我見過的任何東西。
          對(duì)于團(tuán)隊(duì)來(lái)說,React 并不難推銷。在接下來(lái)的一年里,我們逐漸將所有 UI 轉(zhuǎn)換為 React,同時(shí)發(fā)布新功能。React 和單向數(shù)據(jù)流的原理使我們能夠更快地開發(fā)并減少錯(cuò)誤。
          我們開始了私人測(cè)試版,一些攝影師喜歡用它來(lái)創(chuàng)作視覺故事。它介于 Medium、Pinterest 和 Tumblr 之間。雖然沒有太大的吸引力,但它并不像 iPad 應(yīng)用程序那樣徹底失敗。
          使用 React 的唯一問題是幾乎沒有生態(tài)系統(tǒng)。當(dāng)我們剛開始的時(shí)候,只有一個(gè)路由器(不是_React_ Router),我們不知道如何使用它。所以我們自己做了。React Router 出來(lái)后,我們采用了它并添加了我們產(chǎn)品所需的功能。
          我們的用例沒有拖放解決方案,因此我將同事的庫(kù)移植到 React。我做了一個(gè)助手來(lái)管理文檔標(biāo)題。編寫了另一個(gè)庫(kù)來(lái)標(biāo)準(zhǔn)化 API 響應(yīng)。React IRC 頻道的 Jing Chen 提出了核心思想,并且成功了!我?guī)缀醪恢缼啄旰螅琓witter 會(huì)用這個(gè)庫(kù)建立他們的新網(wǎng)站并維護(hù)它。
          我也想為 React 本身做出貢獻(xiàn)。我聯(lián)系了 Paul O'Shannessy,詢問是否有任何我可以處理的拉取請(qǐng)求。我在幾天內(nèi)完成了第一個(gè)任務(wù),但直到幾個(gè)月后它才被合并。大項(xiàng)目發(fā)布周期等等。我對(duì)響應(yīng)緩慢感到沮喪,所以我轉(zhuǎn)而將精力投入到生態(tài)系統(tǒng)中。回想起來(lái),這更具影響力。
          2014 年,我進(jìn)行了第一次公開演講。我在我們的辦公室做了一場(chǎng)關(guān)于 React 的講座。整個(gè)活動(dòng)持續(xù)了兩個(gè)小時(shí),我仍然感到驚訝的是,大多數(shù)到場(chǎng)的人都足夠有禮貌地堅(jiān)持到了最后。
          后來(lái),我報(bào)名參加 BerlinJS 聚會(huì)并發(fā)表演講。我的主題是“React 和 Flux”。我沒有練習(xí)演講,直到時(shí)間到了才講完前半部分。人們翻白眼,我終于吸取了教訓(xùn)。從那時(shí)起,我會(huì)把每個(gè)演講排練三到十五遍。
          2014 年,我收到了 Facebook 招聘人員的第一封電子郵件。我在收件箱中錯(cuò)過了它,幾個(gè)月后才找到它。我們最終還是聊了聊,但事實(shí)證明,在美國(guó)雇用我并不容易,因?yàn)槲覜]有足夠的經(jīng)驗(yàn)_,而且_我從大學(xué)退學(xué)了。哎呀。
          我在 2014 年開始的一個(gè)項(xiàng)目對(duì)我來(lái)說特別珍貴。就像我生命中最重要的事情一樣,它是隨機(jī)發(fā)生的。我將我們的應(yīng)用程序從 require.js 轉(zhuǎn)換為 webpack 以啟用代碼分割。我讀到了一個(gè)奇怪的 webpack 功能,稱為“熱模塊替換”,它允許你在不重新加載頁(yè)面的情況下編輯 CSS。但在 webpack 中,它也適用于 JavaScript。
          我對(duì)這個(gè)功能感到非常困惑,所以我在 StackOverflow 上詢問了它。Webpack 還很新,它的創(chuàng)建者注意到了我的問題并留下了回復(fù)。它給了我足夠的信息,讓我知道我可以將此功能與 React 結(jié)合起來(lái),本著我之前提到的 Bret Victor 演講中第一個(gè)演示的精神。
          我通過編輯 React 源代碼并添加一堆全局變量,編寫了一個(gè)極其 hacky 的概念證明。我決定在它發(fā)揮作用之前我不會(huì)去睡覺,到早上 7 點(diǎn)我就有了一個(gè)可以在 Twitter 上發(fā)布的演示。在此之前沒有人關(guān)心我的 Twitter,但這條推文收到了一些點(diǎn)贊和轉(zhuǎn)發(fā),而這 20 條轉(zhuǎn)發(fā)非常有效。我當(dāng)時(shí)就知道我不是唯一一個(gè)認(rèn)為這令人興奮的人。這個(gè)概念驗(yàn)證是一次性的工作,我沒有時(shí)間在工作中繼續(xù)研究它。我休假了,在那里完成了原型。
          快速免責(zé)聲明:再說一次,我并不是說你“需要”在晚上或假期工作。我并不是在歌頌忙碌,而且有很多擁有偉大職業(yè)生涯的人卻沒有這樣做。事實(shí)上,如果我在時(shí)間管理方面做得更好,我可能會(huì)找到一種方法來(lái)在日常生活中擠出那些不受干擾的時(shí)間,或者學(xué)會(huì)在干擾中取得進(jìn)展。我分享這個(gè)是因?yàn)槲艺谥v述我的故事,假裝我在每周 40 小時(shí)內(nèi)完成了所有事情是一個(gè)謊言。

          2015年

          我們的產(chǎn)品已經(jīng)結(jié)束了內(nèi)測(cè)。它正在增長(zhǎng),但緩慢且線性。該公司的資金即將耗盡,并且正在努力籌集更多資金。我想花越來(lái)越多的時(shí)間在我的開源項(xiàng)目上。
          我還想發(fā)表我的第一次會(huì)議演講。當(dāng)然,我想談?wù)摕嶂剌d,但我知道有人已經(jīng)在 ReactConf 上提到過它,而且我認(rèn)為人們不會(huì)對(duì)此感到興奮。我決定在我的演講提案中添加一些趣味,添加“時(shí)間旅行”——同樣受到 Bret 演示的啟發(fā)。這個(gè)提議被接受了,幾個(gè)月來(lái)我沒有考慮太多。
          四月份,我的工資被推遲了幾周。最終還是完成了,但我意識(shí)到是時(shí)候?qū)ふ倚鹿ぷ髁恕N野l(fā)現(xiàn)一些公司正在使用我的一個(gè)項(xiàng)目,他們同意贊助我的工作幾個(gè)月。
          女朋友問我想不想結(jié)婚。我說我想我三十多歲就結(jié)婚了。她問:“為什么?”我實(shí)在找不到任何等待的理由,所以我們很快就買了戒指并結(jié)婚了。我們的婚禮花費(fèi)了 100 美元。
          我演講的截止日期快到了。但我不知道如何實(shí)現(xiàn)“時(shí)間旅行”。我知道 Elm 有類似的東西,但我不敢看它,因?yàn)槲覔?dān)心我會(huì)發(fā)現(xiàn)時(shí)間旅行不能在 JS 中很好地實(shí)現(xiàn)。
          當(dāng)時(shí)有很多 Flux 庫(kù)。我已經(jīng)嘗試過其中的一些,特別是 Andrew Clark 的 Flummox,我有一種模糊的感覺,使用 Flux 進(jìn)行熱重載_也_可以讓我實(shí)現(xiàn)時(shí)間旅行。Sunil 的要點(diǎn)讓我想到了一個(gè)想法:Flux 模式的變體,帶有減速器功能而不是存儲(chǔ)。我已經(jīng)為它想好了一個(gè)簡(jiǎn)潔的名字。我的演講確實(shí)需要它!
          我在時(shí)間旅行演示中及時(shí)實(shí)現(xiàn)了 Redux。我的第一次演講排練是在 Skype 上進(jìn)行的。我滿頭大汗,咕噥著,跑得太快了。排練結(jié)束時(shí),我問組織者我的演講是否好。他說“好吧……_像_你這樣的人”,我認(rèn)為這是可怕的委婉說法。
          我請(qǐng)一位來(lái)自我剛剛辭職的初創(chuàng)公司的設(shè)計(jì)師朋友幫忙讓我的幻燈片變得漂亮。我添加了動(dòng)畫和過渡。我的演講看起來(lái)越優(yōu)美,我就越平靜、越自信。我練習(xí)了十幾次。
          我飛往巴黎參加我的第一次技術(shù)會(huì)議。這可能是我一生中最快樂的一天。我第一次將面孔放在頭像旁邊。我周圍有 UI 書呆子和我個(gè)人的偶像。感覺就像去霍格沃茨一樣。
          我的演講幾乎沒有發(fā)生。早上,我發(fā)現(xiàn)我的筆記本電腦拒絕連接投影儀。我只剩下幾個(gè)小時(shí)了。Christopher Chedeau 很友善地借給我他的筆記本電腦,我將現(xiàn)場(chǎng)演示設(shè)置轉(zhuǎn)移到他的計(jì)算機(jī)上(Sublime 許可證除外,如果你看過的話,你可能會(huì)知道)。
          起初,我的演示無(wú)法在 Christopher 的筆記本電腦上運(yùn)行,因?yàn)槲覀冇胁煌?Node 版本。會(huì)議的 WiFi 非常糟糕,以至于下載另一個(gè) Node 版本是不可能的。幸運(yùn)的是,我找到了一個(gè)可以重建二進(jìn)制文件的 npm 命令。它拯救了我的演示。我用他的電腦進(jìn)行了演講,進(jìn)展順利。
          我在觀眾中遇到了很多我已經(jīng)在推特上認(rèn)識(shí)的人。其中之一就是景琛。我在 React 頻道的 IRC 聊天中想起了她,就過來(lái)打招呼。她問FB招聘人員之前有沒有聯(lián)系過我,我說我拿不到美國(guó)簽證。Jing問我是否有興趣在倫敦辦事處工作,我根本不知道_有_倫敦辦事處!我打電話給我的妻子,問她是否準(zhǔn)備搬到倫敦。我以為她會(huì)討厭這個(gè)主意,但她立即答應(yīng)了。所以我同意接受采訪。
          FB 來(lái)參加會(huì)議的有四個(gè)人,所以 Jing 就在會(huì)議酒店安排了一次完整的采訪。這是一個(gè)常規(guī)的采訪過程,只不過是在巴黎,每個(gè)人都滿頭大汗,因?yàn)橥饷嫣珶崃恕?br>一切都發(fā)生得那么自然,我既沒有時(shí)間準(zhǔn)備,也沒有時(shí)間緊張。有一次我嚇壞了,因?yàn)槲覠o(wú)法編寫三行代碼來(lái)交換數(shù)組中的兩個(gè)項(xiàng)目。我讓璟把目光移開幾秒鐘。她說“我知道你可以交換兩件東西”,這給了我完成答案并通過面試的信心。我可能沒能順利通過,但我還是得到了這份工作。
          我的演講非常受歡迎。Andrew Clark 已經(jīng)棄用了最流行的 Flux 庫(kù) Flummox,轉(zhuǎn)而使用他與我共同編寫的 Redux。人們開始將 Redux 投入生產(chǎn)。新學(xué)習(xí)者對(duì)自述文件感到困惑,該自述文件是為擁有所有現(xiàn)有上下文的早期采用者編寫的。我沒有工作,而且還需要幾個(gè)月才能拿到英國(guó)簽證。
          我創(chuàng)建了一個(gè) Patreon 來(lái)維持我的項(xiàng)目幾個(gè)月——特別是編寫 Redux 文檔、創(chuàng)建小型示例應(yīng)用程序并錄制一些有關(guān)它的免費(fèi)視頻。我每個(gè)月在 Patreon 上籌集了大約 5000 美元,這比我一生中賺到的任何薪水都多。Egghead 的人給我發(fā)了一些麥克風(fēng)設(shè)備,我錄制了我的“Redux 入門”課程。今天我無(wú)法不感到畏縮,但它非常受歡迎,并且在很長(zhǎng)一段時(shí)間內(nèi)讓我賺了很多錢(大約每月 3000 美元的版稅)——盡管它是免費(fèi)的。
          FB 負(fù)責(zé)處理大部分移民流程。我和我妻子只需要填一些試卷,我還要參加英語(yǔ)考試和做一些健康檢查。FB 完成了我們搬遷的大部分工作,包括將我們的貓從俄羅斯搬到英國(guó)(花費(fèi)約 5000 美元)。我被聘為 4 級(jí)工程師,初始基本工資為 10 萬(wàn)美元/年,初始限制性股票單位在四年內(nèi)歸屬,金額為 12.5 萬(wàn)美元。我還獲得了 18,000 美元的簽約獎(jiǎng)金,這對(duì)我們安頓下來(lái)很有幫助。(順便說一句,英國(guó)的技術(shù)人員工資比美國(guó)低。)
          我們于2015年11月底抵達(dá)倫敦。我們之前從未去過倫敦。我們從機(jī)場(chǎng)乘坐了一輛黑色出租車。我們花了十分鐘不知道如何關(guān)閉駕駛室內(nèi)的暖氣,所以我們滿頭大汗,透過窗戶看不到任何東西。當(dāng)我們關(guān)掉風(fēng)扇,窗戶變干凈時(shí),我們的眼睛像碟子一樣睜得大大的。倫敦很美麗。
          第二天,羅曼·馬祖連科 (Roman Mazurenko) 被粗心的司機(jī)撞死。他的美國(guó)簽證剛剛獲得批準(zhǔn),他來(lái)到莫斯科領(lǐng)取文件。他曾經(jīng)告訴我莫斯科有一些邪惡的東西。它不只是讓你走。我不會(huì)再見到我的朋友了。2015 年不會(huì),以后也不會(huì)。
          羅曼在朋友們的幫助下度過了一種數(shù)字化的 來(lái)世。我知道事實(shí)上他會(huì)喜歡擁有兩點(diǎn)五星級(jí)應(yīng)用商店評(píng)級(jí)的諷刺。

          2016年

          新工作。新城市。新國(guó)家。不同的語(yǔ)言。陌生的口音。大公司。方向。會(huì)議室。項(xiàng)目。團(tuán)隊(duì)。文件。形式。拉屎。他媽的。他媽的。操他媽的,媽的,哦,親愛的,天哪!
          我?guī)缀醪挥浀米畛醯膸讉€(gè)月。由于試圖在沒有字幕的情況下理解人們?cè)谡f什么,我一直處于壓力狀態(tài)。我的經(jīng)理到底在告訴我什么?要求再重復(fù)一遍是不是不禮貌?幫我拼一下嗎?
          _什么,我需要給蘇格蘭的一位女士打電話_以獲取國(guó)民保險(xiǎn)號(hào)碼?我聽不懂她在說什么。國(guó)民保險(xiǎn)又_是_什么?為什么我的稅碼是“零”?為什么我的工資低于我的預(yù)期?等等,這里的人_真的納稅_嗎?當(dāng)我生病時(shí)我該怎么辦?什么是國(guó)民醫(yī)療服務(wù)體系?
          2016 年我第一次去美國(guó)(入職的一部分)期間,我一整天都忘記吃飯,喝了很多咖啡,并在試圖向同事解釋熱重載的工作原理時(shí)陷入了徹底的恐慌。我們叫了一輛救護(hù)車,我收到了一張 800 美元的賬單(謝天謝地,是由 FB 支付的——或者至少我不記得自己付過錢)。
          盡管公司解決了大部分困難,但搬遷還是令人傷腦筋。我以為我已經(jīng)完成了入職說明中的所有操作,但我忘記了向警方登記。(我把這與在郵局登記混淆了,我們也必須這樣做。)幾個(gè)月后我才發(fā)現(xiàn)我們搞砸了,我們被告知這可能會(huì)影響我們的簽證。幸運(yùn)的是,到目前為止還沒有。
          最初,我應(yīng)該加入倫敦的 React Native 團(tuán)隊(duì)。通常,我們會(huì)雇人來(lái)參加訓(xùn)練營(yíng)并選擇一個(gè)團(tuán)隊(duì),但我沒有這樣的自由。我是預(yù)先分配的。然而,我對(duì) React Native 并不是特別感興趣。我和 Tom Occhino(他當(dāng)時(shí)管理 React 團(tuán)隊(duì))交談過,他建議我可以作為唯一的英國(guó)成員加入React Core團(tuán)隊(duì)(位于美國(guó))。我已經(jīng)習(xí)慣了開源的遠(yuǎn)程工作,所以我同意了。
          2016 年,出現(xiàn)了 React 熱潮,但每個(gè)人都用捆綁器、觀察器、編譯器等制作了自己的“樣板”。React 成為模塊化 JavaScript、ES6 和所有工具復(fù)雜性的代名詞。Christopher Chedeau 建議為 React 入門構(gòu)建一個(gè)命令行界面原型。我們?cè)趲字軆?nèi)制作了第一個(gè)版本并發(fā)布了Create React App。

          2017年

          書呆子課程繼續(xù)帶來(lái)穩(wěn)定的附帶收入和版稅。我毫不猶豫地將它們花在送餐或漂亮的衣服上。
          直到 2017 年,我才意識(shí)到這些特許權(quán)使用費(fèi)要作為外國(guó)收入納稅,而且我欠女王陛下大約 3 萬(wàn)美元。哎呀。像一個(gè)成年人一樣,我有一個(gè)會(huì)計(jì)師。修復(fù)這個(gè)爛攤子又耗盡了我所有的積蓄。
          在工作中,我們花了 2017 年的大部分時(shí)間從頭開始重寫 React。你知道它的結(jié)果是React 16。索菲講述了我們?nèi)绾卧谶@里做到這一點(diǎn)的故事。
          除了稅收之外,我的個(gè)人生活并沒有發(fā)生太多事情。我還在適應(yīng)環(huán)境。在與官僚機(jī)構(gòu)打交道時(shí)我不再那么害羞了。我可以毫不驚慌地?fù)艽蚝徒勇犽娫挕N铱吹碾娪皼]有字幕。我學(xué)會(huì)了如何處理 NHS 和私人保險(xiǎn)。我不再做副業(yè)了。

          2018–2019

          過去的兩年是一片模糊。我與他們的距離仍然太近,無(wú)法清楚地了解什么是重要的。
          從專業(yè)角度來(lái)說,我們的項(xiàng)目一如既往地要求嚴(yán)格。如果你關(guān)注 React,你就會(huì)知道我們一直在做的一些事情 。我已經(jīng)成長(zhǎng)為一名工程師,但仍有很多東西需要學(xué)習(xí)。我們的倫敦團(tuán)隊(duì)已經(jīng)成長(zhǎng)——現(xiàn)在我并不孤單。
          人們偶爾會(huì)認(rèn)出我。這是令人謙卑的。曾經(jīng)有人在桑拿房里認(rèn)出了我,并開始抱怨 React。請(qǐng)不要成為那樣的人。
          我升職了。我開始這個(gè)博客是作為一個(gè)業(yè)余項(xiàng)目。我還有另一個(gè)副業(yè)項(xiàng)目即將開始,這兩年的大部分時(shí)間我一直在思考這個(gè)項(xiàng)目。我從互聯(lián)網(wǎng)上認(rèn)識(shí)了更多的人,并為頭像添加了更多的面孔。這個(gè)很有趣。
          我一直都知道我喜歡構(gòu)建 UI。我迷上了 Visual Basic。我花了這十年的時(shí)間構(gòu)建 UI,然后構(gòu)建一種構(gòu)建 UI 的方法。然后談?wù)撍⒔忉屗5椰F(xiàn)在意識(shí)到,_解釋_事物的動(dòng)力對(duì)我來(lái)說與構(gòu)建的動(dòng)力一樣重要。或許,更重要的是。
          我期待在未來(lái)十年里做更多這樣的事情。
          或者,我應(yīng)該說,_這_十年?
          歡迎來(lái)到二十幾歲。


          瀏覽 47
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费在线观看黄色视频网站 | 少妇厨房愉情理伦BD在线观 | 成人黄色性爱网站 | 最新国产中文字幕在线播放 | 人人草人人摸人人看 |