アメリカの生活の話ばっかりになってしまったので、仕事の様子もすこし紹介しましょう。もちろんアメリカでも会社によって全然違うとは思います。
僕のいる部署は100人くらいのエンジニアがいるのですが、5人のチームで毎日の業務を進めています。1人はプロジェクトマネージャで、プログラミングはしませんがタスク管理や他のチーム、部門とのやりとりをしてくれています。日本のプロマネの印象とちがって、とにかく頼りになるんです。毎朝のスクラムミーティングでは作業の障害になっていることを一生懸命聞き出して、細かくその場でタスクリストを更新していってくれます。なんだろう、部活のマネージャ的な? こういうスキルがある人がいるとアジャイル開発は本当によく機能するんだなあと感心してしまいました。
残りの4人はエンジニアなのですが、お互いに頻繁にデザイン検討をしたり、コードレビューしたりしてチーム内のコードはほぼすべてみんなが把握している状況で進めていきます。チェックイン前のコードレビューは結構時間もかかりますが、これは一度習慣になってしまえばなしにはいられません。日本のゲーム業界でも徹底した方がいいなと思います。diff を見ながら一行一行チェックします。僕は結構一度にたくさん書いてしまうタイプなので説明するのも大変なんですが、英語が下手なのもあってレビュー用にUMLで補足資料書いたりします。これがむしろいいドキュメントになって残るような?
ビルドエンジニアの存在も本当に助かります。日本のゲーム業界はなぜかメインプログラマ的な人がビルド担当することが多いんですよね。ビルドエンジニアやQAエンジニアのポジションがちゃんと尊重されているのは良いことですよね。自動ビルドとテストはずっと回っていて、自分のチェックイン後にテストが失敗するとお知らせが来ます。まだ僕も効果的なテストの書き方はつかみきれていませんが、基本は自分の作ったところを他人に壊されないように防御するのがいいテスト、だとか。
今は朝8時くらいに出社して、午前中にスクラムとできるだけコーディング、割とゆっくり昼休みをとって午後は他チームとミーティングしたりデザイン検討したり、時間があれば引き続きコーディングやデバッグ、夕方6時くらいには帰る、というなんだか日本で考えるとエンジニア的には夢のよーなサイクルで過ごしていますが、たぶん今がそんなに忙しくないからでしょう、きっと。最近は vpn で家で仕事している人も割といるみたいです。
未だに慣れずに困っているのが頻繁に内線電話で相談したり議論したりすること。ただでさえ英語が不自由なのに、電話でしっかりコミュニケーションするのはすごい難しいです・・・