開発者として自分が技術負債に取り組むときの心構え

開発者として自分が技術負債に取り組むときの心構え のサムネイル画像
投稿日: ・ タグ: PoemLegacy Code

自分が経験したいくつかの開発現場ではいつしか本で読んだような、

  • ドキュメントが今も整備されていて常に最新の状態
  • アーキテクチャにはDDDが取り入れられていてコードもオブジェクト指向な書き方で書かれている
  • テストカバレッジがしっかり管理されていてデグレをすぐに検知できるCI/CDの仕組みがある

みたいな理想的なプロジェクトばかりでした。なわけあるかーーい、「技術負債」という言葉が真っ先に思いつくプロジェクトばかりでした。
そんなカイジに出てくる鉄骨わたりする人くらい負債を抱えた連中(プロジェクト)に対して、あくまで個人の感想(ポエム)で技術負債に取り組むときの心構えをTipsとして紹介します。
賛否両論がでてくると思いますが、異論は認めません。

自分の立場を整理する

まず今現在自分はどういう立場でこのプロジェクトにアサインされていて、
そんな自分に何が求められているかを整理します。

自分は今のところほぼ開発者としてプロジェクトの保守運用を任されることが多いのですが、これがまあなぜか「技術負債」を抱えたプロジェクトが多いです。

ただ開発者に求められているのは文字通り「開発をする人」です。

例えばプロジェクトにアサインされたときに「何じゃこのクソコード!!まずクレームを言って抜本改革だ!」なんて思想になっちゃダメです。 技術負債を抱える要因は自分が思っている以上に複雑な事情がある場合が多いです。

間違っても「自分の技術力で重役どもの重い腰をあげてやる」なんて考えないでください。
まずは開発のことをよく知る人物に今までどういった開発の進め方をしてきたか、自分は今後どのようにしていくといいのかインタビューするところからはじめます。

自分はまずプロジェクトにアサインされたら、そのプロジェクトの開発方法についてよく知っていそうな人にとことん聞きまくってます。
たとえそれが超多忙な社長だったとしても時間を作ってもらって細かいことでも質問します。
開発の方法や進め方、会社のルールは千差万別で自分が想定していなかったことが結構あるものです。

話が少し逸れましたが、例えどれだけ技術負債を抱えているプロジェクトであっても、その歴史の裏には何かしら理由(人手、時間、予算)があります。
過去に触れてなんでこんな技術負債ができたか、自分ならもっとうまくできたなどと考える前に、まずは自分が開発者としてこれから仕事をどのように進めていくべきか判断を仰いで(エスカレーションして)開発を進めていける土台を作ってください。

プロジェクトに関係する情報を収集する

次にプロジェクトに関係する情報を収集します。

ドキュメントはあるのか、コードはどんな風に書かれているのか、テスト用のサーバーはあるのか...などなど

技術負債に対応するためにはそのプロジェクトの理解をすることが先決です。

特にそのプロジェクトがビジネスとして稼働している限り必ずそのビジネスのコア(中心)となっている機能や処理があるはずです。

そういった箇所は変更も多くしっかり整備されていないと技術負債が溜まりやすくなります。

規模が大きいシステムでは処理を1つ1つ確認するのは途方もない作業になるので、まずはそういった箇所を見てみるのもいいかもしれません。

自分は以前歩数計アプリのプロジェクトで、お客さんから送信される歩数を処理するAPIのコードで1つの関数の中に1万行近く書かれているコードを見たとき脳みそがメルトダウンしかけたことがあります。

プロジェクト以外の知識を収集する

技術負債を抱えたプロジェクトではプロジェクト以外の知識も実は必要になるケースが多いです。
これは結論を言うと「日々の学習が必要」ということになりますが、
正しい知識を持たないまま開発を進めるとわからないから今あるプロジェクトのコードを流用しようという、通称コピペプログラマーになってしまいます。

技術負債を流用して、技術負債で書いたペンキの上にまたさらに技術負債のペンキを重ねてしまっては結局技術負債は消えません。

自分もまだまだですが、なぜこの実装にしているのか根拠を示して説明できるくらいになれば少しずつ自分が担当したところは技術負債が解消されていくでしょう。
なかなか自己流や経験のみで解決できるほど技術負債は甘くありません。

数々の人が解決しようとして出来なかったのが技術負債です。

技術負債を解決するにはそれに対処してきた先人たちの知恵が一般論として存在します。

そういったプロジェクト以外の正しい知識をもってして技術負債に立ち向かう心構えは必要ではないかと思います。

まとめ

短くて拙い文章であることを先に謝っておくべきでした。
ただ最近ではChatGPTで文章を書くのが流行っているみたいですが、あえて自分の想いを書いてみたかったのでお許しください。

皆さんがどう思われるか全く想像できないのですが、「開発者として自分が技術負債に取り組むときの心構え」としてはこんな感じです。
少しでも共感していただける方がいれば幸いです。

それではまた。