はじめに
「プログラマが知るべき 97 のこと」の「1. 分別のある行動」 を読んで考えたことについて書きたいと思います。
ここでの「分別のある行動」とは「技術的負債はできるだけ早く返済する」というものです。
技術的負債
納期が迫っていると「正しくやる方法」と「手早くやる方法」があると、どうしてもコスパが良さそうな「手早くやる方法」を選択してしまいがちですよね。
そしてこの意思決定を行ったときは「後で絶対に直そう」と決意するのですが、来週になるとまた新たな問題に直面しているので結局直す暇がなくそのままになってしまいます。
私も今のサービスで 2 年近くエンジニアをしていて、このような経験を何度もしてしまいました。
その経験から学んだことを書いていこうと思います。
技術的負債への私の向き合い方
技術的に負債に関して学んだこととしては、負債に関するスタンス、負債返済のための個人の取り組み、チームの取り組みがあるかなと思いました。
スタンス
まず負債へのスタンスは「気付いたときにその場で直す」です。
もちろんやむを得ず直せないことも多々ありますが、「納期もあるし直せないのはしょうがないよね」ではなく「どうしかして今直すことはできないか、少しマシにはできないか」を考えるようにしています。
私個人の取り組み
上記のようなスタンスをとりますが、どうしようもないときは github でイシューを立てておき、いつのタイミングで着手するかも書いておきます。
そしてこのような保守タスクについては一覧で見える化しておいて、進捗を確認するようにしています。
チームの取り組み
私のチームではこのような保守タスクを取り組むために、毎週木曜日に保守メンテ DAY という日を設けています。
各メンバーのプロジェクト推進中に発生する負債はなるべくそのプロジェクト内のタスクとして処理するようにしますが、どのプロジェクトにも属さないような保守タスクについてはこの日に取り組みます。
1 日で終わらないような大きいタスクについては、お盆前や年末の時期に Hack Week という期間を設けて 1 週間プロジェクトを止めて保守タスクに取り組んでいます。
また、このような保守タスクのために 1 日を使ったり 1 週間プロジェクトを止めたりすることは、他職種の方からすると「エンジニアは何やってるの?」と不信感を持たれてしまいがちなので「なぜプロジェクトを止めてまで保守タスクをやらないといけないのか」をしっかり説明することが大事だなと思っています。
終わりに
なかなか個人の意識だけでどうにかやるものではなく、チームとしての仕組みも必要になる問題ではありますが、だからといって「負債になってしまうのはしょうがない」ではなく「すぐに返済しよう」と考える分別のある行動を各自が取ろうとすることもとても重要なことだなと改めて思いました。