この記事は アイスタイル Advent Calendar 2024 シリーズ1 19日目 の記事です。
はじめまして!アイスタイル新卒1年目の山田卓和です。
普段はWebアプリケーションエンジニアとして働いています。
今回は「保守・運用」という業務について入社前後のギャップや実際に経験してわかったことを話そうと思います。
入社前のエンジニアのイメージ
とにかくコードを書いて動くものを作っているイメージでした。
自分の中でエンジニアの仕事は新規のサービスを作成することが主な仕事であると考えており、プロダクトを運用していくための知識や技術、そして意識がすっぽり抜けている状態でした。
入社後のギャップ
入社前のイメージと真逆でした。もちろん開発の業務はありますが、同時に保守・運用作業が考えていたよりも重要度が高く、このギャップに大変驚きました。
保守・運用はネガティブな文脈と捉えられることもあると思います。
初めは僕もそんな感じのイメージでしたが、既存のコードを読み、各種ツールやログを頼りにした問題点・課題の調査が非常に難しく、コードを書く以上にコードを読み・理解すること、調査のためにツールを使いこなすことがエンジニアとしてより重要なスキルであるとわかりました。
保守運用を行なって理解できたこと3選
1. テストコードの重要性
保守・運用の一環でテストコードの追加なども行いました。
テストコードについて概念でしか知らなかったのですが、業務を経験していく中でテストコードで網羅できる幅が非常に広く、今までのとりあえず動かしてみるといった内容では網羅できない幅まで確信が持てるとわかったことが一番の収穫でした。
一方、テストコードを詳細に書きすぎると偽陽性が増えてしまったりなどなど、
トレードオフもあり気をつけなければいけないとも感じました。
ちなみに、テストについてもっと詳しく知りたい方はこちらの記事などおすすめです!
2. 良いコードとは何か
よく技術書などで取り上げられているもので下記の点があると思います。
・ 命名が適切にされており関わる機能や役割が想像しやすい
・ 関数やクラス、モジュール単位で責務が分けられており、それぞれの結合度が低い
正直なところ就職前は「へ〜」ぐらいの感覚であまりピンと来ていなかったのですが、
業務を行う中で重要度を改めて理解できました。
例えばサービスの終了や変更があった際は、コード内でそのサービスに関わる箇所を把握する必要があるのですが、命名が適当だと検索に引っ掛からず、そして処理を追わないと内容がわからないといった厳しい状態に陥ることがわかりました。
また、関数やクラスなどが適切な責務で分けられておらず、密結合の場合、修正箇所や修正の影響範囲がどこまで及ぶのかなどの把握が難しく、テストに関してもどう書いていいのかわからないといった状況に陥ることがわかりました。
3. 幅広い技術に触れることができた
開発だけではそのシステムの機能に関わる技術のみに触れることが多いですが、
様々なサービスを運用していく中で、各サービス内の技術や管理ツールを深く理解しなければ対応できない場合が多く、そういった意味で技術の幅がぐっと広がった気がします。
保守・運用は新規開発の糧になるかも??
改めて感じたのが、ソフトウェア設計や世の中で話されている技術的な内容は長期期間のシステムの運用を目的としていることが多く、保守運用を経験しないとしっかりとは理解しきれないのではないかという仮説が自分の中で大きくなってきている今日このごろです。
今後新規開発をガツガツ行なっていく場合も、より技術を理解できた状態で望めるのではないかと思います。
最後に
保守・運用は会社によって内容が変わると思うのでここに書いた内容が必ずしも当てはまらないかもなのですが、今後もし保守・運用作業を任された際は、「保守・運用」という名前だけで拒絶反応を示さずこの記事を思い出していただけると嬉しいです。
最後まで読んでいただきありがとうございました。