新卒2年目で初めてデータ基盤案件に入り、一番苦労したのはSQLではなかった
はじめに
どうも、そらです。
新卒2年目で、初めてデータ基盤構築の案件に入りました。
案件では、SQLの実装、設計書の修正、単体テスト仕様書の作成、テストの実施、レビュー対応などを担当しました。
参画前は、SQLを書くことが一番大変だと思っていました。
しかし、実際に一番苦労したのはSQLではありませんでした。
- どのタイミングで報告するか
- 相手と認識が合っているか
- 複数の作業をどの順番で進めるか
- レビューする人が確認しやすい形になっているか
この記事では、初めてのデータ基盤案件で重要だと感じたことを備忘録としてまとめます。
1. 完了してからではなく、途中で報告する
最初は、作業を完了させてから報告すればよいと思っていました。
しかし、方向性を間違えたまま最後まで進めると、大きな手戻りが発生します。
そのため、現在は次のようなタイミングで報告するようにしています。
- 作業方針が決まったとき
- 仕様に不明点を見つけたとき
- 想定より時間がかかりそうなとき
- 調査しても判断できないとき
- 作業が完了したとき
報告するときは、状況だけでなく次の対応もセットで伝えます。
進捗:
現在、対象ビューの修正まで完了しています。
確認結果:
元データと修正後ビューの件数に差異があります。
原因の見込み:
結合先マスタに同一キーのレコードが複数存在する可能性があります。
次の対応:
マスタの重複確認後、結合条件を再確認します。
期限への影響:
本日中に原因を特定できない場合、テスト完了が翌日にずれる可能性があります。
「問題があります」だけでは、相手が次の判断をできません。
自分がどこまで理解し、次に何をするのかまで「伝えること」が重要だと感じました。
2. 実装前に認識を合わせる
データ基盤の案件では、同じ言葉でも人によって認識が異なることがあります。
たとえば、「最新データ」という言葉だけでも、次のような解釈があります。
- 更新日時が最も新しいデータ
- 売上日が最も新しいデータ
- バッチ実行日に取り込んだデータ
認識がずれたまま実装すると、SQLとしては正しくても仕様とは異なる結果になります。
そのため、不明点を確認するときは、自分の理解もセットで伝えるようにしています。
私の認識では、商品名ごとに更新日時が最も新しいレコードを取得する仕様と理解しています。
そのため、商品名で区切り、更新日時の降順で1件目を取得する実装を想定しています。
この認識で相違ないでしょうか。
単に「どうすればよいですか」と聞くよりも、自分の認識を示した方が、相手も回答しやすくなります。
3. 自分だけで優先順位を決めない
案件では、複数の作業を同時に依頼されることがあります。
- SQLの修正
- テストの実施
- 設計書の更新
- レビュー指摘への対応
- 不具合の原因調査
すべて重要に見えるため、自分だけで優先順位を判断すると、本当に急ぐべき作業が遅れることがあります。
優先順位が分からない場合は、次のように確認します。
現在、以下の3作業を抱えています。
1. ビュー修正のレビュー対応
2. 単体テストの証跡修正
3. 結合テストで発生した差異の原因調査
期限と後続作業への影響を踏まえ、3、1、2の順で進める認識ですが、問題ないでしょうか。
ポイントは、相手にすべてを決めてもらうのではなく、自分の考えた順番を提示することです。
4. レビューする人が確認しやすい形にする
実装やテストは、自分が理解できれば終わりではありません。
レビューする人が短時間で内容を確認できる状態にする必要があります。
特にテスト証跡では、次の点を意識しました。
- 何を確認するテストなのかを書く
- 期待結果を書く
- 実行したSQLを残す
- 実行結果の件数を見せる
- 修正前後の差分を比較する
- NGデータが0件であることを確認する
疲れて頭が回っていない自分でも理解できる証跡にすると、レビューする人にも伝わりやすくなります。
特に、修正前後の差分を見せる証跡は、変更内容を確認しやすいと評価されました。
こちらに関しては以下の記事でまとめています!
一番苦労したこと
初めてデータ基盤案件に入り、一番苦労したのは、SQLを書くことではありませんでした。
自分の考えを整理し、相手と認識を合わせ、適切なタイミングで報告することでした。
SQLは実行結果を見れば、ある程度は正誤を確認できます。
一方で、報告や認識合わせには明確な正解がありません。
相手、期限、作業状況に応じて判断する必要があります。
そのため、今も試行錯誤しています。
まとめ
初めてのデータ基盤案件で、特に重要だと感じたのは以下です。
- 完了を待たず、途中でも報告する
- 不明点は自分の認識とセットで確認する
- 優先順位は自分の案を示して相談する
- レビューする人が確認しやすい成果物を作る
データ基盤案件では、SQLやクラウドサービスの知識が必要です。
ただし、それだけでは案件を円滑に進められません。
手戻りを減らし、周囲が判断しやすい状態を作るコミュニケーション力や国語力も、エンジニアに必要だと感じました。