CodeZine(コードジン)

特集ページ一覧

技術的負債は絶対悪ではなく共通課題――開発者体験の向上に取り組んだ3年間に訪れた壁とは【デブサミ2021】

【19-B-8】ARR20億円を3年で達成したエンジニア組織が実現した3つのDeveloper eXperience~訪れる壁と突破方法~

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2021/04/07 12:00

 私たちの多くは、1日の大半を仕事に費やしている。だからこそ、気持ちよく労働できる職場環境を整えることが重要なのだが、これがなかなかの難題だ。組織改善プロダクトを開発・提供するリンクアンドモチベーションは、プロダクトの成長を見越してそれまで外注していたアプリケーション開発などを内製に切り替え、新たにエンジニアを雇用した。しかし、そこでエンジニアたちを待っていたのは技術的負債や組織的負債の数々。エンジニアたちは次々と疲弊し、気力を消失していった。どうすればエンジニアが再び顔を上げて楽しく開発できるようになるのだろうか。同社のエンジニア第1号として入社した開発責任者の柴戸純也氏が、自身の経験を振り返りながら開発者体験「Developers eXperience(DX)」の向上にどう取り組んできたかを紹介する。

リンクアンドモチベーション ビジネスデザインユニット 開発責任者 柴戸純也氏
リンクアンドモチベーション ビジネスデザインユニット 開発責任者 柴戸純也氏

技術的負債に向き合い続け、開発者体験の向上に取り組んだ3年間

 組織改善プロダクト「モチベーションクラウドシリーズ」を開発・提供するリンクアンドモチベーションは、2016年に同製品をリリースして以降、3年で急成長を遂げ、現在も毎年110%の成長を続けている。社員へのアンケート調査から企業と組織の相互理解や相思相愛度合いを測るエンゲージメントスコアを算出し、組織の健康状態を診断。その診断結果から従業員エンゲージメントの向上を支援していく同製品は、現在、ベンチャー企業から大企業まで幅広く採用されている。

 そんな同社も、従業員エンゲージメントの低下を経験したことがある。きっかけは、2018年にプロダクト開発の内製化に踏み切ったことだ。その時、エンジニア第1号として入社したのが、現在はモチベーションクラウドシリーズの開発責任者を務め、同社グループ全体のデジタルトランスフォーメーションを推進する柴戸純也氏だ。

 入社して柴戸氏は驚いた。内製化前はプログラミングを理解する社員がゼロだったこともあり、さまざまな外注先が入れ替わり立ち替わり開発した結果、コードが荒廃しきっていた。デッドコードも膨大で、デバッグすれば次々と意味不明なコードが発掘されるような、非常にリスクが高い状態。毎朝9時にcronが自動実行されると聞いていたのに、実際は毎朝誰かが出社して起動していたことが発覚。300秒かかる重い処理も発生しており、ユーザー数が急増する中で「何で修正するのにそんなに時間がかかっているの?」と心ない言葉を投げつけられて、エンジニアは次第に疲弊していった。

 「自社でエンゲージメントスコアを測定したところ、組織状態を示す偏差値は43.1だった。これは、『社内を歩けば退職希望者に当たる』レベル。のちに後輩から、居酒屋では全員がずっと私の悪口を言っていたと聞かされた」(柴戸氏)

 当時のボロボロの状態から、同社はどう立ち直っていったのか。

 「他の誰かが同じような状況に陥った時、立ち直るためのヒントになれば嬉しい」そう語る柴戸氏は、自分たちが乗り越えてきた壁を「偏見の壁」「不明の壁」「断絶の壁」の3つに分類した。

 1つめの壁は、「偏見の壁」だ。負債のイメージは、発生してはならない「絶対悪」である。そうした思い込みは、手を着けるのも骨の折れるコードへの不満に変わり、コードを晒して嘲笑するような悪感情を生んでいた。

 これに対して柴戸氏は、負債を絶対悪とすることは偏見だと断言する。そして、そのような状態を解消するために、柴戸氏はまず負債を「技術的負債」と「組織的負債」に定義し、感情と認識の整理を図った。

 技術的負債は、エンジニア組織のスキル不足や改修されずに引き継がれた古いコードベースといった意図せず発生するもの以外に、たとえば期日やデプロイが最優先の中で特別な対応や妥協をせざるを得ず、結果的に負債と変わるケースもある。たとえば、事業立ち上げ時などは、こうした犠牲を払ったとしても事業的な見返りがあり、会社は十分価値を享受できる。実際、リンクアンドモチベーションも最速でサービスを立ち上げることができた結果、エンゲージメントサーベイの市場で一時、大きなシェアを確保することができたという。しかし、スタートダッシュの時期を過ぎたあとも、特別な対応や妥協を見直すことなく繰り返された結果、当時を知らないエンジニアにとってはプログラムや仕組みがただの負債に成り果てた。

 一方の組織的負債は、技術的負債と相互影響関係にある。開発チームの能力不足や残されたレガシーコードのリファクタリングは、人材育成や開発工程の見直しである程度は解決できるだろう。しかし、それを指導できる責任者がおらず、上層部や他部門も技術的な話が分からないために状況を理解できない場合、そのまま放置される可能性は高い。こうして対立や不協和音が発生し、エンジニアの不満は蓄積の一途をたどることになる。

技術的負債が発生する過程
技術的負債が発生する過程

 この最初の壁を乗り越えるため、柴戸氏は朝会や開発会議、納会、飲み会など、あらゆる場面で徹底して感謝と方針を語り続けた。

 「負債は、今私たちが享受してきた価値を先人たちが築く過程で生じたもの。システムの歴史であり、ストーリーであり、絶対悪ではなく共通課題。私たちが今書いているコードも、OSやライブラリのバージョンアップなどで、数年後には負債になっている可能性だってある。最適解はその時々で変わる。負債は常に発生するものと理解し、返済し続けなければならない」(柴戸氏)

 柴戸氏はそう述べ、それを開発チーム内のみではなく、会社全体で共有できる場面で声を上げた。そんな努力は功を奏し、今は会社全体が重要な共通課題として理解し、共に負債と向き合い、解決していくという土壌が育まれつつあるという。

不安の正体を見える化して、ビジネスとの共通課題として取り組む

 2つめの壁は、「不明の壁」である。どこに向かっていくか? の前に何がどれだけあるのか、その現在地も分からない状態。エンジニア自身何も見えない中、それぞれがそれぞれの主観で目の前の事象を捉え続けてしまった結果、感情がすれ違い、不安に陥って「絶対負債の返済担当にだけはなりたくない」などと怯える日々が始まった。

 「不安のメカニズムは『よく分からない』ことだ。見えてしまえばそれはバグや機能追加と同じ」と述べる柴戸氏は、負債やメトリクス、ケイパビリティを見える化した。そして、客観的指標として、日本CTO協会監修「DX Criteria」と、数年の科学的な調査研究に基づく組織改善の仕組みを解説する『LeanとDevOpsの科学』を参考に、開発組織のケイパビリティを指標化。ケイパビリティ/満足度と期待度/優先度を軸に4区分し、現状の弱みを区分けすることで、どうすれば強みに変えられるのかを明確にして、四半期ごとの目標設定とした。

ケイパビリティ/満足度と期待度/優先度を軸に、課題の見える化と優先順位づけを実行
ケイパビリティ/満足度と期待度/優先度を軸に、課題の見える化と優先順位づけを実行

 メトリクスやケイパビリティを見える化し、取り組んだ結果、負債をネガティブなものではなく、むしろモチベーティブなものであると認識が変わり、達成感や貢献の実感が湧くようになった。また、見えてしまえば、それは負債ではなく、課題やバックログであるということの体験も進んだ。何とトレードオフした結果なのかも明確になり、納得して課題に取り組めるようになったという。

 「最初の壁と同様、この壁についても、形からでもいいので、指標を決めてモニタリングすること。それから外部のベストプラクティスを取り入れて、愚直に継続することが重要。PDCAを回し続ければ結果は自ずとついてきて、数字が良くなればメンバーや組織の自信につながる」(柴戸氏)

 最後の壁は、「断絶の壁」だ。組織状態の偏差値が43.1だった当時、エンジニア組織は事業部門との関係が決して良いものとは言えず、コミュニケーションがすりあわなかった。次第に何を言ってもダメだとあきらめの感情が蔓延してしまった。

 この状況を打破すべく、柴戸氏は二元論ではなく、協働できるようにするために、共通目的と接続し、さらに伝わる言葉で翻訳する取り組みを始めた。

 接続では、たとえば、システムのパフォーマンスが低下している場合、「このままでは、○カ月後にはボトルネックとなり、ユーザーの解約やクレームの原因になる可能性が高い。解消するには、◎人のリソースを投資すればいい」と説明する。テストの自動化が必要であれば、「4回程度で手動テストと自動テストのコストが逆転し、内部品質への投資の損益分岐点は1カ月以内に現れるというデータがある」と、信頼できる調査結果などを参照しながら説得する。

 翻訳では、相手の頭の中にあるものに言葉を置き換えて現状を伝える。たとえば、「AWSの長期間停止はJRの全線停止と同じである」「手戻りは普通のハンバーグの注文に従って調理したのにやっぱりチーズインハンバーグにしたいと言われるようなもの」といった具合だ。

相手が理解できる領域の言葉に翻訳する
相手が理解できる領域の言葉に翻訳する

 試行錯誤の結果、他部門の理解が進んだだけでなく、エンジニアたち自身の事業理解も進み、部門間の関係が改善していったと柴戸氏は述べる。

 以上の3つの壁を乗り越えたことで、2020年にはテストカバレッジが0%から90%に上昇、デッドコードも2万行の削除に成功し、重い処理のレイテンシーも3秒にまで改善。組織状態の偏差値は77にまで向上したという。

 「ただコードをきれいにするだけでは、目先の結果しか得られない。負債を返済するには、3つの壁を乗り越えていかなければならない。これにより、『DXの向上』『ユーザーエクスペリエンスの向上』『事業の成長』という良好なサイクルが回り始めた。今後も負債という共通課題に向き合いながら、DX改善を続けたい」(柴戸氏)

柴戸氏が“開発者体験”で世界をエンパワメントする1日。「Developer eXperience Day」に登壇決定!

 リンクアンドモチベーション 柴戸純也氏が、CTO協会主催「Developer eXperience Day」へ登壇します! ぜひご参加ください。

関連リンク

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • CodeZine編集部(コードジンヘンシュウブ)

    CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5