10 月末日をもちましてベルフェイス株式会社を退職しました。
短い間でしたが貴重な経験ができたのでここに記録します。
経緯
入社前
前職をやめる決断をして転職先を探していた際に ぺすちん(@Mrr_ma) さんに誘われたことをキッカケに入社しました。前職のプロダクト開発を活かしつつより大きなプロダクトを扱ってみたいという願望が叶いそうだった点と、コロナ禍においてリモートを推奨するプロダクトが追い風になるであろう点が決め手となりました。
入社後 2 ヶ月間
リプレイスチームに配属され、マイクロサービス化及びシステムのモダン化業務に携わることになりました。チームメンバーにも恵まれ、つよつよリードエンジニアやつよつよデザイナー兼フロントエンドエンジニア、優しい兄貴分のバックエンドエンジニア兼サブリーダーと勉強家で頭の切れるリーダー、同期入社のバックエンドエンジニアでスクラム開発を行いました。自分の担当範囲は TypeScript + Koa で作る事になったバックエンドの基盤実装と全社共通の React コンポーネント実装でした。
突然の方針転換
(この項目は削除されました)
そして退職へ
(この項目は削除されました)
やったこと
TypeScript + Koa のバックエンド基盤
マイクロサービスのバックエンドを Node.js でやるという話があがり、知見があった私が基盤作りをすることになりました。構造はドメイン駆動設計の Layered Architecture 。 DI には inversify をアノテーションなしで採用しました。アノテーションなしにした理由としては、TS のアノテーションの仕様が古く、変更の可能性があったためです。OR Mapper には knex を採用してマイグレーションにも対応しています。
全社共通 React コンポーネント
つよつよデザイナーが組んだデザインシステムをもとに各パーツを全社共通の React コンポーネントとして実装しました。このデザインシステムは旧デザインを一新して各パーツや配色に対して論理的な意味をもたせて実装上の差異を起こさせない素晴らしいものでした。このデザインシステムの意図をコンポーネントで最大限に表現するために、フロントエンドエンジニアが集まって何時間も議論を重ねて OSS レベルのものを作る勢いでブラッシュアップし続けました。
採用活動強化
既に採用活動に精力的に取り組んでいたリーダーとの雑談で「コーディングテストを導入したい」という話があったので ISSUE ベースのコーディングテストを作りました。以下のような想定シナリオで ISSUE を読みながらコードの問題点を指摘していく内容になります。
- 受験者は問題のある Pull Request のレビューする
- ISSUE に不備がある場合や不明点がある場合は、面接官に確認する
- ISSUE に対して改善点がある場合は、面接官に進言する
ISSUE にはわざと問題点を残しているので、それを指摘できるかも試しています。
興味を持ってくれたチームメンバーに展開したところ、想像を上回るコードレビューをしてくれる人や ISSUE を全く読まずに罠にはまる人など様々な反応が見られて面白かったです。
また、機械学習を使った書類選考自動化のための枠組み作りにも取り組みました。こちらは書類選考時にスキルシートを提出してもらいそれを事前学習させたモデルで評価することで、人手による差分や手間を減らす狙いがあります。この内容で社内勉強会で発表しました。
得られたもの
マネジメントへの興味
リーダーがマネジメントに対して本を読み勉強をしている方だったので 1on1 のときに読んだ本の内容やマネジメントに必要なことなどを教えていただきました。癖のあるチームメンバーに対して、どのように配置してどのようなロール(役割)を与えたら動きやすくなるのかを考えるのは非常に興味深かったです。私自身も数多くの問題点をフォローしていただきました。今後マネジメントに携わった時には、ここで得た知見を活かしたいです。
デザインシステムへの理解
共通コンポーネントを作っていくうちに OSS であるような CSS フレームワークも背景にデザインシステムが存在することを意識させられるようになりました。次に開発するときには、背景にあるデザインシステムやどのように使ってほしいかという製作者の意図をコードから読み取っていこうと思います。
リードからの学び
つよつよリードエンジニアと出会えたことは、この会社に入って最大の衝撃と幸運でした。私よりも若い “えいえんのじゅうはっさい” という年齢ながら技術のカバー範囲は非常に広く、技術選定においてはそれらが持つ特性や経営状況を加味した上で判断できるとても優秀な方でした。彼の書いた社内ドキュメント「Atomic Design が生んだ弊害とこれからのコンポーネント分割のベストプラクティスの考察」は私が Atomic Design に対して課題感を抱きつつも解決できなかった問題への新たなる切り口を与えてくれるものでした。
オンラインでのコミュニケーション
ベルフェイスではコロナ前からリモートが推奨されており、オンラインでの仕事の仕方に対する知見がありました。チーム内ではわからないことがあると気軽に Zoom を開いて相談したり議事録をすぐに関連する ISSUE にフィードバックするなどの習慣がついていたので、さほどオンライン特有の苦労は感じませんでした。オフラインだと会議室の確保が大変ですが、オンラインだと Zoom を使うことですばやくミーティングがはじめられました。コミュニケーションロスはあらゆる問題を引き起こし組織やチームを分断することになるので、オンライン・オフライン問わず少しオーバーなくらいコミュニケーションに気を使うことが問題を防ぐことに繋がるという学びを得ました。
最後に
恵まれたチームで社名を冠する大きなプロダクトに携わることができたことは私にとってかけがえのない経験となりました。チームメンバーとキャンプで肉を食いながら呑んだりと楽しい日々を送ることができたのは良い思い出です。転職でなくなる縁ではないと思うので今後ともよろしくお願いします!