開発者体験に惹かれたエンジニア
7年前、WEB系のソフトウェアエンジニアとしてキャリアをスタートし、3年前にLiBへ入社しました。事業がスタートしてから間もなかった当時はLiBに開発組織というものはなく、私はコンサルティングファームというこれまで関わりのなかった世界にぽつん、といるというだけの状態でした。
“CTO”だけが存在し、4年と少し業界を経験しただけの弱輩にとって、その人は違う世界を生きている人なのだと感じたのを覚えています。そして、今でも良き師として日々鍛えてもらっています。
最初の仕事はよく覚えています。
当時は社内でまだ開発をしていくという体制が全く整っていなかった環境というのもあり、これからローンチしていくプロダクトのローカル環境の構築をしました。そのプロダクトは、個人の技術的背景とは全く異なる技術で構築されていましたので、かなり難航した苦い思い出として記憶に残り続けています。
それまではソフトウェアエンジニアとしてフロント&バックエンドの開発をしてきていたものの、CI/CDの構築やクラウドアーキテクチャなどインフラ寄りの領域はノータッチでした。
この最初の仕事がきっかけとなり、私はインフラ領域への志向性を持つことになります。
本来、派手な機能開発をガンガンしていってMRRに貢献していく!という華々しい成果目標を掲げるようなタイプではなく、「縁の下の力持ち」であり続けることを望むようなタイプだったので、性質的にもそちらがマッチしていたのだと思います。機能リリース数よりも、リリースにおける障害発生率などを自身の成果として認めていきたいと考えていました。
それからは、ソフトウェアエンジニアとして機能開発をメインに進めながら少しずつ環境の整備(CI/CDそのものの改善や、ローカル環境の速度改善)を行っています。
記憶に新しいローカル環境の速度改善は、Dockerのファイルシステムを変更することでした。最初はデフォルトであるgRPC FUSEを採用していたのですが、ファイルシステム周りのプロセスにかなり負荷がかかっていたというのと、2022年12月にVirtioFSがDockerに正式採用されたというのもあり、VirtioFSに切り替えをしました。これはかなり成果が出ており、他の開発メンバーからも「ローカル環境が軽くなった」との声をいただきました。
また、CI/CDそのものの改善に関してはGitHubActionsでワークフローとジョブの定義をしているのですが、継ぎ足しで開発が進んでいたこともあり、重複したjobや不要なものも残っているという状態でした。処理自体の改善もしましたが、全体の見直しをすることにより、改善前の55%ほどの処理時間でbuild→test→deployが完了するという結果になりました。
そういった環境整備を片手間で行う中で”開発者体験”という言葉を知り、調べていくことで「より良い体験へと組織で向かっていきたい」と考えるようになりました。
我々は基本的にクライアント様の成果に向かい、日々、機能開発をしています。
開発者体験の向上はそこに間違いなく繋がる取り組みですが、それだけではありません。開発者がより自身の思い描く開発者像に向かうことができ、成果に繋がる組織を作り上げるためにも重要なものだと考えます。
そして、私が開発者体験という概念に惹かれた理由には、自身のバックグラウンドも大いに関係があると感じています。
プロジェクト内の実装工程において、多くの不確実性を孕む(と思われる)プロダクトの開発をしていたこと
属人化された、特定の人にしか分からない領域がほとんどであるプロダクト開発をしていたこと
自社開発したDBのGUIクライアントツールにより、開発効率が比較にならないほど向上したこと
開発者体験というものは時代の流れによる変化と、開発者それぞれにおける解釈の幅もあり、一概にこれといったものはありません。私の考える開発者体験というテーマでもどこかで触れていきたいですが(ボリュームが大変なことになってしまうため)、ここでは広義の意味で捉えていただけると良いかなと思います。
ただ、良くも悪くも開発者の体験(及びそれを構築する環境)が開発者の成果や、開発者が仕事をする上で喜びに繋がりうるということを経験として感じていた、ということになります。
「凡人をして非凡なことをなさしめる」という言葉があります。
マネジメント領域には明るくないので、あくまで浅い理解の上で好きな考え方として挙げているのですが、組織のあるべき姿として、この実現を目指すというのは個人的に向かっていきたい方向でもあります。
そして、まさに開発者体験とはこれを実現するための大切な一要素であると考えています。
振り返ってみると、こういったバックグラウンドと価値観の中、組織を作っていくというフェーズにおいて在籍していた開発者が、この開発者体験というものに惹かれていったのはごく自然なことであると感じています。
組織作りの過程で多くの問題が発生し、意図しない結果になったこと、失敗したこと、それら多くの事象を目の当たりにしているからです。
開発者が開発者として良き体験を得られる組織作りのため、現在LiBにおける開発者体験のビジョンを策定し、ビジョンの実現に向けた組織及びプロダクトの改善に繋げていこうという動きをしています。それは、組織そのものの文化を構築し、醸成させていくことでもあります。
開発者体験というと、まだソフトウェアの在り方に着目された考え方が多く主流かと思いますが、開発者を軸とした組織や、そこから帰結して開発者その人に、より焦点を当てたものにしていきたいと考えています。
ただの一兵卒であるエンジニアが、自ら実現したい世界観を掲げ、そこに向かう動きをしていけること、それは何よりもビジョンを大切にしているLiBだからこそであると感じています。ビジョンへの共感を得ることができ、協力を仰ぐ仲間がいて、応援してもらえるこの環境で、良き開発者体験への第一人者となり、良き開発組織作りにこれからも尽力していけたらと考えています。
開発者体験に関する個人的な解釈については、個人で取り組んでいるZennでも取り上げているので、ご一読いただけますと幸いです。
開発者体験に関する様々な議論を多くの方とできると嬉しいです。