標籤:

英語是否會成為開發工程師的發展瓶頸?

從小英語就不好,單詞認識不超過500個


三年前收到Facebook的HR郵件,問我是否有興趣加入Facebook,那個時候React剛開始就行起來。我說有啊,然後初次用skype溝通後,HR說,你好好學學英語,明年再來吧……

英語太他媽重要了!

如果我的英語達到英美國家正常水平是什麼畫面?

  • 可以快速閱讀準確理解英文技術規範文章和資訊;
  • 可以線上線下和各種大拿談笑風生,交流互懟;
  • 為自己的開源項目編寫英文說明,文檔,國際化宣傳;
  • 至少可以過 Facebook HR 初面;
  • 在 Github 上提 issue 互懟。

如其他答主說的一樣:

  • 我的手機、電腦能設置成英文的全部設置成英文,期望認識更多單詞,學習英文習慣
  • 只從Google,Github,Stackoverflow 搜尋解決問題的方案
  • 閱讀原版圖書,目前前端相關的技術書籍還算流利,閱讀英文技術博客,閱讀英文技術規範
  • 維護 https://zhuanlan.zhihu.com/frontendmagazine,定期翻譯英文文章
  • 偶爾痛恨自己,制定學習計劃,往往半途而廢

不說了,都是淚啊,如果英語好,我能力至少還能提升兩個層級,真的是嚴重拖後腿的短板。好羨慕你們這些英語好的人 @尤雨溪


當然會。

當初(2010年)我在QCon上向Douglas Crockford提問,被他懟得很窩火,還不是因為英語太差,吵不過他!

再舉個例子,不謙虛的講,本人的技術演講水平是相當的出類拔萃,得過多次QCon的明星講師稱號,這稱號主要是基於觀眾票選的。今年4月的QCon,我在編程語言專場的演講獲得觀眾100%的好評(以我做兩次出品人的經驗,好評率通常在60%~90%之間)。要不是我英語太差,應該足夠資格到海外演講啦。唉,可惜我小時候不好好學英文啊……


不僅英語差會成為瓶頸,英語好還能成為優勢,因為學習效率會比別人高。像我這樣半路出家自學的人,只能靠英語了...


之前在某個公司帶了一位小朋友,他有個小習慣,總是會把 git 的衝突代碼提交上去,每次 code review 的時候我都得提醒他。一開始我以為他是不懂怎麼解決衝突代碼,手把手教了他,後來還是一直把衝突代碼提交上去。

後來我綜合觀察到了,他根本不看終端裡面的出錯信息,包括編譯出錯、git pull 下來的錯誤信息、checkout 信息,告訴他 push 代碼之前要看看 diff,他從來不看。原因是他看不懂英文。。

後來招人的時候,加了兩道英語的筆試題。

後來公司需要開發 iOS,作為一個前端工程師我硬著頭皮上了..最後靠英文搜索 + stackoverflow 把 App 開發完懟了上架(OC,不是RN)。最後發現,對於普通的業務開發,所謂的程序員的任務有時候就是:能不能想出準確的英文把需要的代碼和解決方案搜索出來...(又黑了一把


會,英語現在仍然是我的瓶頸之一。


開發工程師的瓶頸有很多層次,英語的水平也有很多層次,所以,英語是否會成為開發工程師的瓶頸,是相對而言的,大結論是:不要怕,英語不是真正的瓶頸。但細節,需要具體討論。

接下來我會從軟體開發的視角給英語水平做個劃分,然後再從開發工程師的技術發展階段看看有什麼瓶頸,談談每個階段英文應該達到的水平。

軟體開發語境下的英語水平劃分

在軟體開發環境里,英語水平大概可以分為 6 個層次:

  1. 匱乏,辭彙量很小,無法滿足類、變數、函數名字的命名需要
  2. 辭彙量有限,可以完成類、變數、函數名字的命名需要,但無法順利閱讀英文文檔
  3. 辭彙量較為豐富,可以讀懂英文SDK、編程資料
  4. 能用英文書面交互,可以寫英文開發文檔,可以寫英文郵件
  5. 會說,能夠使用英語和別的開發者、項目關係人無障礙交流
  6. 可以口譯母語是英文的開發者的發言給國內說漢語的開發者聽

開發者的技術發展階段和瓶頸

我們結合開發者的技術水平發展階段來看看對英文的需要。

  1. 從小白到入門階段
  2. 從入門到熟練階段(從普通程序員到熟練開發者)
  3. 從熟練到優秀階段(從熟練開發者到技術專家、架構師)
  4. 從優秀到卓越階段(從技術專家到研究員、科學家,從一般架構師到資深、首席架構師)

在編程時,絕大多數公司都要求用英文來命名類、變數、函數,不分技術水平。所以,你的英語水平必須大於等於第 2 個層次。否則,很難混。

如果你是應聘外企或以英文為工作語言的公司的開發職位,英語水平沒商量,必須到第 5 個層次。

以下討論的是工作語言非英語的環境。

從入門到熟練這個階段,你需要自己主動學習,構建自己的知識體系。在這個過程中,你會發現,很多技術資料都是英文的,你需要讀懂它們。

比如 Qt SDK 的文檔:

比如 WebRTC 的教程:

比如 GitHub 上的開源項目的 issue:

比如某種技術的知名 blog :

還有我們經常查問題的 StackOverflow:

還有各種技術的 Specification ,都是英文的。

所以,要想構建起來自己的知識體系,成為熟練的開發者,獨立完成或負責某個功能模塊的開發,就需要英語水平達到第 3 個層次

當你的技術水平越來越高,到了某一個領域的專家時(開發者技術水平的第 3 個階段),你就會需要與國外的開發者或者社群溝通,起碼書面的,比如 email,比如 github 提交 issue 等,此時就要求你的英文水平達到第 4 個層次

下面是我 2013 年寫書時和一個外籍開發者的溝通郵件(我英文水平很爛,只能達到讓對方看懂的程度):

在優秀階段,你也可能有很多機會和外籍開發者會話,所以,英語水平能達到第 5 個層次,是最好的啦。

當你從優秀到了卓越,成了一家公司的研究員、科學家或者首席架構師時,你很難避免和外籍人士面對面溝通了(各種技術交流、商務會談、技術峰會),此時英語水平必須達到第 5 個層次,能夠流利、無障礙的和人交流。

至於英語水平的第 6 個層次——口譯,其實不大影響你技術水平的發展,只是牛 X 的表現。


看回答的大佬們英語都這麼差你就知道其實英語差完全不會阻止你成為技術大佬


英文好能讓你獲取第一手資料,而且學習效率也會更高。現在的小年輕這方面能力都具備,比如我們團隊的小夥伴,他們的英文都非常的棒,不管是看書或查閱資料都是看英文版本的。當然也有很多類似我這樣先天不足,就是英語掉到渣的。但並不能因為自己的英文差而拒絕查閱英文文檔。可以嘗試自己堅持看英文文檔,堅持下來了,還是會有收穫的。

我自己當初很多很多都看不懂,在藉助一些翻譯工具之後,能理解一些,當然沒有英文好的同學理解的那麼透徹,但還是能獲取一些國內獲取不到的信息。相對而言,某些方面的知識面就更廣。說了這麼多,最重要的,不要去懼怕,堅持去看,慢慢的就行,要相信自己,不去嘗試永遠不知道自己原來也是做得到的。


會,註定了你只能學習別人二手的資料。如果沒有人翻譯過的資料,就沒法學習。如果可能的話,請務必提高自己的英語水平。


寫了一個開源項目,

用英文寫文檔:會有很多人來幫你改善文檔,還有很多人會志願把文檔翻譯成各國語言;

用中文寫文檔:會有很多國人來噴你的項目。


不一定,有可能你編程比英語更差呢……

你說不可能?那就甭問了,指定瓶頸。別人用來喝咖啡的時間,你用來給變數起名字。


用英語看技術文檔考驗的只是你的英文辭彙量。

用中文看技術文檔考驗的是你的語言解構能力,分析猜測能力,語法改錯能力,文字勘誤能力,還有一篇文章你每個字都能看的懂但他媽就是不知道作者在跟你鬼扯什麼的忍耐能力。

同樣的一個技術問題,google stackoverflow就能解決的事情,你在百度中文裡面搜,搜到的永遠是你想不到的坑。


舉個栗子。

rxjs中的幾個operator:throttle、debounce、

dispose等,要是英文好,基本可以做到看字知義,寫代碼快的不得了。

再舉個栗子。

vuex或者redux喜歡用payload做參數名,這些變數名的使用是相當專業的,英文基礎好的同學查個wikipedia,瞬間對框架設計問題的理解就不一樣了。

最後一個栗子。

在async的場景,會用defer或者enqueue來命名非同步回調和隊列,要是英文好的話也會對問題的理解超過很多同學。

就這樣


英語,只是一門語言。所有程序員都知道,會用一門語言只是起點,然後你還需要知道它常用的 library 有哪些,大家公認的 coding style 是什麼,有哪些 best practice,在做 architectural design 時需要考慮哪些 trade-offs。

總之,見人說人話,見鬼說鬼話。雖然這個道理在不同的語言之間都是相通的,但如果你說中文就沒有這樣的意識,切換到英語後也不會變得更好。


「英文」可以是英文水平,也可以是使用英文的意願。

有前者沒有後者,你還是接觸不到一手資料。

有後者沒前者,你需要的只是養成個習慣,稍微耐心一點,但你能接觸到一手資料。


500的辭彙量也太少了吧?如果這樣你只能吃二手知識。

還是努力去提高下自己的英語水平吧,其實讀文檔也可間接的提升辭彙量。

就我個人而言,其實讀英文文檔最重要的可能並不是辭彙量,而是你讀的信心。前端行業就那幾個術語,一回生二回熟,多見幾次自己就會了。


英文文檔和 StackOverFlow 是剛需

作為一名合格的工程師, 至少日常使用的框架和庫以及語言相關的要把文檔通讀一遍吧, 否則出了問題都不知道在哪裡找...不知道這個框架/庫的全部能力...而相關的文檔基本上都是一手英文......

StackOverFlow 上面只有英文, 基本上能解決所有問題, 所以, 英文不好至少要能看懂才行, 否則解決方案都放出來了, 你還不知道說的是啥?

英文好不好決定你吸收的是一手知識還是二手知識, 一手要比二手快很多......

別怕英文, 硬著頭皮看, 慢慢你就會發現, 基本上越看越多越看越熟練了......


前端的我不知道段子。

中國最早一批會用電腦編曲的老師開始都是在海關進口國外工作台的英語專業畢業的同學,他們一開始並不是說在音樂上有多高的造詣,僅僅是因為看得懂英文說明書而已。

即使是Vue也是先有英文文檔才有的翻譯過來的中文文檔。

國內賣的最好的編程書籍都是翻譯過來的。

學好英語也可以和國外同行談笑風生,你除了知乎還可以上Github/Quora/Stackoverflow/Medium等。

找工作除了BAT還可以考慮一下Microsoft/Google/Facebook/Oracle之類的。

所以好好學英語吧。


英語必須要學好:

1. 很多晶元資料是英文的。

2. Deep Learning的paper都是英文的。

3. 程序員聖地Github和Stackoverflow是英文的。

4. 很多Open source的源碼注釋和文檔都是英文的。

國內很多程序員都是吃了英文不好的虧,而「善於發掘」的人不少都從國外弄了些開源代碼包裝了改個名字,換個殼就可以在國內大行其道了,甚至可以上市,參見某影音。設計師也是抄,甚至不知羞恥要做到像素級抄襲。

印度人最近在矽谷如烈火烹油也部分原因是英語好,會現,英語好可以現。


不要說前端工程師,當任何一種計算機工程師,英語不好絕對會成為瓶頸。

原因很簡單,因為美帝擁有這個世界最頂級的計算機技術人才庫啊,要能夠儘早最頂級的技術,必需要會英文,由此帶動美帝之外的地區要跟上最前沿最頂級技術節奏,就也需要有過硬的英文基礎,印度就不說了,之外的羅剎人、巴西人,包括我朝,都一樣,要走在最前面,必須要英文過硬。

簡單說,要變得更強,就要能和更強的人交流。

當然,在一個小圈子裡,可能不會英文也行。肯定會有人噴我,說誰誰誰在那個那個公司做工程師,不會英語也活得挺好呀,blablabla。我真心承認有這種現象,但咱別做井底之蛙好嗎,眼光不放出去,不和全世界交流,那存在的環境本身就是瓶頸。

當然,也不是說做工程師就一定要「精通」英語,要好到外語學院的水平,那別做工程師了,做翻譯去吧。

作為一個工程師,英文要好到什麼程度呢?

聽、讀、說、寫,最起碼要能夠「讀」和「寫」,要能看得懂英文技術文檔,要能夠用英文提問題(不然不要說在github上開個bug,光是寫代碼就命名標示符就成問題),先練好這兩樣吧。


推薦閱讀:

沒有為 position: absolute 元素賦予 left、top 等值,與賦予 left:0; top:0; 的效果為何不一樣?
Win10下如何在右鍵新建菜單中添加.html文件?
如何看待民工叔跳槽 Teambition?
如何衡量一個人的 AngularJS 水平?
html5 mutation observer 不能監聽元素尺寸變化,還有何用?

TAG:前端開發 |