「ex-KAYAC Advent Calendar 2018」の12日目の記事となります。
どんな記事を書くかまだあまり決まってなかったんですけど、今までのアドベントカレンダーの流れを見るとカヤックを辞めてからのキャリアの話が多いので、私もそういった感じで書こうと思います。
ではまず、ちょっとした自己紹介させてください。
カヤックではとんぴーと呼ばれていたカナダ人のプログラマーです。
日本に引っ越したのが22歳の時で、主にゲーム業界に働いてきました。カヤックに内定した時点で約3年ぐらいPerlやPHPでゲームバックエンド開発の経験者でした。
2015年から2年弱「僕らの甲子園!ポケット」のサーバーサイド・エンジニアとして働いていました。ずっとぼくポケチームに配属されたので社員紹介ページを見ても実績のところにそれしか出てこないんですけど、よかったら見てください。
それからドイツのベルリンに引っ越して、Adjustというモバイルアプリ計測プラットフォームを提供しているSaaS会社で働くことになりました。
ところで、ドイツ語ってめっちゃ難しくて職場の公用語が英語で助かってます。
日本とお別れ
30歳になったときに日本に住んで7年目でした。すでに5年目ぐらいから周りによく日本に住んだ期間について「長いですね・・・」とか言われました。「旅行で来たわけじゃないし、長いってどういうこと?」と答えたいときもあれば、「まぁ一生住むのも無理はあるだろうね」って答えることもあったわけです。
とにかく30歳になるちょっと前から、そろそろ国に帰ろうと思い始めたんです。
本来はカナダでの就職活動について考えていましたが、カヤックに退職届を出したところ、元同僚だった知り合いに「日本を離れるならドイツは?」と訊かれて、AdjustというSaaS会社をおすすめしてくれました。
いつかヨーロッパに住んでみたい気持ちはなくはなかったですし、ちょうどその時におすすめしてもらった会社はGo言語を使ったポジションの募集していました。
カヤックにいた頃、主にPerl開発やっていましたが、先輩のプログラマーたちの影響で、Go言語にも興味をもつようになって、次の仕事でGo言語利用できればいいなぁと思っていたところです。
あの頃カナダでGo言語を使っている会社あまりなさそうでしたし、一旦応募してみました。
ベルリンってどんなところ?
冷戦の影響でヨーロッパの他の先進都市よりも遅れて発達したため、今でもベルリンの家賃や物価がわりと安いままです。元々ボヘミアン的な生活をしている貧乏なアーティストやミュージシャンが集まっていた町がここ数年にわたって発達し始めて、ヨーロッパでのスタートアップ企業のメッカとして知られるようになりました。
あと、ドイツにある一番ドイツらしくないと言われる町で、ベルリンの人口の約30%が外国人だそうです。たまにレストランやバーでドイツ語で注文したところ、ウェーターが英語で「ドイツ語話せません」と答えてくることもあります。郵便局のおばさんや水道屋さんとか英語が喋られない人はいますが、基本的に英語だけで生きていけます。
仕事環境
ベルリンでは古くてボロボロになった建物を取り壊さないで、スタートアップなど小さい会社が働けるオフィス・スペースにリフォームすることが多いです。私が今働いているオフィスもBackfabrik(バックファブリック)という1800年代後期に構築された旧パン工場です。
建物自体が古いせいで社内の空調があまり良くなくて、ほとんどの部屋にエアコンも置いてません。ドイツは日本みたいに蒸し暑くならないんですけど、夏に28度あたりになるとオフィスの中も非常に暑くて死にそうです。
幸いなところ、Hitzefrei(ヒッツェフライ)という習慣があります。ヒッツェフライというのが外の天気が暑い理由でいつもより早く家に帰れる日のことです。
そういった日に早く退勤し、プールや近くの湖でクールダウンしに行く人が多いです。
働いてみると
SaaS会社に働くことってモバイルゲーム事業と比べて、少し余裕を感じます。ゲーム開発の場合、新しい機能を欲しがっているユーザに対して、ある程度のスピード間が必要のため、コードレビューやっても受けた指摘を全部対応する時間ほどなく、中途半端なままリリースすることはあると思います。もちろん会社の文化によりますが、コードレビューを全くしないゲーム会社(カヤックではない)も見たことあります。
でも今働いているところみたいに、ある程度の余裕があるとプログラマーはコード・クオリティーにしっかりフォーカスできていいです。コードレビューで指摘されたところを直すだけで1週間以上かかる場合もあります(!)。
入社したばかりの時、最初に受けたコードレビューで指摘が非常に多かったため、「うわーまじでクソコード書いちゃって、クビになるかも」と思って絶望しました。
でも結局、同僚が意識の高いコードレビューしてくれることで、技術的負債を減らせますし、結局プロダクションにリリースするコードは少なくて二人以上のプログラマーがちゃんと把握しているものに限るわけです。
開発カルチャーの話題に他にびっくりしたことといえば、ステージング環境のなささというのもありました。
ゲーム開発の場合、ステージング環境を用意し、テストプレイやったり、偽ユーザデータをスクリプトで作成してシミュレーションを行ったりすることが多いです。
Adjustではステージング環境がなくて、Testing in Production(プロダクション環境でテストを行う)とMonitoring Driven Development(観測駆動開発)をやっています。
コードにメトリックスをたくさん埋め込んで、害がない範囲で本番環境にテストしたいコードをデプロイし、観測をしっかり見ながら、リリースできるかどうか判断する開発スタイルです。
本番環境でテストを行うことってなぜステージング環境で行うことより確実かについて日本語であまり適切に説明できないんですが、Adjustの場合、データの量とインフラのスケール単純にデカすぎて、本番環境と一致するステージング環境を提供することが難しいというかほぼ不可能です。エンジニアが考えられるシナリオはもちろんユニットテストやインテグレションテストでカバレージできますが、実際どんなデータが流れてくるかは本番でのサンプリングやベーターテストを行うまでわかりづらいです。結局モニタリングを使って本番環境をリアルタイムで監視した方が方が結果が出ます。
あと、NetflixからMicrosoftまで、様々な有名な会社もTesting in Productionやっているそうですし、Adjustにジョインした時に思ったほどクレイジーなアイデアじゃないはずです。
ワークライフバランス
ドイツの会社で働いているといっても、その中ドイツ人社員がマイノリティーかもしれません。45ヶ国籍以上いるインタナショナルな職場です。社内の公用語が英語ですが、周りにドイツ語以外にもロシア語・中国語など様々な言語を聞こえます。
@Saayamanも3日目の記事にカナダについて似ていること書いたと思いますが、ドイツも一応日本に比べて残業が少ないです。私が働いている部署ではフレックスタイム制ありますので、出勤も退勤もバラバラですが夜19時まで会社に残っちゃうとオフィスがほぼ空っぽです。
ドイツでは日本みたいに「お疲れ様です」や「お先に失礼します」みたいな挨拶はないんですけど、退勤の際によく耳にするのがSchönen Feierabend(シェーネン・ファイヤーアベント)という「仕事後の楽しい夜を」的な意味をする挨拶があります。
平日にでも家族や友達と過ごす時間や趣味を楽しむ時間を押さえるように残業をせずに帰ることが一般的です。
さらに1年に消化すべき有休が法律上で決まっています。1週間5日働く人は試用期間終わったタイミングに最低限年休20日もらえます。20日はあくまでも法律上の最低限休日数なので、25〜30日の方が一般的です。
1年終わった時点で有休消化ができていない従業員がいた場合、会社が補償金を支払わないといけないことがありますので、やむを得ない場合以外にマネージャーから有給休暇を完全消化するプレッシャーを感じます。
まとめ
最初からドイツに移住するつもりはなかったんですが、働いてみて今の職場もベルリンも好きになりました。インタナショナルな環境にいて楽しいですし、職場でしっかりしたコードレビューを受けられて早くスキルアップできていると思います。
IT技術者のノーハウさえあれば、色んな国のビザを優先的取得できてほかの職種に比べて海外転職しやすいでしょうし、将来的にドイツに残るか別の国に引っ越すか決まってないんですけど、とりあえず面白いと思った仕事を追いかけていこうと思います。
ex-KAYACアドベントカレンダーの12日目でした!Adjustからもらったリアル・アドベントカレンダーのチョコを食べながら、今後の記事を読むことも楽しみにしています。