はじめに
昨今というかだいぶ前からアジャイル開発でやるべき風潮がありますが、 BtoBのシステム開発を行っている方にとって、契約や顧客との協議の現実的な頻度によって取り入れは難しいということはあります。
そのような中でもアジャイルのエッセンスを使用して、より効率的な進め方をするというのは良いことですので、その実践例をいくつかご紹介できればと思います。
プロトタイプの作成
いわゆる試作機を作成して・・・というところです。
これは業界によっては当たり前に行われていることだとは思いますが、システム開発においては あまり取り入れていないところもあるのではないでしょうか?
昨今はいろいろと簡単に作成できるフレームワークが増えてきており、このあたりが取り組みやすくなりました。
どんなことをするかというと、ほとんど紙芝居で、実際の業務ロジックは組み込まず、画面遷移、どこでどのように入力を行うのか?どのような表示が行われるのか?など形だけ作っていき、完成品のイメージを共有します。
これにより後々のイメージ相違による手戻りの発生リスクを抑えることができます。
また、形だけとは言え若干実装することとなりますので、後にかかってくる工数を先に持ってくることができるというメリットもあります。
分割したデリバリー
一気に開発完了までもっていくのではなく、いくつかの期間に分けてその期間内で実装する機能を決めます。
(リリースするというわけではなく)
これにより、中期的な目標を持ちながら進めることができるため、自身がどの程度進められているかを 開発者自身も意識することができます。
絶対優先の機能から取り組むことにより、スコープの調整などにも多少ゆとりを持たせることも可能です。
とはいえスコープの調整は絶対不可という場合がありますので、これはプロジェクトによると思います。
CIの導入
自動ビルド・自動テストなど成果物を定期的に検査する仕組みを設けることによって問題の早期発見をする ことができます。
他、静的解析などもこれにあたります。
このあたりはGitLabで記載した記事もご参考ください。
スタンドアップミーティング
毎日短時間で昨日の実績・今日の予定・現在抱えている課題などを共有します。
PM的な意味よりは超短期的な目的意識を持たせるというところに有用性を感じています。
プロジェクト管理ツールの活用
JIRAやTrelloなどを使用し、タスク管理および進捗率を可視化できるため、遅滞の発生を検知しやすくなります。
逆に余力を見ることができるため、遅滞のフォローをどの程度充てることができるかなどにも役立ちます。
とはいえ、進捗報告の場は個人的にはあったほうがよいと思います。
自分の状況を整理して発する必要があるため、強制的に自分の立っている場所がわかるためです。
この辺はある程度任せてしまってもできる人もいますし、メンバー次第でしょう。
おわりに
なかなかウォーターフォール型の開発から脱却できない!と頭を悩ませる方は多いと思いますが、 自社内で完結できる範囲であればある程度取り組みはできると思います。
できないところを変えようと悩むのではなく、どこなら取り組むことができるのか?に頭を悩ませてはいかがで しょうか?