「仕事でこんなことしたらこんなことがあったよ」という備忘録
※ 小さな会社に所属してる人の意見なので全員の参考にならないと思います。ご了承ください
結論
- プロジェクトで周りの人の負担を減らそうと頑張ったら自分のできることが少し増えた
- 経験が信頼につながるかもしれない
- 任せてもらえる機会が増えた
はじめに
2023年4月でITエンジニア3年目になりました。今参加してるプロジェクトはチーム発足から参加しており、プロジェクトを進める中で自分なりに考えて動いてました。そのおかげもあり色々自分のスキル一覧が増えてきた気がするのでまとめます。
「どんな課題に直面し、課題に対してどんな行動を起こしたのか」、「試行錯誤したことでどんなことが起こったのか」、「今後何していきたいのか」を書いていきます。
背景
1. 目の前だけしかみれてない人が多かった(自分も含め)
ITエンジニア経験が全体的に若かったです。今はうまく回っていますが最初はプロジェクトメンバーも多くコミュニケーションで躓き、開発がうまくいかないという現実がありました。実装量が多く、フロントエンドとサーバーサイドがお互いにコミュニケーションをする時間が取れなかったのも開発を滞らせていた原因でした。コーディングルールを設けてましたが、細かい書き方がバラバラだったり同じ処理が複数箇所に書いてあったりとなかなかカオスでした。
とにかくやることが多くて忙しくて毎日必死だったんです。
2. 特定の人に負担がかかっていた
1で書いた通り、経験がみんな少なかったです。なのでできる人が1人いるとその人に実装やレビュー、要件定義が殺到します。 恥ずかしい話ですが、「〇〇さんじゃなきゃできない!」という強迫観念に駆られることもありました。事実として特定の人が一生懸命頑張ってなんとかなってるみたいなところありました。チームとして健全ではなかったかもしれません。
上記2点が大きな課題と感じてました。そして自分でもできることは無いのかと考えて行動することにしました。
やったこと
1. 率先してコードレビューする
初めはコードの品質担保でした。また、コードレビューをすると実装が見れるので「似た処理だけど書き方違うなぁ」や「この実装方法良いから今度参考にしよう」と勉強になりました。コメントで「似た処理があるので書き方統一してください」とか「コードガイドラインに沿ってください」と指摘できるので実装のバラつきを減らすこともできました。
2. フロントとサーバーのコミュニケーション架け橋
自分は主にWebAPIを実装してました。データのやり取りしかできないのでワイヤーに沿ったことしか考えられませんでした。そこでフロントエンドの担当に「このデータでやりとりしますけどいいですか?」という事前のコミュニケーションをとることで実装終わってからの手戻りは少なくできました。OpenAPIがあったのですがうまく使えてなかったのは反省です。
また、シードデータの調整も頻繁にしました。どうしてもサーバー側の人間はDBをいじってデータを作成しがちです(主観)。フロントエンド一筋の方でDBの操作に慣れておらず開発が遅れるのは避けたかったので開発メンバー全員がいる会議で「シードデータで困ってることありますか?」というのはよく聞いてました。全部に対応するのは難しかったですが、8割くらいの要望は対応した記憶があります。
3. デプロイを担当
デプロイできる人が1人しかいなかったです。また、アプリケーションエンジニアと兼任だったので忙しくしてました。なので自分がデプロイ方法を教えてもらって交互にデプロイ作業をしました。デプロイ作業を記録してテンプレートすることでデプロイ作業の負荷を下げました。
最終的にはデプロイは自動化したのでデプロイのために誰かの時間を奪うというのは起こらなくなりました。
4. ドキュメント作成でハードルを下げる
特定の人に作業が集中するのは「その人しか知らないから」だと思います。 なので定期的に行う作業は全て記録を残しテンプレートを作成、誰でもテンプレートに沿っていけば作業できる状況を作りました。
ドキュメントを作るのはめんどくさいです。しかし、作る意図や作った後の利用を考慮して作成すれば非常に役立つものが少ないコストでできたことになります。めんどくさがらずドキュメント残しましょう。そして活用して改善し続けましょう。
自分に起きた影響
1. システム全体の理解が深まった
サーバーサイドに関してはチームのほぼ全コードレビューに関わりました。なので概要であればどの機能の話をされてもわかるようになりました。コード書いてみようとすると細かい部分まで理解できてないことに気づきますが、全くわからないということはなくなりました。
全体を知っていることで「あの場所の実装を参考にできるな」とか「この処理は共通化できる」という目星がつけられるようになったのは嬉しい誤算でした。
2. 追加や修正の依頼に迅速に対応できるようになった
システム全体を知ってるので修正影響がわかりやすくなりました。デプロイを担当していたことでシステムの大きな変更時に気にしなきゃいけないことが考慮できたり、今回の変更が自動デプロイで対応できるのか否かの判断がしやすくなりました。
デプロイを手動で行うことでデプロイの流れを把握したことが役に立つ部分が少なかったのはびっくりです。
3. 視野が広くなった
システムのことはある程度理解できるようになったのでシステムを開発することだけにとどまらない視野を手に入れることができました。
具体的には新機能の追加を依頼されたときに「新機能追加の背景は〇〇でしょうか」と意図を確認できるようになったり「△△と□□の2通りが考えられるのですが、ユーザー様のことを考慮すると△△の方が良いかと考えております。いかがでしょうか」という開発者以外の目線で提案することができるようになりました。
4. 任せてもらえるようになった
自分が動いてプロジェクトを改善し続けてた姿を評価していただきできる領域が増えました。 深くはまだできないですが、フロント開発とサーバー開発とインフラ保守、エンジニアの実装管理を任される機会が増えました。今までやってきたことが何かの形となっているんだとしたら嬉しい限りです。
今後
- チームが円滑に開発できる環境を整備したい
- 技術を使うことでチームの課題を解決したい
- できる技術領域を広げて最適な解決策を提供し続けたい
- ITエンジニアとして手を動かしつつチームにも視野を広げたい
3年目の自分が仕事を振り返って特に印象に残ってることをつらつらと書いてみました。意外と自分頑張れたのかな?と疑問に思うことは多いです。 「この時こんなこと考えてこんな行動をしたのか」と自分自身が思い返されるよう記録を残しておこうと思います。仕事頑張ろ