2024.12.24
ビジネスが急速に変化する現代は「OODAサイクル」と親和性が高い 流通卸売業界を取り巻く5つの課題と打開策
リンクをコピー
記事をブックマーク
新田智啓氏:次に技術的負債ですね。「技術的負債とは」というところですが、ウォード・カニンガムという、外国のエンジニアの方が作ったメタファーになります。システムは粗雑なものが蓄積しやすくて、内部品質に欠陥が出ます。開発時に必要なかった追加の労力が必要になるところが、借金の利息に似ていて、エンジニアの感覚にフィットしたことで技術的負債(という言葉)がすごく流行った。
あとはマーティン・ファウラーですね。マーティン・ファウラーも技術的負債について語っていて、「意図的な借金であるか、無意識的な借金であるか。それが賢明なのか、無謀であるか」というところを軸にして、技術的負債の属性みたいなものを整理したりしていました。
そしてフィリップ・クルクテンですね。その価値が見えるかどうか。見えない部分か、見える部分か。そして価値がプラスかマイナスかというところで分類しました。そして「価値の見えない部分でマイナス部分が技術的負債なんじゃないか」と語っています。
(スライドを示して)プラスがアーキテクチャ、機能の特徴、マイナスがTechnical Debt、技術的負債とあります。技術的負債の中にアーキテクチャとか機能の特徴も含まれるのはちょっとモヤモヤした気持ちになったんですが、どちらにしろ内部の品質、見えない品質が大事ではあります。
その品質は何なのか? というところで、外部の品質・見える品質と、内部品質。あるいは機能要件と非機能要件みたいなものがあるのかなと。
もうちょっとだけ品質の話をすると、品質ってどの品質ですか? と。「品質が良い」とか「悪い」とかがよく語られて。「バグがある」とか「ない」と言われるんですが、解消したい時に“品質”みたいなふわっとした言葉で解消しようとすると、みんなの方向がなかなか揃わないと思うんですね。なので、「品質」ということでどこを改善したいのか。どこが問題なのかを、もうちょっと解像度を高めて理解する必要があるかと思います。
あとは非機能要件ですね。機能要件はたぶんエンジニアじゃない人とかも含めていろいろ決めてくれるんですが、非機能要件の部分はエンジニアが決めなければいけない要件だと思います。
なので、パフォーマンスとかスケーラビリティだったり、アベイラビリティだったり、あまり気にせずに機能開発をしてしまうと負債が溜まりやすいのかなと思います。こういう、見えないところの機能要件に対しての非機能要件だったり内部品質だったりの解像度を高めて向き合う必要があるかと思います。
技術的負債の話に戻ります。技術的負債という言葉がいろいろ流行った中で、「技術的負債」という言葉を生み出したウォード・カニンガムが、以下のように言っています。「技術的負債の比喩の中で、あとできれいなコードにするつもりで雑なコードを書くことも技術的負債の主な原因であるという考えが、他の原因と混同しています」と。これに私は賛同しません。
(スライドを示して)いっぱい文字が書いてあるんですが、まとめると、コードを書く時にはベストを尽くせ、と。雑に書くのは技術的負債ではなくて、ただの怠慢である。時間をかけろという話じゃなくて……。たぶん時間的な制限はあると思うんですね。その制限の中でベストを尽くすとか、あるいは自分の能力も限界があると思うので、能力の中での最高を出す努力が大事なのかなと。
あとは、実際にコードを書いてリファクタリングをする時に、「こういうふうになったらいいな」とか、「こういう助けになったらいいな」ということのベストを尽くすというところで、今だけじゃなくて未来を見ながらしっかり書くことが大事かと思います。
こうやって設計とかを重要視すると、動くものとかがなかなか出ず、「プログラマーの自己満足なんじゃないか」みたいなことが他の職種から見えたりするのでマーティン・ファウラーが(次に紹介する言葉のように)言及しているんですけど。
「それは自己満足のためじゃなくて、設計というのは技術的負債の発生を抑えることができるので、しっかりやっていくべきだ」という話があります。中長期的に見たペイオフラインというものがあって、それにはちゃんと向き合うべきだと。
あとは『A Philosophy of Software Design』というものがあって、この中の表現で対応方法みたいなものがすごくいっぱいあるんですが、最初のほうで「コードの複雑さというのはある日突然現れるんじゃなくて、塵が積もって山となるように徐々に出てきます」と(いう話があります)。いきなり出てくるわけではない。
突然出てくるものではないとなると、どういうふうになると技術的負債と呼ばれて、自分たちの技術的負債のリストに載せられるんだろうか。塵の状態だったらまだ気がついていないわけですよね。どうやったら技術的負債みたいなリストに載せられるのかというと、私の解釈ですが、エンジニアがやりづらいと感じた瞬間。ものすごく感覚値的なもの。気がついた時みたいな。
あとは、コードとかの構造を見て「もっとこうしたらいいのにな」みたいなアイデアが浮かんだ時。そういう「もっと良くしたい」みたいなことが思い浮かんだ時。それは負債というものを認知して、ある意味、次の価値を反映させたい気持ちなのかなと思っています。
なので、現在のシステムから満足できないところの差分が技術的負債と感じるところ。欲しい開発者体験、DXみたいなところの差分が技術的負債なんじゃないかなと思っています。
「開発者体験」という言葉はCTO協会の定義では、「開発者体験とは、開発者が高速な仮説検証を行うための企業における環境や習慣、文化のことを指します」と。開発者体験は開発者、エンジニアが働きやすいだけの環境みたいに捉えられたり、「こうすると気持ちいいよね」と感じたりするかもしれませんが、そうではない。生産性を高めるための高速な仮説検証ができる状況ということですね。
生産性は何かというと、Wikipediaでは「生産性 = 産出量 / 投入量」(生産性 = アウトプット / インプット)と書かれています。インパクトチェーンみたいなものがあるんですが、投入したもののリソースと組織活動、チーム活動とかエンジニアの動きがアウトプットになります。
そして、エンジニアだったらシステムだったりをユーザーに使ってもらって、価値を感じてもらってアウトカムになる。それがムーブメントというか、社会的な動きになるとインパクトになるという流れになるのかなと解釈しています。
スタートアップが目指すのはたぶんインパクトのところだと思うので、アウトプットの量がたくさんあればいいというわけではなくて、その価値だったりインパクトがどういうふうに起こるのかを考える必要があって、その価値貢献のスピードが生産性に求められることだと思っています。なので量ではない。
そういったところで今回扱う技術的負債というのが何かを整理します。「負債」というと、触らなくても古い、例えばCOBOLとかの言語で作った20年前のシステムとかがあるかもしれませんが、それが順調に動いていて、お金が稼げていればそれは問題ないと思うんですよね。
ただそれに、なにか変更を加えたいとか、機能を加えたいと思った時にどうしようもなくなると思うので、その状態になると負債ですが、変更を加えたい状態がなければ、技術的にはもしかしたら直したいと思うかもしれませんが、そのままでいいと思います。
今困っているところで、それを直すと価値になるところの負債が解消すべき負債で、それを解消すると価値につながる。この解消することで価値につながる負債を今回扱う技術的負債として話したいかなと思っています。
というところで、技術的負債のまとめとしては、理想環境と現状のシステムとか環境の差分みたいなものが技術的負債。エンジニアの生産性を妨げて、追加の金利的な工数がかかるもの。システム内部の課題。雑なコードを書いたものではなくて、ベストを尽くして作ったもの。コードの複雑さは突然現れるものではなくて、塵のように積もって出てくる。そして今回は、技術的負債の解消によって価値が発揮されるものを“負債”として考えようと思っています。
ちょっと急がないといけないそうです。スタートアップで起こる変化のことを話していきたいと思います。ここまでが前提です。
(次回に続く)
関連タグ:
2025.01.16
社内プレゼンは時間のムダ パワポ資料のプロが重視する、「ペライチ資料」で意見を通すこと
2025.01.15
若手がごろごろ辞める会社で「給料を5万円アップ」するも効果なし… 従業員のモチベーションを上げるために必要なことは何か
2025.01.09
マッキンゼーのマネージャーが「資料を作る前」に準備する すべてのアウトプットを支える論理的なフレームワーク
2025.01.14
コンサルが「理由は3つあります」と前置きする理由 マッキンゼー流、プレゼンの質を向上させる具体的Tips
2025.01.14
目標がなく悩む若手、育成を放棄する管理職… 社員をやる気にさせる「等級制度」を作るための第一歩
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.01.20
組織で評価されない「自分でやったほうが早い病」の人 マネジメント層に求められる「部下を動かす力」の鍛え方
2017.03.05
地面からつららが伸びる? 氷がもたらす不思議な現象
2025.01.10
プレゼンで突っ込まれそうなポイントの事前準備術 マッキンゼー流、顧客や上司の「意思決定」を加速させる工夫
2025.01.07
資料は3日前に完成 「伝え方」で差がつく、マッキンゼー流プレゼン準備術
特別対談「伝える×伝える」 ~1on1で伝えること、伝わること~
2024.12.16 - 2024.12.16
安野たかひろ氏・AIプロジェクト「デジタル民主主義2030」立ち上げ会見
2025.01.16 - 2025.01.16
国際コーチング連盟認定のプロフェッショナルコーチ”あべき光司”先生新刊『リーダーのためのコーチングがイチからわかる本』発売記念【オンラインイベント】
2024.12.09 - 2024.12.09
NEXT Innovation Summit 2024 in Autumn特別提供コンテンツ
2024.12.24 - 2024.12.24
プレゼンが上手くなる!5つのポイント|話し方のプロ・資料のプロが解説【カエカ 千葉様】
2024.08.31 - 2024.08.31