今週末は3連休!仕事も最近バタバタしてたのがだいぶ落ち着いてきたし、またこっちで働くことについて語ってみようかね。
アメリカで「まっとうに」ソフトウェアエンジニアとして働くのに、どのくらいの英語力が必要かというと、ぶっちゃけめっちゃ必要!要は、こっちの大学でコンピュータ・サイエンスを専攻して、一般教養の英語(ライティング)やスピーチ、歴史、社会学、その他諸々のクラスの他、専攻の教科を全部こなして、卒業できるくらいの英語力が必要よ!
例外は、例えば日本のオフィスで採用されて、アメリカのオフィスにトランスファーしましたっていう場合かなー。「日本から来たお客さん」枠に入るから、こっちの人よりはちょっと大目に見てもらえる(ように見える)。
例えば、日本から来た英語がそれほど流暢でない人に、あえて(必要最低限以上の)プレゼンテーションさせたり、新規採用での面接官のパネリストにさせたりはしない。そういうのは、ちゃんと察してもらえる。。。(少なくともはじめのうちは。)
でも逆に、他の人がやってる仕事をやれてないわけだから、プロモーションとかちょっと難しくはなると思うけど。
じゃあ、まっとうに周りのネイティブスピーカーと同じだけの業務をこなすのにどれだけ英語を使うのかというと、日々のコミュニケーション以外に今考えつくのはこんな感じ。
1)日々のスクラム・ミーテイング
今はアジャイルでの開発をしてるとこが多いと思う。
アジャイル方式は、ソフトウェアの機能を小さく分けて、早いペース(2〜4週間)単位でリリースしていく方式。小さい機能をリリースしたら、また次のプランニングのサイクルに入っていく。そうやって、機能を徐々に追加していく。
なので、日々の進捗管理が重要になってくる。つまり、ほぼ毎日、30分から1時間程度のスクラムミーティングが行われる。
チーム全体の現在のタスク一覧をみんなで見て、それぞれの担当者が進捗状況、なにかトラブル(ブロッカー)がないかとか、今日はどの作業を行うか、など、それぞれ報告し合ったりアドバイスしたり・もらったりする。
そうやってチームメンバー(10人前後くらいかな)を一巡するので、さくさくとテンポよく話さないといけない。
その他プロジェクト関連のミーティングも色々節目節目である。
2)ドキュメントの作成
色々ドキュメントがあるわね、仕様書とか、障害が発生した場合、その報告書とかね。。
書いたドキュメントはミーティングでチームメンバーに口頭で説明してフィードバックをもらったりする。拙い英語で書いておしまい、じゃない。
3)サポートのトレーニング
新しい機能ができたら、リリースに合わせて技術サポートの人たちにトレーニングを行ったりする。小さい機能追加なら必要ないんだけど、大規模な機能が追加されたら、その新機能の説明、デモ、簡単な技術デザイン、既存の問題や制限、トラブルシューティングの方法、よくある問題、などなどを説明し、質疑応答を行う。大抵チームの数人で共同でプレゼンする。
4)サポートチームからのエスカレーション
もちろん開発チームは顧客とは直接コミュニケーションは取らず、そういうことはサポート部門が行う。
でももしサポートが問題を解決できない場合、そういう場合はサポートから開発チームにエスカレーションされて調査依頼がされる。
そうすると、その時々の担当エンジニアがサポートの担当者とコミュニケーションを取って、問題解決していく必要がある。
5)障害対応(オンコール)
緊急な障害対応が必要な場合、時間帯に関わらず、必要に応じてその機能を開発・実装したチームが呼ばれることがある。
たいていそういう緊急を要する場合は、色んな部門から関係者が集まってウェブミーティングをして、リアルタイムでデバッグしたりログ解析したりして、ディスカッションして解決策を模索する。障害が解決するか原因が特定されるまで、何時間経っても開放されないこともある。
そういうわけで、技術力さえあれば引きこもってコーディングしてればいい、ってわけじゃないのよ。
(あんま引きこもってるだけだと、昇進に響く。)