ソフトウェアエンジニア @ Tanzu Labs のオンボーディング体験

Yasunori MAHATA
Product Run
Published in
10 min readMar 1, 2023

こんにちは! 2022 年 7 月に Tanzu Labs に入社した真幡です。ロールはソフトウェアエンジニアです。

本記事の執筆時点で Tanzu Labs の在籍期間が半年強になります。記憶が新しい内に、ソフトウェアエンジニアとして Tanzu Labs に入社するまでと、入社後のオンボーディング体験について、記事に起こしてみようと思います。

入社前の面接体験

前職での仕事に一区切りをつけ、次のステップを考えるため LinkedIn で “Software Engineer” の検索結果を眺めていたところ VMware Tanzu Labs の募集要項を見つけました。僕は「VMware かぁ、仮想マシンは詳しくないんだよな…」と思って、そっとタブを閉じ…ませんでした。このときグッとこらえた自分を褒めたい気持ちでいっぱいです。

募集要項には次のようにありました。

You’ll have the opportunity to leverage a range of tools and technologies, from common skills like Java/Spring, C#/.NET, and Typescript/React, to iOS or Android, Rust, Golang and beyond. We’re routinely on the cutting edge with tools like kpack and knative on Kubernetes, while alternately excavating heritage mainframes. Our engineers are technically deep, and learn to deploy their skills in a range of technologies and contexts.

(Java/Spring、C#/.NET、Typescript/React などの一般的なスキルから、iOS や Android、Rust、Golang など、さまざまなツールや技術を活用する機会があります。Kubernetesのkpackやknativeといったツールで常に最先端を行く一方で、メインフレームを掘りおこすこともあります。我々のエンジニアは技術に造詣が深く、そのスキルを様々な文脈や技術でデプロイすることを学びます)

なんということでしょう…。意外にも仮想化技術に関する知識は求められませんでした。そういうことなら面接でも建設的な話ができそうだと思い、「応募」ボタンを押して LinkedIn を離脱したのでした。

このときの自分の軽率さも中々なもので、よく考えると「Java/Spring, C#/.NET, and Typescript/React, to iOS or Android, Rust, Golang and beyond」に詳しくて、かつ「tools like kpack and knative on Kubernetes」にも詳しい人類なんているのか、という気持ちにもなるのですが、よく考えなくてよかったと今は思います。後知恵ですが、LeanXP のプラクティスでもあるペアプログラミングを毎日のようにしていれば、それらの技術について「ある程度わかる」ところまでは高速道路のように進めるな、と思います。ペアプログラミングについては本ブログでも何度か言及されているので、ぜひご覧ください。

内定から入社まで

さて、毎日のようにペアプログラミングをすることは学習効率が高い、と書きました。幸運なことに Tanzu Labs のソフトウェアエンジニアは仕事の 8~9 割の時間をペアプログラミングに費やします。このような環境なので、採用面接もほぼペアプログラミングを通して行われます。

僕のときは Tanzu Labs の現役ソフトウェアエンジニア 3 名とのペアプログラミングを経て内定にいたりました。ペアプログラミングでの面接はテスト駆動開発 (TDD: Test-Driven Development) でコードを書きます。正直に告白をすると、僕はそれまで「テストを先に書いてから実装をするスタイル」で開発をした経験がなかったので、「お金を払ってでも受けたい TDD ワークショップだ…!!」と思い、うきうき気分で面接を受けました。ペアで話しながら開発をすることで Tanzu Labs のソフトウェアエンジニアの人柄もわかり、面接体験はかなりポジティブでした。

内定後に現在の上司である Andrew に「あらかじめ読んでおくべき書籍などはありますか?」と尋ねたところ、次の二冊を勧められました。

僕は募集要項から 「Java/Spring, C#/.NET, and Typescript/React, to iOS or Android, Rust, Golang and beyond」 に詳しくなるための本を推されるのかと思っていたので、Andrew からこの二冊を推薦されたときには驚きました。しかし、Tanzu Labs での仕事を経験した今となっては、これら以上に Tanzu Labs での仕事に役立つ本はないと思います。

エクストリームプログラミングは僕たちの仕事の仕方の根幹だし、そのプラクティスのひとつでもあるペアプログラミングは一冊の書籍として切り出し、深堀りする価値のあるものです。余談ですが、テスト駆動開発は著者の Kent Beck さんがぶつぶつ言いながらひとつずつ Red/Green/Refactor のサイクルを回しながら開発を進めていくスタイルで書かれています。この「思考をぶつぶつ言葉にしながら、小さいステップで開発を進める」ことは、まさに Tanzu Labs のエンゲージメントそのものだな、と今は感じています。

最初のプロジェクト

無事に入社した後は、しばらく先輩社員とペアプログラミングをして感覚をつかみ、すでに稼働しているプロジェクトに加わりました。Tanzu Labs では、ソフトウェアエンジニアはプロダクトマネージャーやデザイナーと一緒にチームを組んで開発を行います。これはバランスチームという名前で、対外的にも「Tanzu Labs のプラクティス」として紹介しています。プロダクトマネージャーやデザイナーが近くにいるおかげで、解くべき課題やプロダクトのゴールについても短時間で理解でき、スムーズなオンボーディング体験ができました。

さて、最初のプロジェクトで開発したソフトウェアはウェブアプリケーションでした。今までバックエンド/インフラ寄りの開発を主戦場にしていた僕は、フロントエンドの開発、特に CSS (SCSS) に長けているとは言い難い状態でした。あるユーザーストーリーの実装で、サムネイル画像をタイル状に配置する機能が必要とされました。僕たちのペアは TypeScript をこねくり回して、どのサムネイルがどこに配置されるべきか実装し、満足して一日を終えました。翌日、別のペアが同じ機能を Flexbox に置き換えてくれ、その振る舞いを僕に教えてくれました。啓発的な体験でした。

開発者はフィードバックを得て成長します。ペアプログラミングではペアからフィードバックを即座に得られるので、その点で優位です。また、ペアプログラミングは「常にペアからレビューされている」ので、トランクベース開発に向いています。Tanzu Labs でもトランクベース開発は広く行われています。最新の変更が常にトランクにある状況下では、開発者全員が新しい変更に意識を向けるので、その意味でもフィードバックを得られやすい環境だと言えます。

先の Flexbox でできる実装を TypeScript でがんばってしまった例は、不要なコードを書いてしまったという点で、いわゆる「まずい実装」です。しかし、そのコードは広くユーザーに届いてしまう前に葬り去られ、代わりに僕に学習の機会を与えてくれました。これは素早くフィードバックを得られる仕組みの勝利だと思います。

このような経験を繰り返し、クライアントとともに学び、開発し、エンゲージメントを無事に終えました。

今後

実は Tanzu Labs の募集要項には次のような記述もありました。

Success in the Role: What are the performance outcomes over the first 6–12 months you will work toward completing?
(このロールにおける成功とは: あなたが目標とすべきの6–12ヶ月のパフォーマンスのゴールは何ですか?)

* Quarter 1 — you will have made amazing improvements to your engineering skills! You will feel comfortable helping less experienced client engineers build great software. (最初のクォーター: あなたのエンジニアリングスキルは驚くほど向上しています! 経験の浅いクライアントエンジニアが素晴らしいソフトウェアを開発するのを、どっしりした気持ちで手助けできるようになります)

* Year 1 — you will feel comfortable leading the efforts of an engineering team! You will deliver fantastic software and make a lasting impact on the software skills of customers. (最初の一年: 不安を覚えることなくエンジニアチームを率いることができます。素晴らしいソフトウェアを提供し、顧客のソフトウェアスキルに永続的なインパクトを与えることができます)

僕は最初のクォーターを終えて、入社一年目を無事に終えられるよう精進しているところです。確かに自分のエンジニアリングスキルは向上しています。「驚くほどか?」と言われると自分ではわかりませんが、バックエンドエンジニアだった自分がフロントエンドのコードを触ることに対する恐怖感はだいぶなくなっています。

先にも書きましたが、エクストリームプログラミングと、そのプラクティスであるペアプログラミングは学習の高速道路だと感じており、このまま「Year 1」のゴールに向けて邁進しようと思っています。顧客のソフトウェアスキルに永続的なインパクトを与えるぞ!!

Tanzu Labs のソフトウェアエンジニア

さて、最後に Tanzu Labs のソフトウェアエンジニアの全体像について、僕の印象を書いて本記事を終えようと思います。

Tanzu Labs の前身である Pivotal Labsのコアバリューのひとつに「Always Be Kind」というものがあります。仕事をしていると、これを体現しているメンバーばかりだと感じます。困りごとがあればメンバーが助けてくれる、という安心感があります。

また技術面で言うと、誰もがひとつの強みを持った上でフルスタックエンジニアとして振る舞う力を持っているように思います。僕がバックエンドエンジニアから転身したように、他のメンバーのバックグラウンドも多岐にわたります。モバイルを深く極めた同僚、フロントエンドに詳しい同僚、その他にも様々なメンバーがいます。

小規模なバランスチームでエンゲージメントを行うという特性上、僕たちはフルスタックエンジニアとして開発を行いますが、何かの技術領域に深く潜る必要があれば頼れる仲間が Tanzu Labs 内にいる、というのは心の拠り所です。僕自身も仲間から同じ風に思ってもらえるよう、今後もがんばっていくぞ、というお気持ちでいます 💪

--

--