歴史の積み重なったあちこちのデータソース(リポジトリ、チケット管理ツール、チャット)を発掘する考古学者というロール
— ごみばこ (@sters9) April 18, 2022
作ってからある程度の期間が経過した物を見直すと
- 「なんでこういう作りにしたんだっけ」
- 「どういう背景があったんだっけ」
- 「どこに実態があるんだっけ」
といった「なんでだっけ?」が、担当者が居なくなった、記憶を失った、別チームに移譲された、チケットやコードなどの管理システムが変わった、などなどの理由から発生しがち。
そういった部分に手を入れるときに「なんでだっけ?」を解消してから前に進めたいので、いろいろなものから理由を探す。
これを個人的に考古学と読んでいる。
この考古学には通常のシステム設計だとか、エンジニアリング的な知見だけでなく、別の要素が必要になってくる。例えば…
- 当時の担当チーム、担当者の特定
- その人達に聞くのはもちろんだけど、その人達がやりとりしていた形跡を探す
- “犯人” を探すわけではない、見つけたところで状況は変わらない
- ドキュメントの横断的な単語のあいまいな検索
- 「cron」「定期」「時限」「タイマー」とか、単語がまるまる違う場合もある。
- コード上、リポジトリ上(コミット履歴)、コード管理ツール(Pull request, Issue, Discussion, Wiki等)、ナレッジベース(wiki)にある、チケットにある、GoogleDocにある…etc
- コードの履歴を遡る
- コミット履歴、プルリクエスト
- いつからそうなったのかがわかる
- ある時点では別のリポジトリにあったコードを移行してきた、とかだと手強い。別のリポジトリも見に行く必要がある。
- チャットツールを遡る
- XXXをつかっててZZZに移行した、とかありそう
- これらの組み合わせ
- コードからコミット履歴、コミット履歴からプルリクエスト、プルリクエストからチケットリンク、チケット番号でチャットツールを検索
- 見つからない場合にどうするか
- あんまり話されずに最初からそうなっていた可能性もありえる
- 決めの問題かもしれないけど、他の部分との整合性とか…じゃあそっちはどうなってるのとか…
歴史が積まれて規模が出てきた実装に対して、考古学というスキルが必要になってくるはず。人数の規模で押せるならそういった役割を担う人、チームがあってもいいんじゃないだろうか。