転職、2ヶ月経過して

2022年1月末に退職し、2月から新しい勤務先へと移り、約2ヶ月が経過しました。

サーバーサイドエンジニアとしてジョインしてます。

まだ、正直、自分に求められているものが何なのかはっきりしていませんが、 現場の開発フローが非常に悪い状況でしたので、CI/CDの整備を軸に、以下の開発業務の改善を行いました。

  1. 本番環境など各種環境へのデプロイを自動化
  2. テストコードを書く文化の浸透
  3. チーム単位で週毎の振り返りミーティングを実施

全部、開発する上で当たり前のことなのですが、やらないと前に進めないと思っているので。

1. 本番環境など各種環境へのデプロイを自動化

ソースコードはオンプレ環境のgitlabで管理しており、以前はgitlab runnerを使って自動でデプロイしていたみたいなのですが、ある時を境にgitlab runnerが動作しなくなり、放置され、それ以降は、とある社員がメモを片手に手動でローカルからデプロイしていました。社内にメンテできるエンジニアがいなかったから、放置されていたみたいです。なので、ここは単純にgitlab runnerを動作させるようにし、今まで通りマージをhookに各種環境に自動デプロイするようにしました。

ただ、オンプレ環境のgitlabを利用している限り、gitlab / gitlab runnerのサーバ自体管理が必要になるので、githubへ移行中です。

少しでも人の手作業によるオペレーションミスや、オペレーションの属人化は無くしていきたいですね。

2. テストコードを書く文化の浸透

テストコードがないプロダクトをいくつか見てきました。が、結局、開発効率が落ちたりしており、書かいないことのメリットは書くコスト/時間の削減以外ないのではないかと思います。また、テストコードを書くことで、ロジックの質もテストを書くことを意識することで自然と良いコードになると思います(きっと多分

業務ではAPIサーバの開発をメインとしており、リポジトリには、ユニットテストがいくつか存在してました。ただ、ローカルで実行したところ、いくつかのテストが失敗したりしており、テストコード自体が正しいかどうか、誰も判別がつかない意味不明な状態で、なおかつユニットテストがCI上で実行されている形跡もありませんでした。

なので、完全に腐りきった既存ユニットテストのコードを一度全部削除し、ゼロから追加していくことにしました。

また、バックエンドチームは僕含めて4人なのですが、僕以外テストコードを書いた経験がない状態でしたので、同時にテストコードの書き方を共有しつつ、地道にテストコードを書く文化を浸透させていきました。

全てのテストを一気に追加することは、エンジニアのリソース/時間的にも現実的ではないので、テストコードの追加方針は以下にしました。

アプリケーションの実装アーキテクチャMVCではなく、ADRを採用し実装しているため、業務ロジックとなるドメイン部分がはっきりしており、なおかつドメインとレスポンスがほぼ1対1となっているので、まずはドメイン部分のロジックをモックせずに大味なテストを用意することが大事なのかなと判断しました。ある程度、APIレスポンスのアサーションテストが充実してきたら、ドメイン部分のテストを拡充していく方針です。

また、当たり前ですが、新たに追加していくテストコードが腐らないようにCI上でテストが自動実行されるようにもしておきました。

副次的な効果として、テストコードがあることで、仕様の把握がしやすくなり、コードレビューもしやすくなりました。

3. チーム単位で週毎の振り返りミーティングを実施

現状の開発チームは、社員/業務委託合わせて10人ほどになります。バックエンド/フロントエンド(アプリ)と2チームに分け、それぞれ隔週毎に振り返りミーティングを実施するようにしました。主な目的は、コミュニケーションの促進、日々のヘイトを吐き出してもらい、ミーティング中に出た意見を吸い上げ、次のプロジェクト/スプリントで、吸い上げた意見に対するアクションを小さく始めたりして、開発プロセスを少しでもよりよくしていきたいからです。ダメだったり、効果がなければすぐやめて違うやり方をすればいいという方針で行ってます。また、堅苦しい雰囲気にもしたくないので、意見を言いやすい雰囲気を作るように心がけてます。

チームメンバーがおかしくないって?思っていることをカジュアルに共有することができ、開発プロセスで曖昧になっている部分を大小関わらず洗い出すことができるようになりました。以前よりもdiscord/slackでのコミュニケーションが活発になったような気がします。回を重ねるごとに、良い意見が出てくるようになっているので、今後も継続していきたいと思ってます。

振り返りをすると、ダメなところばっかり出やすいのですが、いいところもたくさん意見し、お互いに尊敬しつつチームビルディングできればなって思ってます。