今日の業務の振り返り(2021/12/23)

今日の業務での学び

今やっているタスクの進捗が思ったより遅い

タスクをこなす上で遅くなってしまう原因をbreak downしてみる

  1. 技術の知識不足(単純にnext.jsとかの知識)
    • 公式のドキュメントを見てできることを把握しておく
    • 手っ取り早くは似たような実装をしているものを探してくる
  2. 実際の現場の運用の理解不足(plexjob特有の書き方などの知識)
    • 自分で書いていない部分を見て、さっと全体像を把握しておく
  3. 要件を正しく把握できていない
    • あいまいなところは聞く
    • 曖昧表現を避ける(いい感じにとか、〜のサイトみたいにとか)
  4. 不確実性が高いタスクの状態で実装に移ってしまっている
    • 最初にタスクが来た時に不確実性が高い状態でタスクの分解・設計をしているが、実装していき解像度が上がってきたらその都度タスクの再分解・再設計を行う
    • PRを細かくすることで、レビュワーも楽になる

今回の原因

まずタスクはnext×typescript×graphql×rubyで書かれているアプリの検索機能の拡張(複数検索(掛け合わせ検索)をできるようにする。) 今回は4の部分が大きかった。 複数検索の実装はある程度やること頭に浮かんでいたが、やったことなかったので不確実性が高い状態での設計となっていた。 そのため、最初は複数検索(2つ、3つ)みたいな分割しかできていなく、かなりあやふやな設計になってしまっていた。

複数検索(2つ、3つ)だと検索条件が一つ増えただけで似た実装をするように見えるが、実際は2つの複数検索の場合、都道府県×市区町村or特徴と2つ目に入ってくるものがどちらかわからず、ビューもクエリも動的に対応する必要があった。 反対に3つの場合は確実に都道府県、市区町村、特徴が入ってくるので動的に実装する必要はない。 このように2つと3つの場合で実装が大きく変わるのだが、今回のように単純な複数検索(2つ、3つ)みたいな分解の仕方だと、似たような処理を実装するから共通化できるかなという考えのもと実装するため誤った前提で考えてしまい、そうにか共通化しようと無駄に時間がかかってしまった。

対策

今回の問題は、『もうコード書いているのにもう一度設計考えるのはめんどくさいなと』という思いから再設計をせずに進めてたことに起因した。 最初の設計なんて一回やったことある実装じゃない限り間違っていたり曖昧な部分が多いわけで、少しでも何かわかれば再度設計を考え直す必要がある。 とりあえず、次回出勤からはその日の終わりに、今日実装していてわかったことの列挙と再設計が必要かの検討を行うようにする。