ソフトウェアエンジニアに最低限必要な英語力
TL;DR
- ソフトウェアエンジニアが英語を使えるメリットは沢山ある
- ソフトウェアエンジニアとして英語を”話せる”の期待値は低い
- ソフトウェアエンジニアに必要なのは英語より専門性
モチベーション
今度転職する会社で英語の勉強を頑張っている人達がいるので以下の発言をしたところ
自分が日本にいながら英語を話せるようになるのに相当な試行錯誤したので、他のエンジニアには高速道路を走って行けるように惜しみない支援をしていきたい
— Takayuki Watanabe (@takanabe_w) December 21, 2021
興味がある人、役立つ人がいそうだった。英語でソフトウェア開発の仕事ができる日本人、職場が増えて欲しいと日頃から思っているため、ブログにて考え方や勉強方法を分割してしたためることにした。本記事でソフトウェアエンジニアとっての英語が話せるというのはどの程度のレベルなのかについて定義し、別記事にてそのレベルに到達するためにどのように勉強すれば良いのか説明する。また、これらの記事はソフトウェアエンジニアとして必要な語学力をどのように身につけるのかという点に重きを置いている。他の業界で通じるかどうか不明である。
予め断っておくが、全てのソフトウェアエンジニアは英語が出来ないとダメとか全てのビジネスで国外のユーザも含めて考えろ、その分野の No.1 を狙え等と言うつもりは毛頭ない。国内のユーザに特化したサービスというのは単一民族国家かつ島国で暮らす我々日本人にはとても需要があることはわかっている。一方で、英語が近年のソフトウェア産業における自然言語のデファクトであることや日本語より使用者の人口が多いのは事実だ。だから日本のソフトウェアエンジニアや企業にハッパをかけるために英語を習得したり企業の共通言語を英語化することでソフトウェア開発企業ならメリットがあるんだよ、挑戦できる企業はバランスを考えて挑戦して欲しいな、というくらいの考えで書いていると受け取っていただきたい。
そもそも英語は必要か?
人による。必要ない人は本当に必要ないと思う。 DeepL のように精度の高い翻訳機が出てきているのは事実で、近い将来技術が言語の障壁を感じなくさせてくれる可能性はある。僕は国内外問わず英語で仕事をしていきたいため、ここではポジショントークを展開させていただきたい。すなわち、ソフトウェアエンジニアが英語を使えるメリットと企業が共通言語を英語にするメリットを列挙していく。
個人が英語ができることのメリット
ソフトウェアエンジニア一個人としてみたときの英語ができることのメリットはこの辺だろうか。
- より多くのユーザに自分が開発したソフトウェアを届けられる
- 自然言語は流行りの技術と違い一瞬で陳腐化することがない
- 一次情報にアクセスできる(洋書や公式ドキュメントの翻訳は必要ない)
- 海外のカンファレンスでコミュニケーションできる。または登壇できる
- 同じ職種なのに日系企業より高待遇
例えば、以下のツイートで触れている本は翻訳されてようやく日本で話題になったが、英語で本読むエンジニアはだいぶ前から目を通して議論を深めている。
I'm reading "Team Topologies". After I read Inspired, Accelerate, Elegant puzzle and this book, I found that there are my ideal organization structures in my mind.
— Takayuki Watanabe (@takanabe_w) January 31, 2020
また、英語のブログや Podcast を購読していれば、COVID 19 の流行前後でエンジニアの市場価値がどのように変化しているのかという事例にも触れることができる(e.g This insane tech hiring market - The Changelog: Software Development, Open Source)。このような情報は日本語だけでは絶対にたどり着けない。
会社の共通言語が英語であることのメリット
ソフトウェア開発企業が英語を共通言語にするメリットはこの辺だろう。
- より多くのユーザに自分が開発したソフトウェアを届けられるため利益が大きくなる
- ユニコーン[1]を探す競争から解放され、エンジニアの採用範囲が拡大する
- 日本語で作られたシステムをあとから英語対応する必要がない
- 日本語で書かれている既存の開発ドキュメントをあとから英語へ翻訳する必要がない
などなど上げればたくさん出てくる。はじめの2つは人材取得の難易度に関わってくる。容易に考えられるシナリオが以下である。
- 日本語で商売をするとソフトウェアビジネスの最大のメリットであるビジネスのスケーラビリティが効きにくい
- 英語で同じようなビジネスを展開している会社と比べて儲からない
- 原資がないためソフトウェアエンジニアの給料は上げられない[2]
- 国内外資、海外で高待遇で同じような仕事があるため人材が流出する
- 採用したいレベルのソフトウェアエンジニアが少ないため採用が難航する
- タフな条件で採用活動に疲弊したソフトウェアエンジニアが退職する
- 深刻な人材難に陥る
実際に僕は日本語話者と英語話者の採用に関わっていたことがあるが、募集人数が桁違いに変わってくるのを経験している。ソフトウェアエンジニアの数というのはビジネスやソフトウェアのアーキテクチャを考える上で非常に重要な要素の一つだ。挑戦しようとしているビジネスやアーキテクチャを今後達成していく上で必要な人材を確保することはできるのだろうか、一度立ち止まって考えてほしい。
英語が”話せる”とは?
ポジショントークはこれくらいにして本筋に入る。
道行く日本人に”英語を話せますか”と質問するとほとんどの人の答えは No になると思う。謙遜しているつもりでもなく、本人たちは至って本気で話せないと思っている。何をもって話せると話せないの境界があるのだろうか。
自分は話せないという幻想は自分が知っている英語話者の相対的な語学力から来る。みんなが知っている英語話者をイメージしてほしい。多分完璧なネイティブ英語を使いこなす知りもしないアメリカ人というのが日本の英語教育を受けた人の英語話者のイメージ像ではないだろうか。そのイメージは一生かけても追いつくことが困難な超人なので一旦忘れて欲しい。
質問を変えて準備をすれば話せますかや苦労はするけど話せますかと質問したらどうなるだろうか。今度は Yes という人が少し増えると思う。自分の見解ではここで Yes と答えた人はソフトウェアエンジニアとしては既に最低限は英語を話せる分類に到達している。ソフトウェアエンジニアの全員が英語が母国語じゃないし、それらの非ネイティブが日本人と比べてはじめから英語ができるわけでもないからだ。
ネイティブのような発音ができないため、英語が話せないと思い込んでいるかもしれない。発音記号を完璧にトレースする練習をしたくなるかもしれない。断言する。必要ない。英語はリズムとイントネーションで話す言語だ。発音が多少おかしくてもそれっぽい音が出ていれば話している文脈で何を話しているのかわかる。ソフトウェアエンジニアとして働く限り、ドメイン知識は話者間で共有されている。だから発音が多少おかしくても脳内で勝手に単語補完がかかり通じる。発音がネイティブと違うイコール英語を話せないということにはならないのだ。自信を持って日本語なまりの英語で話せばいい。その独特なアクセントは日本人としてのアイデンティティでありいわば Samurai English[3]なのだ。
また、そもそも業務の多くは会話ではなくコードとドキュメントの読み書きに費やされる。リーディングとライティングだったらできるという人は非ネイティブの英語話者としては中級者[4]に到達しているため胸を張ってほしい。
後日触れようと思っているが実際にはポジションごとに必要な語学力は変わってくるのだが、一般的なソフトウェアエンジニアの英語が”話せる”のハードルは日本人が思っているほど高くないということだ。
海外で活躍している日本人ソフトウェアエンジニアの例
さらにソフトウェア開発に真摯に取り組んでいる人のハードルを下げるために、実際にクックパッドに所属していたときに一緒に英語を使って働いたことがある日本人のソフトウェアエンジニアを挙げてみる。
- @ainame (Senior iOS Developer at Cookpad Inc.)
- @kaorimatz (Software Enginner at Cookpad Inc.)
- @Kazu_cocoa (Senior Software Engineer at HeadSpin)
- @kenju (Senior Site Reliability Engineer at Neo4j)
- @sora_h (Software Engineer at Cookpad Inc.)
- @yuseinishiyama (Seinor iOS Developer -> Site Reliability Engineer at SoundCloud)
失礼な話だが僕は彼らが英語が特別堪能だと思ったことはない。それでもみんなチームメンバーからは信頼され、組織内で一目置かれていたように感じる。彼らのうち3人は今は日本と縁もゆかりもない海外企業で働いている。一緒に働くメンバーはソフトウェアエンジニアだ。みんな本職であるソフトウェアエンジニアとして高い技術力で圧倒的に成果を残すから評価されていた。英語が堪能なことより技術力と経験のほうがよっぽど重要なのだ[5]。
必要な英語力の優先度と最低限の期待値
さらに英語力をいくつかに分解してみると、一般的なソフトウェアエンジニアが業務で使う頻度順に並べると以下のようになる[6]。
- 語彙・基本的な文法
- リーディング
- ライティング
- リスニング
- スピーキング
COVID 19 でリモートワークが増えている現在、これらの傾向は以前よりさらに顕著になっていると思う。以下それぞれの理由と最低限業務をやっていけるだけの期待値を述べる。
語彙・基本的な文法
これがないと何も始まらない。リーディング、ライティング、リスニング、スピーキング全てで必要な力。極論、文法がめちゃくちゃでも単語の羅列でも相手の言っていることは推測できたりする。どんなに短い文章であったり、ゆったり話してもらっても単語と文法がわからないとお手上げだ。英語でプログラミングやクラウドサービスなどの公式ドキュメントを読んだときにわからない単語が多すぎる場合は語彙力が足りていない。Tips として新しい単語を覚える時は英語のまま覚えたほうがいい。availability は可用性ではなく availability だし、concurrency は並行性ではなく concurrency だ。
期待値
- 中学・高校で学習するレベルの単語帳と文法は理解でき、自分の技術領域の単語ならわかる。
- 英単語は日本語で覚えないで英語として覚える
リーディング
他の開発者が書いたドキュメントや自分が使っているソフトウェアのドキュメントを読むのはソフトウェアエンジニアとして基本だ。リーディングに抵抗があると全ての業務に抵抗が出てきてしまう。コードを書く時間より、読む時間の方が多いように、ドキュメントも書く時間よりも読む時間の方が圧倒的に多いからだ。
英文章に慣れてくると文法を意識して読むことは殆どない。英語を英語のまま頭から順に読む。時々わかりにくい文章が出てきたときだけ文法構造を把握する。一旦頭で日本語に翻訳したり文法を把握するために文章を行ったり来たりするのはスピードが落ちるのでしてはいけない。
技術文書[7]でこれができない時は単純に書かれている文章の語彙レベルに自分が追いついていない場合が多いため語彙力を強化したほうが良い。
期待値
- 技術文書に出てくる 70-90 % 以上の語彙を理解できる。わからない語彙も前後の文脈で推測できる。
ライティング
ドキュメントのリーディングの次に頻度が高いのがドキュメントのライティングだ。あなたが書いたソフトウェアの使い方、運用方法、デザインドキュメントなど英語で書いていく必要がある。スピーキングよりこっちの方ができない人のほうが多い気がする。また、英語で文章が書けることと Technical Writing ができることは異なる。技術文章を書くのが苦手な人は Technical Writing は別途勉強したほうが良い。
期待値
- デザインドキュメントやソフトウェアのマニュアルなどを書く時はギアを1段上げて技術的に正確な文書を書ける
- メールや Slack などのコミュニケーションツールでの会話が雑にできる
リスニング
リスニングもとても重要なのだが、殆どのソフトウェアエンジニアはリーディングやライティングの方が使用頻度は多い。業務中の会話で相手の説明が理解できないシーンは頻繁にある、そういう時は、”Sorry?“とか “Could you say again please?” と言えばゆっくりはっきり話してくれたり、よりわかりやすい表現にリフレーズしてくれるので問題はない。日本人の英語の勉強方法でよく使われるドラマのフレーズが聞き取れないみたいなのは問題ない。なぜなら業務で使われる単語やフレーズではないからだ。また、TOEIC が 900 点に届かないみたいなのも関係ない、なぜならネイティブスピーカー同士が本気のスピード話す会話は TOEIC 900 点くらいで聞き取れるようにはらないからだ。ドラマが聞き取れるようになるとか TOEIC で高得点を取るみたいなのは、より高いレベルの会話を聞き取れるようになったり、英語をずっと聞いていても疲れない体質になるための教材候補の一つに過ぎず、ソフトウェアエンジニアが会話で使われる単語や会話を聞き取るための最適な教材ではないと思う。
期待値
- 会話で出てくる技術用語が聞き取れ、意味を理解できる
- 相手が言っていることがわからないときに素直に “Sorry?” と聞き返せる
- ゆったり話してもらったり、リフレーズしてもらったときに聞き取れる
- 参考として、自分の分野の本を Audible の 0.8 - 1.0 倍速で聞ければ問題ない
スピーキング
業務で使う英語は本当に限られている。質問文に対して Yes、No でシンプルに答えられること、設計の意図、提案、状況説明などソフトウェア開発をしていく中で必要なやり取りのテンプレートをいくつか暗記しておき、それらを組み合わせることでほとんど対応できる。
また、外資系企業でよくあるコーディングやシステムデザインのインタビューは業務で必要な英語力とはあまり関係ない。これらは事前に準備ができるため、そういう採用面接用の特殊スキルは LeetCode、Cracking the Coding Interview 、System Design Interview – An insider’s guideで対策すればいい。
“Reddit: Reality is often disappointing…!!“より引用
期待値
- Yes, No で回答できる疑問文に対して、シンプルに Yes, No で回答できる
- 手順や設計を説明するときに使われる典型的な文を理解して、それらを組み合わせて回答できる
英語力が原因と勘違いしてはいけないこと
余談として英語力のせいにしがちな問題を取り上げる。これらはあなたの純粋な語学力とは全く関係ない。だから、これらが理由で仕事やコミュニケーションが上手くできなくてもそれはあなたの英語力が低いためではない。
コンテキストを把握する力
会話を上手に進める能力として話者間のコンテキストを把握する力がある。日本人が英語で雑談するのが難しいと感じるのは多分これが原因である。
雑談がなぜ難しいのか。英語で雑談をするときたいていのケースで日本人は相手側とコンテキストをあまり共有できていない状態である。ここでいうコンテキストというのは相手の国の歴史だったり、文化だったり、商品の名前だったり、流行りだったりそういう環境・グループに所属しているだけで勝手に身につく情報のことだ。
日本語でも自分が全く知らない分野の話を周りのみんな(マジョリティとする)がし始めたらどうなるだろうか。聞く側に回るか質問をたまにするかくらいが関の山ではないだろうか。日本企業内にいるメンバーと英語で話す場合はこの難易度は著しく下がる。なぜならお互い共通するコンテキストに自然と触れているからだ。事前の説明なしで”横浜”や”山手線”とか言っても通じるため楽ちんなのだ。つまりコンテキストを共有していない人と話すことは日本語であっても難しい。海外のメンバーと英語で話す場合、日本人はマジョリティが共有するコンテキストをもっていないため語学力と関係ないところで話についていけなくなるのだ[8] 。
異なる国や物理的に離れた場所にいるメンバーとアイスブレークでの会話や雑談はコンテキストの把握が必要になる。これはソフトウェアエンジニアが必要な英語力の範疇を遥かに超えているので最初は諦めていいと思う。やるとしても時間をかけてマジョリティにコンテキスト共有するか、マイノリティ側の我々がコンテキストを把握する必要がある。
英語は一つではない
日本語で標準語と大阪弁が話し方もスピードも異なるように、英語を習得するといってもどの国のどの地域の英語を習得するのかで話す英語は異なる。
アメリカ、イギリス、オーストラリアなどの国は母国語として英語を使う。それでもアクセントやイントネーションはそれぞれの国で大きく異なる。アメリカ英語が聞き取れたとしても、イギリス英語が聞き取れるとは限らない。この差を英語の教材だけで埋めるのはかなり厳しいと思う。それらの経験値を積めるようになるのは実際に業務で様々な英語に触れるようになってからだ。素直に日本の学校で教えているアメリカ英語を中心に勉強するといい。せっかく勉強したのに相手の英語がわからないという時は、あー自分の知らない方言で話しているんだなと考えればいい。その人の話し方に慣れるまで少し時間が必要だがそのうち慣れる。
また、カナダのバンクーバーやアメリカの西海外のように移民がたくさんいる国で生活している人の英語はアメリカ東部(例えばニューヨーク)と比べてゆったり話す傾向がある。これも方言みたいなものだと思っていい。アメリカ西海岸の人々がゆっくり話してくれるのは我々英語非ネイティブには都合がいい。なぜなら、著名なIT企業の本社はアメリカ西海岸に多いからだ。
個人の癖からくる会話のしにくさ
すごい早口だったり、ボソボソ喋る人は日本人にもいる。そういう人たちの日本語は聞き取りにくい。英語でも話せるけど話すのが上手じゃない人はたくさんいる。それはあなたの英語力が低いから聞き取れないわけではない。
技術文章を書くのが難しく感じる
そもそも技術文章を書くのは難しい。日本語でも自分が開発したソフトウェアのドキュメントを書くことは難しい。英語だから書けないのか、単に頭が整理できていないから書けないのか、その文章は書くのが難しいのか分けて考えた方が良い。
英語で仕事をするには
最低限の英語力を手に入れたあとは自分が腹をくくって、そういう環境に飛び込むだけだ。幸いソフトウェアエンジニアはリモートでも仕事ができるので海外の仕事にも日本から参加できる。また、Woven Planet、メルカリ、トレジャーデータ、SmartNews、MoneyForward など英語を使える環境は増えている。
多くの人にとってキャリアは偶然訪れる機会の積み重ねで構築されるものであり、計画的に構築できるものではない。一方でチャンスが来たときにそのチャンスを掴めるか掴めないかは自分が普段からそのチャンスを意識して準備しているかによる部分が大きい。いつか英語を使って仕事をするんだと日頃から準備をしていれば、あなたは必ずその成果を使ってみたくなり、いつの間にか英語で仕事をするようになっているだろう。
おわりに
この記事ではソフトウェアエンジニアが英語を使えるメリット及び”ソフトウェアエンジニアとして英語を話せる”の期待値を定義した。
今記事を読んで、”そんなはずない、だってカンファレンスのプレゼンや YouTube でネイティブじゃない人の英語を聞くとすごい上手だ”と思うかもしれない。安心して欲しい。カンファレンスのプレゼンは英語に自信がない人はそれまでにすごい準備をするし、YouTube は詰まったり、変な英語を使ってもいくらでも編集できる。しかも僕たち日本人が慣れていない英語で話しているだけで、ネイティブのそれと比べるとまた違うアクセントやイントネーションを使っている。彼らの方が上手と思うのは自分が勝手に作り上げている幻想にすぎない。日本人は日本語なまりの Samurai English を自信を持って使って行けば良いのだ。
これをみた人の中に国内外で英語を使ってソフトウェアエンジニアをやっている方がいたら、最低限やっていけるだろうの基準が自分の肌感と合っているか教えていただきたい。あまり共有されない情報なので他の人に参考になると思う。
個別の勉強方法はまた別記事で上げる。それでは、メリークリスマス!
[1] 日本語話者かつ業界で経験がありかつ待遇の改善をそれほど気にしないソフトウェアエンジニア
[2] VC から資金提供を受けているベンチャーも原資がなければ給与は上げられない
[3] 変な発音を推奨しているわけではない。技術やビジネスへの理解を深めたり、語彙力を強化する等もっと重要なことがあるということ
[4] CERF で言うところの B1
[5] 影でめちゃくちゃ英語の勉強をしたのだろう
[6] Lead、 Staff、 Principal、Distinguished 等の高位の職位を持つと様々なチームと合意形成の場に駆り出される。そういう人はこの記事で定義した最低限”話せる”エンジニア程度では英語力は全く足りない。例外として、IC とStaff+ で定義されている Solver はその限りではない。
[7] 技術文書は一般的に難易度の高い語彙や文法は使われないため読みやすい
[8] そしてマジョリティがそれに気付くことはない