01のプロダクト開発を振り返ってみる

hirano.tatsuya|2021年12月13日
開発よもやま

この記事はランサーズの AdventClender2021 の13日目の記事です。

開発部新卒エンジニアの平野(@44511336tatuya)です。今回は新規開発で得た学びや失敗を振り返って行こうと思います。

  • 初めての新規開発
  • 開発メンバーが業務委託中心
  • 開発リーダー不在

という条件の中、試行錯誤しながら今回のプロジェクトを進めてきました。

1. チーム全員が常に共通認識を持つこと

開発初期段階では社内側のメンバーと社外の開発メンバーでアプリの完成象、描いている世界観の乖離が起きていたことによって手戻りが発生した部分がありましたので、業務委託の垣根を超えてチームとして密なコミニケーションを初めから取っておけばよかったなと思いました。口頭での認識合わせだけでなくアップデートした情報を仕様書に紐付けてストックしていくことも大事です。
この経験から、チーム全員が共通の認識を持って開発をすることがプロジェクトをスムーズに進める上でいかに重要なことか知りました。

        2. プロジェクトに関連する情報は1つに集約する

        本プロジェクトではGoogleDriveを使って情報を管理していたのですが、

        • プロジェクトに関連する資料が1つのドライブにまとめられていない
        • 進捗管理や仕様書はスプレッドシートに纏められていたので視覚的に現状を把握しづらい、読み辛い

        等の問題がありました。それに付随してプロジェクトが進行するにつれてタスク管理や進捗管理が煩雑になってしまったので、次回新規開発をする時は backlogtrelloなどを使って全ての情報を1つのアプリで管理したいなと思いました。

        3. スケジュール通りに実装しなくても良い

        各機能ごとのスケジュールを引いてそれに合わせるように開発していましたが、コンフリクトや仕様漏れによる修正作業などでスケジュールをビハインドしてしまいました。
        今回の経験からスケジュールはあくまで目安であって前倒しで実装できそうならどんどん進めても良いのではないかと思いました。開発期間の半分の日程で7割以上を終わらせるぐらいの気持ちで開発をすればテストを書く時間やより詳細な動作検証に時間を注ぎ込めたのかなと思います。

        4. 開発機能の優先順位を明確にしておく

        開発を始めた当初、機能の優先付をせずに、取り掛かりやすそうなissueから手をつけていました。結果として、業務委託の方に優先度の低いissueを振って時間を溶かしてしまったりと今考えても勿体なかったなと思います。
        また優先順位を付けれていなかった背景として、システムの概要やニーズが不明瞭な部分が多々ありましたので、実際にシステムを利用する方々に早い段階で要望等をヒアリングできていればある程度の優先順位や方針を立てやすかったかなのかなと思います。
        ここでの学びは

        • 早い段階で優先順位を付けるためにシステムを利用する方々にヒアリングをしておく
        • 「リリースに際して絶対必要」という機能と「欲しい機能だがリリース後でも大丈夫」という機能のように優先順位をつけておく

        こうすることで業務委託の方に適切に仕事を振ることができたのかなと思います。

        5. 選択した技術に責任を持つ。技術的挑戦をしてみる

        フロントの技術スタックにvue3、vuexという選択をしたのですが、開発メンバーのほとんどがvueの知識が無い状態での選択でしたので開発を進めながら個人でモダンなフロントエンドをキャチアップしていく必要がありました。
        この経験から技術を選択したら人任せではなく、責任を持ってキャッチアップから実装まで先導していく必要があるのだなと思いました。

        まとめ

        初めてチームでの新規開発を経験して初歩的な内容ではありますが、良い学びになったと思います。既存のアプリの保守開発をしているだけでは経験できないような出来事、様々な壁に直面しました。この経験を自分の中に落とし込んで次回の新規開発に役立てて行きたいと思います。