はじめに
AgVenture Labの高野です。
6年半ウォーターフォール開発を行ってきた人間ですが、2023年度4月、アジャイル開発がメインの部署へと異動となりました。
約半年でアジャイルチームに参画するためにどのようなプロセスを経てきたか、その結果どうなったかをお話ししていこうと思います。
これからアジャイル開発に挑戦してみたい方や新人を受け入れる予定があるアジャイルチームへの参考となれば幸いです。
目次
1.これまでの開発経歴
2.チームの体制と採用している開発手法
3.半年間の取り組み内容
4.振り返ってみて
5.取り組みの有効点と注意点
1.これまでの開発経歴
冒頭で申し上げた通り、これまでウォーターフォール開発のみを経験してきた人間です。経歴を軽く説明すると、リリース前の運用受け入れ業務を1年半、NWやサーバなどのインフラ関係のシステム開発業務を5年経験してきました。
ウォーターフォールでは以下の工程を経て開発が進められていきます。
・要件定義:システムの機能決定/人員の設定/開発規模の見積
・基本設計(外部設計):UI、入出力データなどの設計
・詳細設計(内部設計):具体的な実装方法の設計
・開発:コーディング作業
・テスト:単体テスト/結合テスト/運用テスト
・リリース
・運用
ウォーターフォールを経験してきた、とは申しましたが、テスト部分は、一部は協力会社に依頼しその結果を確認するのみで経験が浅く、更に開発部分に至ってはコーディングを全く経験していない状態、お恥ずかしながら学生時代や研修時に少し触れた程度の完全な素人となります。
アジャイル開発では、ウォーターフォールで言うところの要件定義からリリースまで、もれなく自身で手を動かし開発を実施しますから、そもそも必要とされる開発知識が乏しい状態での参画であった、といった前提を踏まえた上で今後の話を読み進めていただければと思います。
2.チーム概要と採用している開発手法
チーム概要
・スクラムマスター兼開発者1名、開発者5名(開発者数合計6名)の体制
・開発者6名中2名が私を含め新規にチーム参入
・6月より開発者が1名離任
・開発手法はスクラム開発を採用
スクラム開発の詳細については、以下のQiita記事を参考にしてください
3.半年間の取り組み内容
4月
・開発環境の構築
・アジャイル開発/スクラム開発の基礎説明
・新人2名でToDoアプリ開発を通したコーディングの学習
◆成長ポイント
JavaやVueでのコーディング方法やソースコードの管理について、基礎的な部分を習得できました。座学よりも実際のコーディング作業にウェイトが置かれていたのですが、私個人は直接手を動かした方が覚えが良いタイプでしたのでありがたかったです。
5月
・新人と既存アジャイルメンバーでのペアプロ、モブプロを実施しつつ、当チームで現在開発しているアプリの開発作業に参画
・ペアプロについては既存アジャイルメンバー4名✖️新人2名の合計8パターンの組み合わせで実施
◆成長ポイント
異なる人とペアでコーディングを実施したことにより、様々な観点でのコードの実装方法やエラーの解消手法を学ぶことができました。また、当チームでは事前に「偏愛マップ」を利用した1on1を実施し、会話のしやすい雰囲気作りが成されていたこともあり、迷った際に躊躇せず質問ができる環境となっていたことが技術習得に役立ちました。
6月(この月より開発者1名離任)
・これまでの開発を通し、不安な箇所についてはペアプロを継続しコーディング実施
・既存アジャイルメンバーにサポートをしてもらいつつ、各スクラムイベントのファシリテーションを2sprint分実施
◆成長ポイント
簡単なコーディングについては自走して実装できるようになり始めました。また、悩んだり困ったら即相談するマインドが定着し始めたのもこの時期です。コーディングなどの技術的な部分についてはwikiなどにアウトプットすることで記憶に定着しやすくするように工夫していました。
7月
・ファシリテーションについて適宜フィードバックを実施
・開発作業で手の空いている人、困っている人の声掛け/相談が積極的に
◆成長ポイント
ファシリテーションを3回ほど経験した辺りで時間管理や他の人へ話を振れるようになるなど、スクラムメンバーとして回り始めた感じがします。ファシリテーションのフィードバックを頂けたのが非常に助かりました。振り返りは大事です。その他、各タスクを自発的に取れるようになってきました。
8月
・リリース作業を新人+既存メンバーのペアプロにて実施
×慣れが生じ始めたのか時間管理や仕様確認、開発作業における相談が甘くなる
↓
・慣れによって生じた問題点について、スプリントレトロスペクティブで素早く検知
◆中だるみ&成長ポイント
やらかしフェーズです。自分の慣れによって、無言&タスクボードの更新をせずに作業開始することで作業が重複する、仕様確認を怠ってコーディングに着手しプルリクで手戻りが生じるなど、コミュニケーション不足が散見され始めました。まぁわざわざ声に出さなくても問題ないでしょ、仕様も多分自分が考えてる内容で合ってるでしょ、とタスクの処理速度を優先してコミュニケーションを面倒くさがったのが敗因ですね。スプリントレトロスペクティブで検知されチームで話し合うことで、自分の慣れによる行動を認識できたり、チームの仕組みを改善することで早期に気付き解消することができました。
4.振り返ってみて
まず、コーディングやテストなど、これまで取り組んでこなかった部分が体験できたのは大きな収穫でした。エンジニアとしての技術力は確実に向上しましたし、何よりすぐに『動く成果物』が出来上がるので、技術スキルという概念的なものが目に見える形で現れるのがモチベーションの維持に繋がっていたように感じます。
また、ちょっとした雑談が多く会話のしやすい環境も新鮮でした。これまで経験してきた部署では、業務時間中は目の前の仕事に単独で専念し、せいぜい昼休みか業後にささやかな会話がある、といった程度でした。アジャイルチームにおいては会話のしやすい空気感から分からない部分は質問してさっさと解決してしまうといった動きが気軽に取れるのが非常に助かりました。ウォーターフォールに従事していた際にはあまり意識していなかった悩むことに無駄に時間を割くのを止めるといったマインドが定着したことが、アジャイルチームに参画して大きく変わった点です。
5.取り組みの有効点と注意点
さて、現在も細かい部分でフォローは受けつつも、素人が半年でアジャイルチームに参画できる結果となりました。既存アジャイルメンバーの面々には様々なサポートをして頂きましたが、特に有効と感じた取り組み、および注意点を以下の通りまとめます。
◆有効点
・既存アジャイルメンバー全員とペアプロを実施したことで、様々な視点でのコーディング手法を学ぶことができた
・ファシリテーションのフィードバックを貰うことで自身の問題点に素早く気付けた
・コーディング→ファシリテーション→リリース作業と各月に少しずつ実践したことで各作業の要点について、混乱せず落ち着いて確認を取ることができた
・既存アジャイルメンバーがフォローすることに対し積極的であったため悩んだ際にすぐ質問できた
◆注意点
アジャイルチームで新人を受け入れる人たちへ
・当たり前の話にはなるが、新人の性格によっては、当チームと全く同じ取り組みでスムーズでチームに参画できるとは限らない、新人のチーム参画状況を常に観察しながら個人に応じたやり方を工夫することが重要
これからアジャイルチームへ参画する人たちへ
・とにかく会話が大事、黙って仕事を進めよう、1人で抱えようなどの考えは捨てること
・チームに参画できても、すぐに既存アジャイルメンバーの技術力に追いつくのは困難なため、作業中に迷いが生じたらできるだけ早く相談するよう日頃から意識をした方が良い