Findy Engineer Lab

エンジニアの"ちょい先"を考えるメディア

レガシーコードから始まったカイゼンの旅 ─ チームから全社へと 組織を超えて広がった先にある新しい挑戦

こんにちは! いきいきいくお(小田中育生、@dora_e_mです。現在、株式会社カケハシにエンジニアリングマネージャーとして所属しています。カケハシにジョインしたのは2023年10月で、それまでは長い間、株式会社ナビタイムジャパンに所属していました。

ここ数年はアジャイルコミュニティで発信する機会が多いため、「アジャイルの人」という印象があるかもしれません。2011年に書籍『アジャイルサムライ』と出会い、2017年頃から本格的にアジャイル開発に取り組み始め、アジャイルコミュニティにも参加するようになりました。2020年には『カイゼン・ジャーニー』の著者である市谷聡啓さんや新井剛さんとともにアジャイルの入門書『いちばんやさしいアジャイル開発の教本』を執筆する機会にも恵まれました。

私がアジャイル開発に取り組み、その活動を広げてきた原点は「目の前にある課題を解決したい」「よりよい状態へとカイゼンしていきたい」という強い気持ちにあります。熱意をもって開発したものがなかなかリリースできない。正しく作ったはずのものが思わぬところで副作用を生む。心血を注いだ成果物が世の中に出ていないもどかしさが、目の前のものをカイゼンするぞ! という原動力になりました。

この記事では、そんな私のカイゼンマインドを原点から振り返り、どのようにカイゼンの渦を拡げ、組織まで巻き込んでいったのかを紹介します。日々カイゼンに取り組むあなた、カイゼンがうまく進まず途方に暮れているあなたにとって、さらに一歩進むきっかけになれば幸いです。

▲ アジャイルコミュニティで登壇し「スクラム5つの価値基準」を叫ぶ筆者

誰にとっても自分事だけど他人事だったレガシーコード

2009年、25歳のときにナビタイムジャパンに入社しました。配属された研究開発部門では新規プロダクト開発に関わる機会が多く、非常に刺激的な日々を送っていました。

裁量が大きかったこともあり、将来的にユーザー数が増加することを見込んで初期段階から並列処理の仕組みを入れたり、コードに手を入れたときにデグレしないようテストツールを開発したり。やりたいことやチャレンジしたいことに思いっきり取り組むことができる環境でした。この開発しやすい状況は、開発対象が既存サービスと依存関係を持たない独立したシステムだったからこそ実現できていたことです。

そんな悠々自適の開発者ライフを送っていた私ですが、ついに「既に存在しているシステム」の難しさと向き合う時がやってきます。

創業期から継続して開発されていたライブラリのフルリプレイスプロジェクトが難航しているということで、ヘルプ要員として参加することになりました。フルリプレイスを期にAPIの刷新も検討していたのですが、スムーズに新しいライブラリへ移行することを最優先とするため、既存ライブラリのAPIに後方互換性を担保する方針になりました。

仕様書もテストコードもない古いライブラリとの互換性は必要か?

私がヘルプ要員として担当したのは、古いライブラリと互換性をもたせるAPI開発で、これがまあ大変でした。仕様書はなく、テストコードもない。そもそもせっかく新しく作ったライブラリなのに、なぜ古いシステムに合わせて古いAPIを開発しなければならないのかー。

「あのシステム、リファクタリングした方がいいですよ。」

綺麗に作り直したはずのシステムがレガシーAPIに引っ張られていくさまはなかなかにつらいもので、当時の上長には折を見てそのように進言していました。そんなある日、予想だにしない展開が私を待ち受けていたのです。

「小田中くん、あれをリファクタリングしたいって言ってたらしいじゃん。思う存分やってきて!(レガシーシステムを担当するチームに異動してもらうよ)

なんということでしょう。「どこかの誰かがリファクタリングすればよい」と他人事で捉えていたレガシーシステムが、突然自分事として目の前に現れたのです。

新しい価値を創出する研究開発業務にやりがいを見出していた私は、正直戸惑いました。けれども、そういった「誰かがやればいい」の連鎖が、創業期から会社を支え、本当は皆から感謝されるべき存在のシステムを「触らぬ神に祟りなし」のレガシーコードに変えてしまった。

もう一度、このシステムが価値を生み出せる状態にすることはとても大切なことなんだ。そう考え、テストコードのないシステムのリファクタリングに身を投じました。

成果が見えるリファクタリングは面白い

テストコードがないので、リファクタリング対象を網羅するE2Eテストで逐次リグレッションを回しながらリファクタリングするという長い旅が始まりました。

いざ取り組んでみると、このタスクは存外面白いものでした。サイクロマティック複雑度がみるみる小さくなっていくさまは、分かりやすく達成感が得られます。またリファクタリングするために用意したE2Eテストは、その後もリグレッションに活用できる資産となりました。

3ヶ月ほど取り組んだリファクタリングの成果は目覚ましく、それまで数ヶ月かかっていた開発が1〜2週間程度で終わる、開発時のデグレもほぼ発生しない、という状況になりました。

また、レガシーコードに対する私の認識も変化しました。当初は触りづらい、開発の妨げとなるものと考えていましたが、リファクタリングを通してさまざまな関係者と対話する中で、これは長期間にわたって会社のビジネスを支え続けたかけがえのない資産であるという認識になっていきました。

レガシーコードのカイゼンは他人事ではない。誰にとっても自分事である。だから、「なんとかしてほしいな…」という考えが頭をよぎったら、自分でなんとかしてしまおう。そんな考え方が芽生えたのがこのときです。

カイゼンを当たり前の取り組みにする

リファクタリングが一段落したあとも、引き続き同じチームに籍を置くことになりました。このチームではスプレッドシートにカイゼンしたいことがリストアップされ、毎週そのリストアップを確認する時間がありました。残念ながらそのリストは全然消化されておらず、「カイゼンすることのリスト」というより「できたらいいな」という願望を列挙しただけのものになっていました。

リストを眺めてみると、取り組んだらチームがもっとよくなりそうな項目がたくさんある。これはもったいない。チームメンバーに「リストがあるのに消化しないのはもったいないから、ちょっとずつでも取り組みません?」と提案したところ「ぜひやろう」ということになりました。皆、内心やりたいと思っていたんですね。

カイゼンはどこかの誰かがやってくれるものじゃない。カイゼンしたいと思っている自分自身でやることだ。自分がリファクタリングを通して獲得したその価値観をチームメイトが共感してくれたことは、自分が「チームで働く」ということの楽しさ、大切さを実感した原体験になっています。

勘違いサーバントリーダーシップ

実行されないことが当たり前になっていた「カイゼン」を、実行されることが当たり前にした。そういった実績を積み重ねる中で、2013年にマネージャー職に就く機会を得ました。開発者でいるべきか、新しいロールに挑戦するべきかというよくある悩みに直面したわけですが、思い切ってマネージャー業にチャレンジすることにしました。

マネージャー業については全く経験がなかったので、トム・デマルコの『ピープルウェア』などマネジメントに関する書籍を読み漁りました。その中で出会ったのが「サーバントリーダーシップ」という概念です。グイグイ引っ張っていくのではなく、メンバーの意思を尊重しながら後方支援的に働きかけるスタイルは、自分の目指す姿にもフィットしていると感じました。

実際、サーバントリーダーシップ自体は優れた考え方です。メンバーの内発的動機を喚起し、それぞれの持ち味を活かしながらチームワークを発揮するには不可欠な姿勢だと私は考えています。

カイゼンのためのカイゼンになっていないか?

しかしその頃の私は、この考え方に対して偏った捉え方をしていました。メンバーの意思を尊重する。それを「メンバーがやりたいことをとにかく最優先にする」と捉えていたのです。具体的に何が起こったかというと、新たにプロダクト価値を創出する活動に対して、開発プロセスをカイゼンする活動の比率が許容範囲を超えて大きくなってしまいました。

それで何が起こるかというと、ステークホルダーが期待するスピードでプロダクト価値を生み出すことができなくなります。これは、ステークホルダーのさらに先にいる顧客に届く価値が生まれないことを意味します。そんな状態ですから、少々生々しい話をすると、この時期の評価はあまり芳しくありませんでした。

自分たちが「やるべきだ」と考えているカイゼンを進めているのに評価されないということは、精神衛生上もあまりよろしくありませんでした。顧客に、ビジネスに、プロダクトにどのような価値を生み出すかを考えたカイゼンではなく、カイゼンのためのカイゼンになっていたわけですから、今振り返ってみると至極真っ当な評価だったわけですが…。

チームの先にステークホルダーがいて、その先に顧客がいる

この暗中模索の状態から抜け出すきっかけになったのは、当時の上司からのフィードバックでした。

メンバーの声ばかりに耳を傾け、内向きになっている。仕組みを作ることには力を注ぐが、チームに期待されている成果を生み出すことにコミットできていない。

耳が痛い。あまりにも耳が痛いので耳にもお経を書いておけばよかったと思うほどでしたが、このフィードバックで気付かされたことがありました。

サーバントリーダーがサーバントになる対象はチームだけではない。チームの先にいるステークホルダー、そしてさらにその先にいる顧客。チームに関わる全ての人々がハッピーになる手助けをする。それこそがサーバントリーダーのあるべき姿ではないか、と考えるようになりました。

私の周りでカイゼンが思うようにいかず悩んでいる方々にも、同じように「カイゼンのためのカイゼン」の袋小路に迷い込んでいるケースが散見されました。この記事を読んでいて、今まさにカイゼンがうまくいかない、周りが理解してくれないと感じている方は、そのカイゼンの先に何があるのか、そもそもチームに期待されていることは何なのかに立ち返ってみるとよいのかもしれません。

カイゼンを広げる鍵はボトムアップとトップダウン

顧客の課題を解決し、ビジネスを成長させながら、プロダクトもチームもカイゼンし続けるようなチームを作りたい。その試行錯誤の中で出会ったのがアジャイル開発です。正確には2011年に『アジャイルサムライ』を通して出会っていたわけですが、自分がやりたい開発のスタイルがアジャイルの考え方と軌を一にするようになったのは、2016年頃でした。

せっかく刊行直後に出会っていながら「5年もかかったの!?」と思わないではないですが、自分の中でモチベーション・マインドセット・スキルなどの諸条件が揃ったのがそのタイミングなので、それが最速だったと信じています。

その後、アジャイルを知り、アジャイルに取り組み、アジャイルなマインドセットを獲得していった旅路については、スライド「Be Agile アジャイルマインドセットでいきいきと働く」で詳しく紹介しているので、よかったら御覧ください。

自己流の徒手空拳がアジャイルを得てチームに広がる

短い期間を繰り返しながら、小さく作り、学びを得て、プロダクトもプロセスもカイゼンし続ける。自分がこれまで徒手空拳でやってきたカイゼンが、価値・原則・プラクティスそれぞれで言語化されている。今の自分に、自分たちチームに必要なのはアジャイルだと直感的に感じた私は『カイゼン・ジャーニー』や『SCRUM BOOT CAMP THE BOOK』を片手に、チームへのアジャイル導入を一気に進めました。

中でも短い期間で為すことを計画し、その期間の成果をレビューし、プロセスをふりかえるスクラムは、絶え間なくカイゼンし続けたいと思っている私にとってこれ以上なくしっくりくるものでした。

毎スプリントのふりかえりで自分たちの伸び代を理解し、短期的なカイゼンを仕掛けていく。バリューストリームマッピングでプロセスのムダを明らかにし、長期的にカイゼンしたいポイントを明らかにする。この両輪を回していく中でチームは成長し、チームが成長したことによりプロダクトも進化します。

リーダーに言われたからやるのではなく、自分たちで考え、内発的動機を拠り所にカイゼンし続けるチームになっていきました。

隣接チームから社外活動へと広がるカイゼンのスコープ

アジャイルという心強い相棒を得て、これまでになくカイゼンに邁進していたこの時期。気がつけば「自分たちもアジャイルをやっている」「まだやっていないがアジャイルに興味がある」という人たちを社内でちらほら見掛けるようになっていました。そういった状況を目の当たりにして、それまで自分やチームのカイゼンにのみフォーカスしていた私の意識は、会社全体のカイゼンへと向かっていきました。

アンディ・グローブが著書『ハイ・アウトプット・マネジメント』で語っていた、マネージャーのアウトプットは自組織のアウトプットと自分の影響力が及ぶ隣接組織のアウトプットの総和であるという定義。私の意識がチームを超えて会社全体に広がっていったのは、この定義が大きく影響しています。

「隣接組織のアウトプットを向上させる」ために取り組んだのは、自分たちが歩んできたカイゼンの道をショートカットで歩んでもらうこと。インセプションデッキ作成、バリューストリームマッピング、ふりかえり。自分たちがやってきたプラクティスに取り組もうとしているチームに寄り添い、そのワークをいい感じにやり切るためのサポートを、幾度となくやってきました。

ちょうどこの頃からアジャイルコミュニティに参加するようになり、デブサミ2019夏では「あらゆるものをカイゼンせよ」をテーマに登壇したり、初学者向けに『いちばんやさしいアジャイル開発の教本』を執筆したりと、自分のカイゼンのスコープは組織を超えて広がっていきました。

全社向けのアジャイル開発ガイドラインをトップダウンでまとめる

こういった広がりは、チームから越境したカイゼンを進める上では重要なポイントでした。何が自分たち固有のコンテクストで、何がどの現場でも起こりうる普遍的な事象なのか。現場とコミュニティでの学びをつなげ、学びのカイゼンサイクルを回す中で学ぶことは多く、それが組織にアジャイルを広げる大きな助けとなっていました。

そんなカイゼンサポートを繰り返す日々の中、パーツとしてのプラクティスをサポートするだけでなく、アジャイルの背景にある考え方や自社のコンテクストにあったベストプラクティスをまとめ、社内に広げていきたいというモチベーションが湧いてきました。

全社向けの「アジャイル開発ガイドライン」を作る。それを普及させ、社内のアジャイル実践率を向上させる。それが自分にとっての新しいカイゼンターゲットとなりました。そうすることで、会社のビジネスもプロダクトも、そこで働く人々の働き方ももっとずっとよくなると信じているからです。

「アジャイル開発ガイドライン」を起点にアジャイルについて理解を深め、組織を芯からアジャイルにするという目論見は、結論から言うと思った以上にうまくいきました。多くの現場がアジャイルと出会い、アジャイルと向き合っていったのです。

トップダウンとボトムアップを行き来しながら決して歩みを止めるな

多くの人にアジャイルを知ってもらい実践してもらうという意味では、トップダウンでの働きかけは非常にうまくいきました。けれどもトップダウンであるがゆえに、Whyがうまく伝わらないまま導入が進められる現場や「自分たちは今のやり方でうまくいっているから」と新しい取り組みに消極的な現場があったのも事実です。

ただ、カイゼンを進める上で大切なのは内発的動機です。自分たちにとって必要だと感じていない現場にアジャイルの実践を強制することがよい結果を生み出す確率は、残念ながらそんなに高くないでしょう。ピーター・ドラッカーは著書『現代の経営』で以下のように述べています。

絶えざる努力と能力によってのみ実現される最高水準のしごとに焦点を合わせるとき、動機づけがなされる。しかし、このことは人を駆り立てるということではない。自分で自分を動かすようになるということである。

『ドラッカー名著集3 現代の経営 [下]』(ダイヤモンド社)第23章「最高の仕事への動機づけ」より

トップダウンで物事を進めると、どうしても無理やり行動させられる人たちが出てくる。かといって全てボトムアップで進めようとすると、思うようなスピードで変革を進められない。トップダウンとボトムアップを行き来しながら目標を見つめ続け、歩みを止めずに進む、その姿勢こそがカイゼンを広げていく上では重要なんだと私は考えています。

僕が見たかった景色の先に

自分が取り組むカイゼンの対象は、個人的なものから組織全体へと広がっていきました。

  • 自分の目の前にある課題と向き合い、カイゼンする
  • チームが突き進む道のりにたちはだかる壁を超え、カイゼンする
  • 組織をもっといきいきさせ世界を変えていくために、カイゼンする

2009年に25歳でジョインし、今年は15年目。誕生日が来て40歳になる、というタイミングで、あらためて「自分自身はどうありたいのだろう」ということを考えました。このときに、今の環境を飛び出して新しいチャレンジをしたいという気持ちがふつふつと湧いてきたのです。

やりがいのある仕事。信頼のおける仲間たち。信頼してくれる仲間たち。正直、こんな得難い環境を手放すべきなのか? ということは相当に悩みました。けれども、チャド・ファウラーが『情熱プログラマー』で語ったように「一番の下手くそ」になれる環境に身を置きたい、もっと自分自身をカイゼンしたい。そういう想いが日々高まり、新しいチャレンジをする決断に至りました。

退職を表明し、引き継ぎを進める中で、私は自分がずっと見たいと思っていた景色に出会うことができました。それは自ら考え、連帯し、カイゼンし続けるチームの姿です。小田中がいなくなった後、どうやって仕事を進めていくか。一人ひとりが真剣に考え行動する姿は、ずっと自分が見たかったものでした。彼ら彼女らの活動の成果は今後発信されてくると思うので、とても楽しみにしています。

新しい旅の始まりから感じる手応えと実感

2023年10月。株式会社カケハシにEM(エンジニアリングマネージャー)としてジョインしました。カケハシで新しいチャレンジをすることに決めた理由は、大きく2つあります。

ひとつはコンフォートゾーンを抜け出すこと。ドメイン知識がない。マネジメントを円滑に進めるための人間関係もない。その状態からEMとして成果を出していくのは自分にとって非常にチャレンジングなことですが、そのチャレンジを通してまた一段と成長できると確信しています。毎日わくわくしています。

もうひとつは、自分が大切にしている価値観。自分たちで作っているという手触り感があり、それでいて社会貢献性の高いビジネスにコミットしたい。自分の妻、子どもたちにとってよりよい未来を描きたい。親には穏やかな人生を送ってほしい。もちろん自分自身もいきいきと生きていたいし、関わる人々にもいきいきしてほしい。そう考えたときに、「日本の医療体験を、しなやかに」というミッションを掲げるカケハシにジョインすることがベストな選択であると考え、決断しました。

まだ入社して日が浅いので分からないことだらけですが、素晴らしいメンバーに囲まれ、日々楽しく過ごしています。毎日がアンラーニングの連続で、日々自分自身がカイゼンしていく手応えを感じているところです。きっと、この「自分自身がカイゼンしている=成長している」という実感がもっと欲しかったんでしょうね。

スコープが広がり続けてコントロールが難しくなったとしても

カケハシでの新しい旅は始まったばかり。深く共感できるMVVに、将来性のあるビジネス、毎日会うのが楽しみになるチームメイト。そんな素晴らしい環境であっても課題はあります。いや、課題があるからこそ私達はカイゼンし、成長していけるのです。

個人的なカイゼン。チームのカイゼン。組織のカイゼン。そのスコープが広がれば広がるほどコントロールできない領域が大きくなり、カイゼンを進めることが難しくなります。そんなときでも、自分の中に「カイゼンしたい」という想いがあり、その灯火を燃やし続けさえすればいつかカイゼンの扉は開く。これまでの経験から、そう強く信じています。

▲ 筆者近影

編集・制作:はてな編集部