nikkie-ftnextの日記

イベントレポートや読書メモを発信

レガシーコードとどう付き合うか - #Forkwell_Library 25、「経営」という観点に気付かされたひとときでした

はじめに

特別映像、円盤収録!!🙌 🙌 🙌 nikkieです

水曜日(6/14)に参加した勉強会の感想をしたためます。

目次

2023/06/14 レガシーコードとどう付き合うか - Forkwell Library #25

技術書の著者の講演とそれに続くQ&Aに参加できるオンライン勉強会、Forkwell Library シリーズ。
語弊ありありですが、Forkwellさんが本を配る勉強会です。

25回目は先日発売1された『レガシーコードとどう付き合うか』2

connpassにはどんな講演になるかが詳細に書かれています。

レガシーコードを作らないことで,改善をするリソースを他のエンジニアリング業務に割けるはずです。
また,後々会社にとっても絶大なメリットがあると考えるのは必然です。

しかし,経営層はなぜ,レガシーコードを作ることを許容してまでプロダクトを作ることを選ぶのでしょうか。
なぜ,エンジニアリングの推進を,レガシーコードを生み出してまでも行わないといけないのでしょうか。

アーカイブ

よろしければツイートまとめもどうぞ3

基調講演「エンジニアリングを推進する必要性」

スライドの見出しを抜き出すと以下のようなトピックです。

  1. レガシーコードが生まれる理由
    • スタートアップの予算
    • 大企業の予算
  2. エンジニアリングを推進する必要性
    • 事業を営む目的
    • ビジネスモデルとエンジニアリング
    • 人件費とエンジニアリング
    • レガシーコードを改善する理由
  3. どのようにエンジニアリングを推進していくか
    • 経営層の求めることとエンジニアのやりたいこと
    • 採用の壁
    • 採用以後
    • 生産性と人件費

リアタイで発表を聞き、3つ目のアジェンダが時間の関係で一瞬だったので、資料も見返しました。

感想:これまでの経験、いろいろ言語化されたぞ!

講演の本題はレガシーコード改善の必要性を経営層に理解してもらうことです。
書籍の1章・4章をベースに解説されます。

ここの学びも深かった(後述)ですが、講演を通して私自身のこれまでの経験が言語化される面がありました。

  • ソフトウェア開発に従事し現在3社目
  • スタートアップの経営層ってそもそもどんなこと考えているのか知れた(アジェンダ1)
    • 資金調達(ファイナンス
    • 成長戦略(エクイティストーリー)
    • 会社の存続期間(ランウェイ)を長くする
      • ランウェイを長くしてエクイティストーリーを、最終的にはビジョンを実現したい
  • 知的集約型ビジネスはSLGとPLG
  • エンジニアリングをなぜ行うのか
    • 一つは、限界利益率の改善(業務効率化して、人件費(固定費)削減)
    • もう一つは、トップライン(売上高)を伸ばす(ペインを解消する価値)
    • エンジニアリングは投資でROIがある

レガシーコードの正体は"経営"という見方!

この見方は目からウロコでした👏
ただし文脈があります(ここだけ独り歩きしてしまうと誤解になっちゃうと思います)

まずレガシーコードという語はあえて誤用されています

資金不足や人材不足によって生じたコード

正体は経営というのは、最後のスライドで示されているととらえています。

  • スタートアップはお金がない
    • ビジョン、その前のエクイティストーリーを達成したい
    • 人を採用すると人件費が発生し、(長くしたい)ランウェイは短くなってしまう
    • 👉「できる限り正社員を少なくし、相対的に人件費を削減」
      • 少ない正社員 + 業務委託で回すスタートアップが多い印象だけど、妥当性あった〜!
  • つまり慢性的に資金不足や人材不足ということ!
    • よって、レガシーコード(ここでの定義は、資金不足や人材不足によって生じたコード)が生まれるのは当然の帰結4
    • 資金不足や人材不足という経営状況が、レガシーコードに直結している!

経営状況的に生まれざるを得ないレガシーコードですが、その存在は会社全体で見ても懸念なので、コード改善が必要とアジェンダ2で解説されます。

  • 改修に時間がかかり、人件費が増加
  • 経営層が描いたエクイティストーリーが円滑に進まない
    • 時間がかかってしまう開発と、成長ストーリーが乖離

もしかして、ダブルミーニング

この記事を書いている中でタイトルの「エンジニアリングを推進する必要性」ってダブルミーニングかもと気づきました。

  • 経営層が推進するエンジニアリング
    • エクイティストーリー実現のため、資金不足や人材不足の中でプロダクトを開発せざるを得ない
  • レガシーコードに気づいたエンジニアが推進するエンジニアリング
    • レガシーコードは会社全体で見て問題となるため、レガシーコードの改善を推進

開発したプロダクトにすぐ手を入れて改善しないといけないのでマッチ・ポンプ感もありますが、起業というのは崖から飛び降りながら飛行機を組み立てるものと理解しているので、この進め方には妥当性があるのだと思います。

終わりに

めもりーさんによる講演「エンジニアリングを推進する必要性」の感想を綴ってきました。
資金不足や人材不足によって生じたコード、スタートアップという環境の制約によるものなのですね。

コードの話はなかったですが、示唆に満ちていましたし、コードについては書籍を確認しようと思います。
また、スタートアップという環境から離れれば、リソースに多少余裕がある状況で変更容易性の低いコードが存在するという事象は別に考察できそうです。
レガシーコードや技術的負債といった語は同じ一語でも文脈によって指すものが変わりうるなあということを再認識もしました。


  1. 楽しみにしていました
  2. 一つだけ切実なお願いがあって、電子書籍の固定レイアウトをなかったことにしてほしいんです🙏 私の感じる電子書籍のよさが一切無いんですよ(紙で買えばよかった...)
  3. 中でもひさてるさんのツイートを追うのがオススメ!
  4. 対照的に大企業ではリソースがあるため、レガシーコードを生み出さないように取り組めるとも述べられています。 https://speakerdeck.com/memory1994/why-we-must-do-engineering?slide=26