第16回 クラウドサービスの「首都」シアトルで雲を創る Azure 開発者に聞いた、SWEの仕事とは?

クラウドサービスの「首都」シアトルで雲を創る Azure 開発者に聞いた、SWEの仕事とは?!
Seattle IT Japanese Professionals

この方にインタビュー:
河野 通宗さん
日本で博士号を取得後、研究者として過ごした後にマイクロソフトにソフトウェアエンジニアとして転職。その後アメリカ本社に異動してクラウドの開発に従事。コンピュータ歴は今年で38年。今でも毎日楽しくコードを書いている。また、SIJP で図書館システムの構築にも力を注ぎ、地域コミュニティに貢献している。

雨の音が聞こえ、日に日に秋の気配を感じる季節になりました。皆さんいかがお過ごしでしょうか。

8月に行われたリオオリンピックでは日本人選手が活躍して多くのメダルを取得していましたね。スマートフォンやタブレットでオリンピックを視聴した方もいたのではないでしょうか。

これらデバイス向けにはインターネットからビデオ配信されており、例えば NBC は Microsoft のクラウドサービス(Cloud service)Azure を利用して、オリンピックを配信しました。
NBC Olympics selects Microsoft Azure to provide live and on-demand streaming for its production of the 2016 Olympic Games in Rio

Microsoft 以外にも、Google や Amazon などのクラウド企業が集まっているシアトル地域は、クラウドサービスの「首都」とも呼ばれています。

そこで今回は、Microsoft 本社で日本人ソフトウェア・エンジニア(SWE)として Azure を開発するエンジニアの河野さんに SWE の働き方についてお話を伺いました。

現在のポジションに就いた経緯

幼いころからコンピュータに興味があったのでしょうか?

初めてコンピュータに触れたのは、7歳のときだったと思います。父親が Commodore 社のコンピュータ PET 2001を購入してくれたのが最初ですね。コンピュータで何ができるかわかるはずもなく、おもちゃ感覚でした。PET 2001の次は NEC PC-8001です。ASCII という雑誌に掲載されていた簡単なゲームや ASCII アートを表示するプログラムを入力して遊んでいたと記憶しています。一番よく覚えているのは、STAR WARS の R2-D2 が画面に表示されるプログラムです。その当時、英語はわからなかったので PRINT の意味も知らずに入力していましたが、入力完了後、R2-D2 が画面に表示された時は非常に感動しました。それで C-3PO はどのように描けるのだろうかと考えたりする試行錯誤が楽しくて夢中でした。

大学ではコンピュータ・サイエンスを専攻し、修士・博士課程まで研究を続けました。研究対象はオペレーティングシステム(OS)の開発です。Windows、Linux、Android、iOS などは現在の代表的な OS です。これら OS は PC やスマートフォンの基本的な機能を提供するソフトウェアですので、コンピュータの動作原理を理解するのに非常に役に立ちました。

大学卒業後、どのように現在のポジションに就いたのでしょうか?

最初は日本のメーカーの研究所で研究者として働いていました。周りは皆その分野での有名人でしたので、大変刺激の多い職場でした。5年くらい研究者として働いた後、実際の製品、特にソフトウェアの開発に直接携わりたくなりました。それまで開発の経験はありませんでしたが、日本マイクロソフトに応募したところ採用となり、SWE として働くことになりました。

日本マイクロソフトでは Windows Vista と Windows 7の開発を担当しました。Windows の開発がひと段落した後、新しいことにチャレンジしたくなったことと、Azure 開発者のポストが社内募集されていたため、応募することにしました。これはタイミングが良かったですね。

社内募集ではありますが、Azure 開発チームのマネージャを始めとして、複数回のインタビューを経ています。この点は他のエッセイで紹介されている方達と同様です。インタビューは Skype や Skype whiteboard 機能を活用して行いました。自分は SWE として応募しているので問題に対してどのようなアルゴリズムで解を求めてるか聞かれましたね。インタビューは5、6回受けましたが、課題は当然毎回異なります。このようにして私の問題解決アプローチを複数の角度から見ていたのでしょう。インタビューにおいては、単に質問を受けるだけではなくて、チームの雰囲気を確認したり、Azure 開発者として働くことに対する自分の熱意を見せていくことも重要でした。

小さなころからアメリカで働くことを夢見ていたわけではありませんが、日本マイクロソフトで働くうちに、ソフトウェア産業の中心であるアメリカで、ソフトウェア開発のトップ企業の1つである Microsoft 本社で SWE として働いてみたいと思うようになったことも応募した理由です。将来どうなるかは誰にもわからないので、やりたいことにはどんどんチャレンジしたいと思っています。ときどき「アメリカ行きは英語が十分できるようになってから」という話を聞きますが、自分の経験では、現地に住んでみないとできるようにならないことばかりでした。思い立ったら勢いにまかせてみるのも時には大事なのかも知れません。

ご家族にはアメリカ行きをどのように説明されたのでしょうか。

当時結婚していましたので、Azure 開発チームに応募する前に妻に聞いてみたところ「いいんじゃない」と軽く返答されたので、インタビューに専念できたことに感謝しています。私の場合は最終インタビューの2日後に採用の通知を受け、あっという間に決定しましたので、妻は逆に驚いていました。

職場環境について

職場環境はどのような感じでしょうか?

業務環境は日本とは大きく違います。Microsoft はワシントン州レドモンド市と呼ばれるシアトルから高速で30分程の場所にあります。非常に広大な敷地に Microsoft のビルが百以上建っており、これらは大学のように「キャンパス」と呼ばれています。開発業務をしていると、キャンパスと名称が示すように大学の研究室にいるように感じます。

キャンパスのコモンズは従業員の家族に開放されており、金曜日は、レストランに妻や子供を連れてくる人もいます。敷地内は緑豊かで公園やグラウンドもありますし、オープンな雰囲気を非常に気に入っています。従業員は自家用車、バス、自転車等、個人の自由で通勤しており、日本のように満員電車に揺られることがないので、満足度は非常に高いです。

就業規則では、在宅からのリモートアクセスを認められています。幼い子供がいる場合、早めに帰宅して保育園に子供を迎えに行き、帰宅後、家から業務を行う人もいます。個人が柔軟に働けるように選択肢が提供されているのは、さすがアメリカだなと思いました。仕事をする場を選ばない点は、働きやすさに繋がっていると思います。

英語の習得はどうでしょうか?日本人エンジニアがアメリカで働く際には英語の話題は避けられないですし、皆さん特に知りたい部分だと思います。

開発者に応募した頃の話ですが、アメリカ本社との会議は問題無く英語でこなせていましたので、インタビューも問題ないだろうと考えていましたが、これは大きな誤りであることがすぐわかりました。会議は事前に議題がわかりますので内容に予想がつきます。また多数の人へ向かって話をするため、スピードを少し落として話をしていたように思います。1:1のインタビューでは話題が予想できませんし、英語ネイティブスピーカーのスピードで話が進むため非常につらく感じました。1回ですべて理解できないこともあり、聞き返すこともありました。しかし、逆に言うと、1回で判らなければ聞き返すことができるため、テストよりは気楽かもしれません。

習得について、私はテキストの勉強や、英語クラスのトレーニングは受講していません。業務においてチームの英語が聞き取れないと仕事が全く進みませんので、1日に8~9時間必死で集中してリスニングをしていたところ、1年後に向上していた感じです。スピーキングについては、もっと時間がかかりました。1:1の時は話せても、特にミーティングの場でなかなか自分の言いたいことが言えず、言えるまでに3年くらいかかりました。現在、業務上のコミュニケーションは特に問題なくこなせるようになっています。

業務内容

PM(プロジェクト・マネジャー)や SWE は開発チームにおいてどのような役割を担っているのでしょうか?

PM は開発チームの中心となって、製品コンセプト、ユーザへ提供する機能やサービスを決定し、SWEは製品の各機能を開発します、というのが簡単な説明です。

SWE はプログラミングやコーディングだけしていると思われるかもしれませんが、業務内容はもっと多岐に渡っていて、機能のアーキテクチャ設計、プログラミング、開発物テストまでをカバーします。さらに、計画に沿って製品を開発するだけでなく、今後必要になると思われる機能を見越して、提案していくことも重要な役割であると認識しています。アイデアを思いつくと、業務のすき間時間を利用して、簡単なモックアップを開発し、チーム内で発表しています。チーム内での感触が良ければ、そのまま開発に進み製品に取り込まれます。チームに積極的に貢献していくことも SWE としての重要な役割であると考えています。

製品開発はどのように進むのでしょうか?

Azure の開発はアジャイル形式で行われており、製品によりますが、2か月程でリリースされるものもあります。チームメンバーは世界中から集まった優秀な人たちばかりなので、開発スピードはめちゃくちゃ速いです。時代や製品の規模も異なりますが、Azure の開発方法は、日本マイクロソフトで開発を担当していた Windows とまったく異なり、開発チームに入った後、非常に大きなショックを受けたと同時にワクワクしました。

開発チームは Microsoft という大企業の中にいるのに、まるでスタートアップ企業のようです。製品を短期間でリリースするため開発現場は熱気がムンムンしていて、自分も非常に刺激を受けますし、逆にチームにインパクトを与えられる存在になりたいと考えています。

コミュニケーション能力はSWEにとって重要ですか?

SWE はコンピュータのモニタを見ながら誰とも会話せずに1日が終わると想像されるかもしれません。集中してプログラミングするときはそのような状況になりますが、業務効率化を考えると、チーム内で開発状況を共有することは重要ですので、実態としては PM やチームメンバーと頻繁にコミュニケーションを取っています。毎朝15分程度のミーティングをして、チーム内で個人の進捗状況や課題点を共有していますし、必要に応じて他のチームのメンバーとも直接連絡を取り合いながら開発を進めています。IT 企業なので当然 Skype を活用しますが、私は Face-to-Face のやり取りが細かな表情も見られて一番互いに理解しやすく好んでいます。

コミュニケーションにおいて、日本と異なり、重要であると感じる点は、PM、SWE、TL(チームリード)等の各担当は役割が異なるだけで対等な立場でコミュニケーションを取ることです。チームにおいて関係が縦ではなく横である結果、変に気構えることもありませんし、チーム内での議論が活性化されて良い製品を生む結果につながります。

日本では、特に製品リリース前は SWE は長時労働になるように感じますが、河野さんの場合はどうでしょうか?

開発スケジュールは PM が決定しています。日本では PM が決定したスケジュールがそのまま降りてきて SWE が開発を進めるプロジェクトもあるのではないでしょうか。この場合、PM の見積もりが失敗すると、SWE が長時間残業をしてカバーすることになるという悲劇的な結果が待っています。

Azure 開発チームではスケジュール決定の際に PM と SWE が面談をしています。SWE 個人により生産性は異なりますので、SWE 自身が処理可能なタスク量を見積もって PM へ伝え、個人によって考慮すべき家庭の事情があるかもしれませんので、PM はこれらのチーム全体の情報を把握した上でスケジュールを決定します。

そのためリリース直前であっても長時間残業を強いられる状況になった記憶はありません。また、SWE が長時間残業しないとリリースできないプロジェクトは逆に PM の能力が問われてしまいます。私は業務時間が9時~18時で、帰宅後は家族と食事をとるようにしています。残業が必要な場合は、家からもインターネット経由で社内に接続して業務を行うこともありますが、それほど多くはありません。

長時間の残業はないと言いましたが、これは可能な限り業務の効率化に努めた結果でもあります。例えばテスト用のプログラムを開発して自動化させることもその一つです。開発チームは、ほぼ無制限のクラウドを利用可能ですので、このパワーを利用して、可能なものはどんどん自動化していくことを常に心がけており、業務効率を追求しています。

開発現場では必ずしもスケジュール通りに進まないことがありますが、その場合はどのように対応しているのでしょうか。

スケジュールは PM と SWE で話をした結果決定していますが、予測不能なトラブルは開発現場にはつきもので、予想を超える仕事量が発生してしまうことはあります。超過した仕事を進めるため、可能な範囲で残業をすることはありますが、明らかに個人で対処できない量である場合は早めに PM へアラームを上げ、チーム内で業務を最適化してもらいます。

日本では問題が発生しても、自分の責任として長時間残業や休日出勤でカバーすることが多く、チームメンバーにヘルプを頼むことを躊躇する傾向があるように感じます。しかし、オーバーワークで体を壊してしまうと欠勤となり、逆にチームに迷惑をかける結果になります。チーム全体として見ると、スケジュール通りに製品をリリースすることが重要ですので、個人のオーバーワークの結果リリースが遅れるよりも、チームで仕事を再割り当てしてカバーする方が良いのです。アメリカは個人主義が徹底されていて、チームで助け合うことは軽視されているのではないかと思っていましたが、そんなことはなくチームで互いにカバーしていることは新鮮な驚きでした。

やりがいはどのようなときに感じますか?

製品が無事リリースされて、製品を利用してくださっているユーザからのフィードバックが来ると、自分の仕事が社会に影響を与えていることがわかるので、非常にやりがいを感じます。フィードバックは SWE も見ていますよ。良いコメントが来れば素直にうれしいです。ですので、Azure を利用したら感想をどんどんフィードバックしてください。みなさんのコメントから新しい機能が生まれるかもしれません。

それから、自分のアイデアがチーム内で採用されることもうれしいですね。チームに貢献できるとやはりうれしく思います。

能力

最後に、米国で SWE として働く上で必要になる能力としてどのようなものがあると考えますか?

技術的な面と、メンタル面の2つがあると思います。

技術的な面:

  • ソースコード読解力
    開発現場では機能について詳細なドキュメントが作成されないこともあります。他の SWE が開発した機能を引き継いだときに、元の SWE が社内に残っていれば良いのですが、離職していると自分でソースコードを理解して内部動作を理解できるようにならなければいけません。ソースコード読解力は SWE として業務を行うためには必須の能力です。
  • 新技術への対応
    クラウドの技術領域は広く、新しい技術もどんどん出ています。1人で全ての技術に精通することは当然できませんが、自分の担当分野の新技術はチェックして、概要は把握しておくように努めています。例えば Meetup やオンライン講座を受講することもその一つです。得られた知識はチーム内の同僚とも話をして互いの技術領域について情報共有しています。概要レベルでも常に新しい技術にキャッチアップして、業界の動向を理解しておくことは SWE として必要な素養でしょう。

メンタル面:

  • 主張すべき点は主張する
    新機能の提案にしても、既存機能の改善にしても、自分で考案したアイデアはしっかり主張していくことがチームの製品向上につながるため重要です。悪いと思う部分についてはしっかり指摘していかなくてはなりません。このように主張・指摘をして人間関係が悪くなったことは今までにありません。既存機能の改善のため、問題点を指摘すると開発者が気にするのではないかと思われるかもしれませんが、私の場合はそのようなことはありませでした。

なお、Azure は多くの機能で構成されていて互いに依存していますので、自分と相手の機能についてすり合わせのため議論することは多いです。そのような場において、相手を非難するのではなく、良いと考えられる方向性を、臆することなく徹底的に主張・議論できることは重要です。

ありがとうございました。

取材・執筆:金子 敏章
大学では応用物理を専攻。卒業後、日系 IT 企業に就職。現在はシアトルでデータセンタ製品の開発に従事。

掲載:2016年10月

この記事は、参考情報の提供のみを目的としており、法的その他の専門的助言を提供するものではありません。この記事に記載する情報に基づくいかなる行為およびその結果について、筆者および SIJP は一切責任を負いません。また、掲載内容は対談者個人の見解であり、所属する企業を代表するものではありません。

コメント

この記事にコメントする

※コメントは承認制です。公開までに時間がかかることがあります。
※弊社へのご連絡にはお問い合わせフォームをご利用ください。コメント欄はご使用になれません。
※内容によって掲載をお断りする場合もありますので、あらかじめご了承ください。

「ひと」の新着コメント

このカテゴリーのコメントはありません。

Fandango Now Tickets for AMC Theatres!