はじめに
システム担当を引き継いだ際に学んだことをまとめてみたいと思います。
システムに関する前提情報
- 当時の開発者は一人
- スピード優先で開発されていて、引継ぎ時にはほぼ完成していた
- 私(ともう一人)に引き継ぐと同時に開発者は別プロジェクトを担当することに
もし自分がゼロから開発するならテスト駆動開発を導入したい
当時はスピード優先だったらしく、自動テストまでは対応できなかったようでした。
自動テストを入れるまでは、開発環境にデプロイして動作確認をしていました。
また、システムがサーバレス構成であるためバックエンドに関しては毎回デプロイしないと動作確認ができませんでした。引継ぎ時はデータの受け渡しや型周りの理解が出来ていなかったため、デプロイ→Cloud Watchでログ確認→エラー対応→デプロイを繰り返していました。
最終的に自動テストを入れることはできたのですが、コードをリファクタリングするところから始める必要がありました
テスト駆動開発はテストを満たすようにコードを実装していくので、小規模に綺麗なコードを実装できます。短期的にはスピード優先の開発より時間がかかりますが、運用保守を見据えた中長期的には時間を抑えることが期待できます。
プロトタイプレベルであればスピード優先で良いと私は考えていますが、
気づいたらプロトタイプレベルで運用を始めることになってしまった。そして改修や機能追加要望の対応を進めることになってしまった。ということにならないように注意が必要だと思います。
おわりに
現在はバックエンドをテスト駆動開発で実装しています。
最低限綺麗にコードを実装し、サポートに入ってくれた開発者や引き継いだ開発者が開発しやすいようにしておきたいですね。もちろん自分やチームのためにも。