@Dan Abramov:我的十年回顾
點擊上方“IT平頭哥聯盟”,選擇“置頂或者星標”
你的關注意義重大!
關于本文 作者:@Dan Abramov
原文:https://overreacted.io/zh-hans/my-decade-in-review/
前言
Dan神的成長之路。
正文從這開始~~
我是以一名大一新生的身份開始的我的這個十年。那時我17,沒有工作,沒有任何業內交際圈,真正的小白一個。而現在你正在閱讀我的博文!我的確為此驕傲。
我已經零零散散的在不同的播客中講述了我的故事。現在我感覺正是一個非常恰當的契機寫下這些最值得記憶的時刻們。
每個人的故事都是獨一無二無法復制的。我非常幸運的出生在一個中等偏上的中產階級家庭中且有非常標準的程序員外表。且人們愿意給我機會。我再次聲明,我分享我的經歷是希望它能通過與你的經歷對比,產生共鳴并有所用處。即使也許我們的境遇天差地別,至少你也許會從中找到一點點娛樂性。
2010
我出生在俄羅斯并直到2009年在那里完成了高中。在俄羅斯高等教育是免費,只要你考試成績達標。我在幾所大學試了我的運氣。我當時特別想進一所學生經常得編程大賽大獎的學校(這件事我當時感覺非常酷)。
然而,似乎我的數學成績不夠優秀。于是如果我想做與編程相關的事情,我就沒有了太多的選擇余地。從我能夠進的學校當中,我選擇了一所給學生蘋果電腦用的學校。(還記得那種白塑料預裝GarageBand的蘋果電腦嗎?它們是最棒的。)
到2010夏天,我剛剛完成了我的第一學年。我發現,原來那里不會教授太多的編程相關課程,而且在接下來的兩年也會如此。但是卻會有很多代數,物理和其他我不特別感興趣的學科。事情一開始還都不錯,但是我開始慢慢沒有耐心,且不去參加那些需要早起的課程。我落下的知識開始慢慢如滾雪球越積越多,我在第一年還能記得住的東西就只剩下焦慮與那種自己是個徹底失敗者的感覺。
甚至是那些我熟知的學科,我也經歷了許多不如意。我們的英語課非常基礎,我得到了我們老師的口頭同意跳過了大多數課程。但當我參加結課考試時,我不被允許交考卷,除非我給這同一個老師錢,參加他數小時長的“補習班”。這段經歷讓我開始對高等教育系統充滿懷疑與不滿。
在做一名糟糕大學生的同時,我也開始了我的第一份認真的感情—它也沒不成功。我很難過,但是我認為時間可以最終“解決”這一切的問題。
在好的方面。專業上,2010年是令人興奮的一年。我得到了我的第一份程序員工作!接下來是這一切是怎么發生的。
我們大學邊上有個小小的場地可以接納各類會議活動。這個場地叫做“商業孵化器”—提醒下,這不是在硅谷的那類商業孵化器—而是個俄羅斯版。我真是不清楚他們會“孵化”什么類型的商業項目。然而,他們接辦了一場講軟件開發的會議,我決定去看看,因為我對這類內容太感興趣了。我的生活中不認識任何程序員,我也不是道meetup的存在。
我已經記不清當時講的內容是什么了。但是我記得那個發言的人是俄羅斯-美國外包公司的高管。我從12歲開始編程,所以我主動接近他并詢問他們是否雇人。他給我一個電子郵件地址,我做了他們的面試題,幾周之后我得到了那份工作。
我2010年夏開始了我的第一份工作。我的工資是$18k/年(是的,那是18,不是180)。這個在發達國家什么都不是,但是,再一次的,這里是俄羅斯—所以租金也相應的便宜。我立刻搬離了我媽媽的公寓,并租下了月租$150的房間。我非常激動。用我的第一次工資,我買了一個iPhone,且驚嘆于它上頭的UI是如此的美麗。
夏天來又去,我的大學二年級開始了。但這一年大學里少了我的身影。我現在開始了正式的工作且人們為此為我付工資,我失去了我最后的一點動力坐在那聽課并完成練習。我停止去上課且不去參加期中考試。我還掉了蘋果電腦。我唯一再去那里的時候,只是去取我的紙(papers)。
短暫離題。我不是在說大學毫無價值,或者你應該輟學。那只是我的正確選擇,但我知道如果事情不順利我可能會重新回到我媽那里住(稍后詳細介紹)。我已經有一份工作。
我享受那份與生俱來看起來很能干的優勢,因為我的背景(一個很早開始編程的人)。那些不俱備這樣特質的人通常都會學一個學位用以積累出可能的相應能力來進入這個行業。就這樣。
2011
我大部分的工作都是修理低價外包公司的垃圾程序。我自己沒有任何行業經驗,我過度使用了各種我能用到的新鮮科技。我甚至將 “random Microsoft Research projects” 用到了最終產品上。我為此感到抱歉,我也做了一些好的工作。
我的第一份工作項目包括了一次旅行。我們的客戶是一個位于紐約的投資集團。我至今還不太了解投資,但基本上他們有個電子郵件系統接受訂單,這些訂單都要經過不同級別的批準。他們有個程序來管理這件事情,但是這個程序極其凌亂,沒人真正知道他到底怎么工作的。我的工作就是到那家公司,在紐約待一個月,最終修理好那個程序。
這個程序是由一個廉價的外包合同公司寫成的。九年之后,我仍然能夠記起他的名字。令人最為難忘的是那個13000行的函數。為了弄清楚它到底是如何工作的。我只能將他們打印出來,把打印出來的代碼放在桌子上,用鉛筆在上頭注釋上。原來那是同一段程序片段在不同的情況下被重復寫了50遍。我猜寫程序的人一定是按照程序的行數來被支付酬金。
我在那個月添加了無數的輸出日志去探索到底那個服務在實際產品中如何工作,然后從無到有的重新寫了一遍這個程序以使它不再那么脆弱。與一個非技術公司合作是不易的。比如,我不可以添加一個程序錯誤修復,而不寫一個Word文檔來解釋我的修改。且這個文檔必須有那個公司IT部門的簽字。到了這一步,還會有一些代碼審查。
在我旅程的結尾,我去了一家酒吧看音樂表演看到深夜。第二天大早我原計劃需要給客戶展示一個月的工作成績。我的會議被定在早晨九點。不幸的是,我睡過了頭,那天下午一點鐘才醒來。我的工頭為我道了歉,我帶著痛苦與尷尬回了家。
那個項目沒有什么其他后續。似乎他總體上是個成功的項目,我的客戶把我當成了一個奇怪的俄羅斯小伙,那種不懂怎么梳頭的一類。但是我自己知道我是在自欺欺人。我也不是特別想參與更加“企業項目”類型的項目。工作開始變的繁瑣。
我回到了俄羅斯圣彼得堡。夏天的那里天空永遠不黑。在一個找尋靈魂的夜晚,我從一個酒吧到另一個酒吧的前行著,帶著模糊不清的不安感。大約到清晨7點鐘,我頭頂上的一個電燈泡熄滅了。我吃了一個shawarma,帶上一個賽百味去了辦公室,等待人士部門的同事,辭掉了工作。
我的一個朋友計劃了一個去克里米亞的旅游(在它被吞并之前)并詢問了我是否愿意同行。我帶上了一個帳篷跟一個可以充一次電用一周的諾基亞手機就上路了。我們搭帳篷搭了兩周,大部分時間是沒有什么保護的,在那種迷迷糊糊的精神狀態下,我不太能記住除了以下兩個片段之外的什么其他東西。
其中有一次,有個人用刀子威脅我。說他會殺掉我,但是第二天他就消失了,一切重歸平常。另一次,我獨自在懸崖周圍游泳,且差點溺水身亡。我被一個湖中間的石頭救了,我爬到它上頭,直覺上在那里失去意識大約一個小時。
這次旅程仿佛一次硬件重啟。我的burnout被治愈,我再一次為寫程序做好了準備。(但是這里我不是對你說你必須以瀕死為代價來治愈burnout)
但是現在唯一的問題是… 我的專業能力仍需提高!真沒辦法!
你看,我只寫過桌面應用的軟件。如今還有誰聽說過桌面應用軟件?現在它什么都不是了。要么做后端,要么做移動端,要么做前端。我完全不了解這些。而且我仍然失業,于是我只能搬回家跟媽住(謝謝你,老媽!)
不久之后,我在社交網絡上看到一片文章。那是一個從美國硅谷回來的俄國人寫的。他正在尋找志愿者參加他的個人項目開發,作為回報他會免費教授網絡開發技術。在那個時候,這聽起來對我而言是個非常不錯的買賣。
我加入了項目。且很快發現其中根本沒有真正的教學:我們只是得到了一些網上的教程,我們實際上只是相互學習。幸運的是,我可以承擔這份工作的花銷,因為我跟我媽住一起。我學會了Git,Python基礎,Django,一點點CSS和JavaScript,還有一點點Bash用于發布我的更改。Web你好,我來了!
九年之后,我仍然不確定我應該如何看待這段經歷。一方面我們免費為他的個人項目工作。另一方面,我們在項目中有root權限,可以隨意將我們的更改發布到終端產品當中,這確實非常令人激動而且由此從我們的錯誤中學習到知識。這個項目給了我們全部學習的基礎設施。它不花我們一分錢,而且你隨時可以走人。這些項目因為它們的教育性衍生了一定的社交價值。這使我想到了開源軟件。
我至今還是非常感謝這個人,因為他特別架設了這個“bootcamp”且成為我的導師。但是我不是暗示你免費給人打工總體而言是個鍛煉自己的好方法。我在這里不是給你提供建議—我只是在敘述我的故事。
我制作了一個dashboard程序來追蹤我們每個人的學習進度。我的導師建議我可以把它打包做成產品賣給其它經營網絡課程的公司。我嘗試“startups”的經歷是丟人的。我不清楚我在做的項目到底是什么,我給不同的人展示了不同的東西。最終,我幫助不同的客戶制作完全不同的網站,而它們使用同樣的一個引擎。從整個過程當中,我賺到了約$200。我浪費了數個月在上頭,然后關掉了他。但是它帶給了我一線希望,我成為了一個網絡開發程序員。
但是我仍然失業。
2012
作為一個20歲的網絡技術程序員,我只想在一個地方工作。那是一個俄羅斯社交網絡公司。每個在俄羅斯的人都使用他們的產品。那個產品非常成熟。而且他背后的團隊被認為非常“酷”。幾乎是被稱作精英。
他們公司的高管經常發文章提到他們的工程師是如何的高薪。他們小小的技術團隊似乎對于他們的挑戰與公司的待遇都非常滿意。在俄羅斯的技術圈子里,很多人都知道他們大名。
我的導師介紹我給他們的CTO,我得到了一份可以拿回家做的JavaScript考試題。這個題里頭包括了克隆一個他們產品當中的功能,就是在給朋友發信息的時候,自動預測你想發給的用戶的名字。其中我仔細模仿了這個功能相似的緩存與去抖算法。
在他們公司的面試是一場災難。顯而易見,我并沒有他們那個級別的經驗,但是,他們愿意給我一次機會如果我“理解他們的產品線”。他們給了我一個可以帶回家做的考試題,題中叫我設計一個他們網站的登陸頁面。題中他們希望可以顯示一個手機—許多人不知道網頁版的網站可以運行在廉價的手機上。
我花了一周時間去設計這個網站。我在許多細節上花了心思,甚至埋了幾個彩蛋。我很自豪。但是,我沒找到一個看起來不太丑的手機照片。于是我放了一個漂亮的iPhone在上頭。我想從美學上是令人愉悅的,我認為。
我當然被拒了。我忽略了唯一他們需要的東西—我為什么就這么執拗?我哭了幾個小時,因為我真的不想到其他地方工作。我仍然住在媽家,而且沒賺錢。
此時,我從心底懷疑著我的能力。很多事情變得在我身上有了“魔力”。我開始反思輟學是否是好的。我在iTunes U上注冊了iOS開發課程。除此之外還在Coursera上注冊了另兩門課程:編譯器與機器學習。也許那些可以讓我成為“真正的程序員”。
獨自學習這些課程讓人孤單。我組織了一個由我們網絡開發“bootcamp”成員參加的meetup。我們一起看不同的網絡課程,在我們導師的共享工作空間當中。
大約一整個月都花在了上頭,我得到了一個電子郵件。有個人正在招程序員,他由一個參加我的這個meetup的人介紹知道了我。我已經十分討厭這些招工廣告,直接忽略了這個電子郵件,但是這個人持續的給我發郵件。他想跟我用skype聊聊。
Roman Mazurenko是個不走尋常路的創業公司創始人。Roman對于DYI出版非常感興趣。與其他幾個好友,在幾年時間里,他讓莫斯科似乎變得酷起來。他組織聚會,在時尚雜志里搔首弄姿。我不知道應該期待什么。但是Roman非常踏實且與其談話非常讓人開心。他的夢想是創造一個DYI平臺,如這個概念視頻所展示的。我將搬到莫斯科并在那里邊工作邊學習iOS開發。(順便說一句,視頻里的人不是Roman,而是一個朋友,而那個app也只是通過Flash制作的一些動畫。Roman很善于制造幻相。)
我同意了他的提議。
我沒有完成我的編譯器與機器學習課程。我學到了足夠的知識明白他們都不是魔法。在此之后,我失去了大部分對于大他們的興趣。
2013
到2013年,我的工資是$30k/年—幾乎是之前工資的一倍。在美國人的角度看仍然很低,但是在俄羅斯是非常不錯的。我還在Stampsy得到了一點股份(真相大揭秘:這些股份最終變得一文不值)。
我們的團隊由五個程序員與兩名設計師組成。我們從開發一個iPad的應用開始,但是我們當中沒有任何人對iOS有實際經驗。至今我都能依稀記得,當我們的一個隊員研究出了如何寫一個我們會用到的動畫效果時候,我的那份釋放的感覺,直到那時,我都以為我們肯定會倒霉。
我在我們辦公室足足住了幾個月時間。回看這段時間,我不會因為我的生活-工作平衡而驕傲,而且那的確不健康。然而,我在此期間學到的東西比我之前兩年時間學到的還要多,我一點都不后悔。
最后,我搬離了辦公室。我搬進了Roman相同的公寓。我的房間租金是$1k/月。那是一個寬敞的公寓,它坐落于那個唯一使我感到愉悅的區域,而且到辦公室往返的時間只有5分鐘。
我們以為我們寫的程序也許對他人會有所幫助。所以我們開始把我們的程序發布到GitHub上。我們沒有期待會發生什么,甚至得到一些程序開發上的支持都很棒。那時候我最受歡迎的項目得到過30顆星。而對于我們而言,那真是非常多。
一個我們團隊中的設計師推薦了我Victor的演講—尤其是發明原則。我想那是一個非常好的演講。一個非常好的。
到四月,我們發布了我們投入很多精力的iPad應用。蘋果公司向我們團隊要了一些此應用的素材用于將它放到蘋果商店的精選當中。我們樂上了天。它被作為精選應用數周之久,人們真的開始使用它了。
我們的激動情緒很快就消散了,因為我們意識到這個應用根本沒有適合的市場。這個應用是用來創造如同雜志一類風格的排版的,但是沒有人在自己的iPad里裝用于這些排版的素材。而且iPad的相機又只有可怕的照片質量。這個應用沒有任何意義。我們為什么從來沒有意識到這一點?
我的個人情感生活也分崩離析。我們相互很適合,但是大多數時候只是為了逃避獨自一人的恐懼。我們最后分手了。
在之后的幾個月,我不把這件事告訴我們共同的圈子,只專注工作。但是我意識到我特別想念某個特別的朋友。我發信息給她,她告訴我他也非常想念我。我安排了一次共同的旅行。
我得了感冒。當那個計劃好的旅行即將到來的時候,我感覺更加糟糕了,但我仍然希望我將好起來。當我乘坐的從莫斯科到圣彼得堡的火車進站的時候,我的高燒仍然十分明顯。她說無論如何還是去她那里坐坐。她為我燒了熱茶,遞給我厚一些的襪子,我們相吻。我們正式開始。
2014
對我而言,2014是React的一年。
在短暫的生存危機之后,我們放棄了那個iPad應用取而代之的是轉向一個網頁程序。這也就意味著我要學JavaScript,這一次是來真格的。我們用Backbone做了一個非常不錯的程序原型,但是互動部分非常難于實現。
我的一個同事首先看到了React但很快就放棄了它。但是幾個月以后,他又跟我說,React也不是太一無是處。我決定試一試。戲虐的是,我的第一個從Backbone轉寫到React的部件是一個喜歡按鈕。
而且它工作正常。且是非常正常。我感到React與我之前看到的所有東西都不相同。
React對于我們團隊并不難于掌握。我們在接下來的一年中伴隨發布新功能的機會,漸漸把所有的UI部件都改寫成了React。React跟它所使用的單向數據流原則使得我們的開發更加快速并產生更少的錯誤。
我們發布了一個內測beta版本,一些攝影師享受于使用這個產品創造可視化故事。它是一個介于Medium,Pinterest和Tumblr之間的產品。它沒有吸引來很多注意力,但是它不再是一個徹頭徹尾的失敗,如之前的iPad應用那樣。
使用React的唯一缺點就是它簡直就沒有任何生態系統。我們剛剛開始的時候,當時只有一種路由(且不是React路由),而且我們沒人懂得如何使用它。于是我們自己做了一個。當React路由發布的時候,我們才用了它,并加入了一個我們的產品中用到的特性。
在我們的應用中沒有拖放功能。所以我移植我同事的一個函數庫到React當中。我制作了一個幫助程序來管理文檔標題。還寫了另一個函數庫來統一化API的響應。Jing Chen通過React IRC頻道建議了關鍵創意,而且它可以使用!我還不知道,在接下來的幾年中,Twitter將重寫他們的網頁,并用到這個函數庫,而且維護這個函數庫。
我也想為React做貢獻。我聯系了Paul O’Shannessy問他是否有pull requests我可以參與幫忙的。幾天內,我就完成了我的第一個任務,但是它在數月之后才被merged。大型項目的發布周期,和與其相關的事情。讓我困惑于它緩慢的響應時間。于是我花時間與經歷到React的周邊上。回想起來,那個任務影響更加深遠。
在2014年,我做了一些與我第一次公開演講相關的事情。我在我們辦公室辦了如大學演講一樣的介紹React的講座。那個講座持續了2小時,我至今都感到吃驚,因為大部分出現的人似乎都還挺高興的座到了整個講座的最后。
事后,我申請注冊在BerlingJS meetup上進行一次發言。我的題目是“React跟Flux”。我沒有之前練習我的演講。當我的時間到了的時候,我才講了我計劃內容的一半。人們對我翻了白眼,我終于學會了。從那以后,我一定之前排練我的演講3到15遍。
2014年我第一次得到Facebook人事的電子郵件。我沒看到它,直到數月之后才發現。我們最終還是聊了一下,原來招我到美國進Facebook并不容易,因為我沒有足夠年數的工作經歷而且我輟學沒有文憑。Oops。
在2014年我著手的項目當中,有個我特別喜愛的項目。正如我人生中很多重要的事情一樣,他們就這樣不經意的發生了。我正在將我們的應用從require.js轉向webpack以便實現代碼分割。我讀到了一個怪異的功能叫做“熱模塊置換”,一個讓你可以編輯CSS而不用重新加載頁面的功能。但是在webpack,它可以對JavaScript同樣適用。
我非常困惑于這個功能,于是我在StackOverflow上提問。Webpack當時仍然非常新穎,它的開發者看到了我的問題并做出了反應。這個回答給了我足夠的信息讓我把這個功能加入到React中,以之前提到的Bret Victor的發言的思想作為依據。
我寫了一個非常非常草率的驗證原型,通過直接編輯React的源代碼,外加加入一堆全局變量。我決定直到它可以開始工作位置,我都不去睡覺。到了早晨7點鐘,我有了一個可以發推特的演示模型。在此之前從來沒有人在意我的推文,但是這個推文受到了幾個喜歡與轉發。那20個轉推對這個點子是巨大的驗證。我于是知道,我不是唯一一個人對于這個點子感到激動的人。這個驗證原型只是個簡單的嘗試,在工作之余我沒有時間去繼續在上頭花時間。我之后是在一次出門旅行中完成了它的整個原型機
免責聲明:再一次,我不是在說你“應該”在業余時間或旅行中工作。我不是在炫耀我的操勞,沒做任何我提到的這類事情的成功人士大有人在。事實上,如果我能夠很好的管理時間,我很有可能在我不受干擾的平常日里擠出更多的時間來。我分享這些是因為我在講述我的經歷,如果我說我是在我的40小時工作時間里完成的這些,那我就是在撒謊了。
2015
我們發布了產品的內測beta版本。我也在成長,不過是非常緩慢的與線性的。我們的公司正在悄悄地耗盡資本與想法子籌到更多錢。而我則想花越來越多的時間在開源項目上。
我也想發表我的第一次會議演講。當然我想講的就是我的熱加載功能,但是我知道已經有人在ReactConf上提到過它,因此人們不會為此感到激動。于是我決定在我的演講申請提案里加點噱頭-“時間旅行”,再一次的,我的點子受Bret的演示的啟發。我的提案得到了通過,在接下來的數月中我沒有花什么經歷在上頭。
到了四月,我的工資開始被拖欠數周。但是最終還是發了下來,但是我已經意識到,是時候找新工作了。我找到了一個使用了我項目的公司,他們同意愿意在之后的幾個月里贊助我的工作。
我的女友問我是否想結婚。我告訴他我想我會快40歲的時候才選擇結婚。她問我:“為什么呢又?”我確實找不到支持我想法的有力依據,于是我們迅速的買了結婚戒指領證結婚。我們的婚禮花掉了$100。
我的演講日期即將臨近。但是我仍然不知道到底如何實現“時間旅行”。我知道Elm語言有相類似的功能,但是我非常害怕去研究他們,我擔心我的研究會最終告訴我這個功能在JavaScript上可能實現不理想。
在這個時間節點上,市面上流行非常多Flux的函數庫。我嘗試其中幾個,Andrew Clark開發的Flummox讓我眼前一亮,我模糊的感覺到與Flux一同實現的熱加載同樣能夠讓我實現時間旅行。Sunil的gist讓我有了一個點子:Flux范例中用一個reducer函數取代原有的儲存器。我腦子里已經為它起了一個很棒的名字。我的演講真的太需要這個點子了!
我是趕在演示時間旅行功能之前不久實現的Redux。我的第一次演講排練是在Skype上。我邊出汗邊喃喃自語,而且整個過程完成的過快。到最后,我問大會組織人我是否還有可取之處。他說“嗯…人們挺喜歡你的”,我以為他只是在想委婉的安慰我的丑態。
我邀請了跟我一同在之前的那個創業公司里工作的設計師同事幫我修改我的幻燈片。我加上了動畫跟過度效果。我的幻燈片做的越好,我就在演講的時候更加冷靜與感到有信心。我練了十多遍。
我飛到了巴黎參加我的第一個技術研討會。這也許是我人生中最幸福的一天。第一次,我對上了認識人的面孔。到會的有UI高手與我的英雄們。這種感覺仿佛是來到了霍格華茲魔法與巫術學院。
我的演講差點就沒有發生。就在發言的當天早晨,我發現我的電腦連不上投影儀。我只有幾個小時準備了。Christopher Chedeau非常慷慨的借給了我他的電腦,我把我的現場演示項目安裝到了他電腦上(除了Sublime的證書,你如果看了那場演講,你可能會有印象)。
在一開始,我的演示程序在Chistopher的電腦上因為Node的版本不同而運行不了。會場的無線網差到一個程度,根本下載不了另一個Node的版本。幸運的是,我發現了一個npm的命令可以重新編譯Node的運行版。它救了我的演示。我最終用他的電腦在我的演講上順利的完成了我的演示。
我在聽眾群當中看到了很多推特上認識的人。其中的一個是Jing Chen。我是從React的IRC聊天頻道當中認識的她。我就跟她打了個招呼。她問我FB的人士是否有聯系過我,我說我拿不到美國的簽證。Jing問我是否感興趣到他們的倫敦辦公室工作,而我還根本沒有聽說過倫敦有這么一個辦公室!我電話了我的妻子,并詢問是否她愿意搬去倫敦。我以為她會很不愿意,但是她竟然很快的同意了。于是我就決定參加一次面試。
在會場里有來自FB的四個雇員,于是Jing就直接在舉辦會議的酒店安排了一個完整的面試。那是一個非常普通的面試,除了那里的人都大汗淋淋,因為這里是巴黎,外邊非常熱。
一切都是這樣瞬息之間發生的,我既沒時間準備,也沒有時間緊張。我智障到了一個地步,以至于我無法用三行代碼調換一個數組當中的兩個元素。我請求Jing兩三秒內先別看我。她說“我知道你可以調換這兩個元素的”,這句話給了我足夠的信心完成了答案,而且使我完成了面試。也許我沒有完美的完成我的這次面試,但是我拿到了工作邀請。
我的演講引起了很大的關注。Andrew Clark也因此停止繼續開發Flummox—那個最受歡迎的Flux函數庫—為了支持Redux,這個我們共同完成的函數庫。新手在閱讀它的README時候會非常困惑,因為它是給那些已經在這個領域有了非常多經驗的人看的。我仍然沒有工作,而且英國的簽證要等幾個月。
我在Patreon上開了幾個月賬戶來支持我的項目—而且主要是幫助我寫好Redux的使用文檔,創建小小的演示項目以及錄制免費的教學視頻。我籌到了大約$5k/月的資金,這個金額比我之前做過的任何工作都賺錢。來自Egghead的人們給我郵寄來了麥克風用以讓我錄制我的“學習Redux”課程。我如今每次看它們都要尖叫,但是它們非常流行,而且讓我在很長一段時間賺到了很多錢(約$3k/月的版稅)—盡管這些視頻是免費的。
FB接手了大部分移民簽證的問題。我跟妻子只需要填填表格,參加一下英語考試以及一些體檢流程。FB做了我們搬遷新地方的大部分工作,包括把我們的貓咪從俄羅斯帶到英國(這一項花掉了大約$5k)。我被按照第四等級工程師的標準雇傭,也就是初始工資$100k/年,以及就職4年后可以拿到的一個價值$125k的原始股。而且我還拿到了$18k的簽約獎金,它在我的安家這件事上起了很大作用。(順便說一句,技術工人的工資在英國比在美國要低一些。)
我們在2015年11月到達倫敦。我們之前沒有到過倫敦。我們從機場乘坐了一輛黑色英式面包車。我們在最開始的10分鐘不知道怎么關掉熱風,以至于我們一直出汗,看不到窗外的風景。當我們終于關掉了熱風,窗子的霧氣也消散之后,我們的眼睛張得跟盤子一樣大。倫敦實在是太美麗了。
就在第二天,Roman Mazurenko被一位粗心的司機撞死。他剛剛拿到他的美國護照,他只是到莫斯科來取他的文件。他告訴我莫斯科有某種邪惡的力量。它就是不想讓你離開。我沒能再在2015見到我的這位朋友,也永遠不能了。
Roman有一種數字化afterlife,是由他的朋友們提供的。我知道他會喜歡那個蘋果商店上充滿諷刺意味的2.5顆星的評價。
2016
新工作。新城市。新國家。不同的語言。不熟悉的口音。大城市。取向。會議室。項目們。團隊。文檔。表格。Shit。Fuck。Fuck。Fuckety Fuck,Shit,哦親愛的,Blimey!
我不太能夠記住最開始的幾個月。我是在一種沒有字母支持下持續試圖理解人們到底在說什么的緊張焦慮當中度過的。我的頭兒到底在告訴我什么?是否會不禮貌,如果我再問他一次?也許拼寫給我更好?
什么,我需要給蘇格蘭的一個女士打電話來詢問我的社保號?她說的任何一個字我都聽不懂。什么又是社會保險?為啥我會有一個零號的稅號,為什么我的工資比我想想的又低?等一下,這里的人真的實際上納稅?我如果病了需要怎么做?什么是NHS?
我在2016年第一次來到美國期間(部分是因入職培訓),我有時候一整天忘記吃飯,喝非常非常多咖啡,一次,在給同事演示熱加載的功能的時候徹底被驚慌失措打倒。我們叫了救護車,我因此得到了一個$800的賬單(幸好,由FB買單—或者至少,我沒有被叫為此付款)。
更換地點工作是非常讓人傷腦筋的,盡管公司幫我解決了大部分的問題。我以為我在入職培訓的時候解決了每一個問題,但是我忘記了到警察局登記。(我把這件事與到郵局登記混淆了,那也是一件必須做的事情)我最后發現我們比應有的計劃晚了數月,據說這樣可能影響我們的簽證。幸運的是,至今似乎都沒有出什么事。
最初的想法是我加入到倫敦的React Native團隊。通常而言,我們雇來員工并讓他們經過短期培訓班,然后再叫他們自己選擇一個團隊,但是我并沒有那個自由度。我是被預定好到哪里去的。但是,我對于React Native并不是特別感興趣。我告訴了Tom Occhino(當時他管理著React團隊),他建議我可以作為React Core團隊(位于美國)的唯一駐英國成員。因為我早已在開源項目中習慣遠程辦公,所以我同意了。
在2016年,React徹底火爆了,但每個人都在通過不同的打捆程序,監視程序,編譯程序等研發自己的“模板”。React成為模塊化JavaScript,ES6以及所有復雜工具合集的同義詞。Christopher Chedeau建議制作一個命令行界面的React初始化工具。我們很快的在幾周之內制作出了第一版,并公布了這個Create React App。
2017
Egghead上的課程持續給我作為副業帶來版稅收入。我從不猶豫的把他們都花在了吃穿上。
直到2017年我才意識到這些從國外來的收入是需要繳稅的,經過計算我欠女王陛下大約$30k的稅款。Oops。如所有的成年人,我找到了一個會計師。解決掉了這些問題,也用盡了我的所有積蓄。
工作方面,我們用了2017年的大部分時間全新重寫了React。你們看到的React 16就是努力的成果。Sophie在這里講述了這部分的故事。
在我的個人生活當中,除了稅務方面還發生了很多其他事情。我始終還在適應新環境。我在與官僚機構打交道的時候不那么害羞了。我可以在打與接電話的時候不那么緊張。我看電影不再需要字幕。我懂得了如何對付國家健康服務與私人保險。我也停止了我的個人項目。
2018–2019
最近的這兩年轉瞬即逝。我仍然跟他們距離太近,以至于無法沉淀下來,看清楚其中發生的什么事情對我非常有意義。
專業領域當中,我們的項目們前所未有的火爆。如果你關注React,你會知道我們有一些東西我們正在著手做。我成長為了一名工程師,并且仍然有那么多東西要學。我們倫敦的團隊也發展壯大起來—我不再孤軍奮戰。
人們偶爾在街上會認出我。這會使我感到不安。有個人在桑拿里認出了我,就拉著我開始抱怨React。請不要成為那樣的人。
我升職了。我把這個博客當成了一個個人項目。我另開辟了一個個人項目,我在那里將會反思這兩年。我與更多在網上認識的人線下見了面。將更多人的面孔放到了他們的頭像上。有趣極了。
我一直知道我喜歡設計UI。我從Visual Basic入行,花掉這個十年設計了UI,然后又設計了設計這些UI的方式。然后講述它以及解釋它。不過我現在剛剛意識到,解釋事情給我的動力與我創造它們產生給我的動力一樣的大。
我興高采烈的展望未來,我將做更多的事情在下一個十年。
或者,我應該說,這個十年?
20年代,歡迎你!
?? 看完兩件事
如果你覺得這篇內容對你有所幫助,我想邀請你幫我兩個小忙:
點個「在看」,讓更多的人也能看到這篇內容(喜歡不點在看,都是耍流氓 -_-)
關注公眾號「IT平頭哥聯盟」,一起進步,一起成長!
推薦閱讀:
技術債就像俄羅斯方塊
前端到底離業務有多遠?前端如何賦能業務?
在阿里云做前端這幾年~
專屬開發者的福利,2k+的羊毛在等你
總結
以上是生活随笔為你收集整理的@Dan Abramov:我的十年回顾的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 10.0 进入recov
- 下一篇: (二分图)洛谷P2071座位安排