アジャイルに慣れていないチームが陥るアジャイルの罠
どうも”おもり”です。
筆者の会社は決してモダンなITメーカーでもなく、精密機器メーカーです。そのため、モダンな開発手法が浸透しておらず、かなり前に作ったアプリの保守をして首の皮一枚を繋いできていました。
アプリの刷新のために、自社での新規開発を行うことになった時に筆者が感じたことをこれからは書いていきます。
アジャイルに慣れていないチーム
筆者のチームでは、タスク管理にはJIRAを使い、ソースコードはBitBucketで行っています。開発に最初に行うのはチケットの起票でした。
筆者のチームリーダーは、JIRAをただタスクのリスト化をするためのものと認識していました。筆者も含め、他のチームメンバーも同様です。
新規開発フェーズなので、V1.0に実装する機能のタスクを洗い出して、全て作成しました。筆者のチームの場合、少し複雑なのですが、ロシアの開発メンバーとの共同開発だったので、ロシア側の人的リソースなどがいつから使えるのかも未定だったので、まだタスクの担当者も未定の状態といった感じでした。
作りたいAndroidアプリのデザイン仕様(画面仕様)はExcelで作成していました。そのExcelを各チケットに添付していきました。
新規開発は筆者の会社ではかなり久しぶりでした。Android(Qtでの開発)に精通した社員もいませんでした。その結果、各タスクにどれだけ時間がかかるのか見積もることもできません。ざっくりと工数を割り出し、開発に精通したロシア側に確認してもらい、お互いスケジュールの合意をして作業を開始しました。
JIRAを使ったやり方など社内の誰も経験してきませんでした。開発知識も無い状態だったので、筆者はロシアに3ヶ月間の出張を行い、知識を身に着けた上で日本メンバーと開発を進めてきました。
アジャイルの罠
アジャイルは決して、導入してすぐにできるものではありません。アジャイルという言葉だけが1人歩きをし、実態というものは会社の上層部はあまり把握していない状態です。
JIRAを使ってタスク管理をしても、きちんとルールを決めてタスクの起票などを行わないと、後々に困ってきます。
JIRAを使うことがアジャイル開発では決してありません。仕様を貰い、開発を進め、常に動作する成果物を用意して、成果物に対するフィードバックを素早く貰い、それを反映させるループを繰り返していくことがアジャイル開発には重要です。
■仕様:Excelでの画面仕様
・画面デザインの統一ができていない。
・仕様に変更があった時の仕様書のアップデートも開発者が行うので遅れる。
・画面仕様はあるが、処理の条件などが記載されておらず、実装時に困る。
⇒開発を進めながら仕様の再確認や変更が多発
このように上手く使っている人もいるみたいですが、この記事で指摘されているように、今はAdobe XDやFigmaのようなツールを使うのが一般的になっていますかね。
https://www.adobe.com/jp/products/xd.html
https://www.figma.com
■開発:Qtでのクロスプラットフォーム開発
・開発経験が乏しいため、見積もり以上の工数がかかってしまう。
・ロシア側のプロダクトの流用も行っており、そちらの解析が困難。
⇒全体的に開発工数が見込み以上になり、プロジェクトの遅延
■常に成果物の用意:TeamCityによるCIビルド
Dailyビルドは生成されるが、ろくにチェックもしていない。
企画側が忙しく、Dailyビルドを見ることが無い。
⇒開発中にフィードバックを貰うことは無かった。
罠にはまった結果
■開発を進めながら仕様の再確認や変更が多発
仕様のレビューを行うために、開発者間で会議が頻発し、開発にかける時間が減少。その結果、さらに開発に遅延が発生していきます。
Excelで画面仕様を変更するのは、Excelの動作が遅く、修正に時間がかかってしまいました。他のデザインツールなどは試してはいないのですが、仕様書の管理もリポジトリ内で行っているのですが、Excelだと差分が一切分からない状態だった。
そもそもデザイナーではないので、マテリアルデザインの知識などが不足しており、デザインの変更が個人の判断になってしまいます。
■全体的に開発工数が見込み以上になり、プロジェクトの遅延
開発知識が乏しいことや、ロシア側のプロダクトのスパゲティー化や仕様書や設計書が無い問題があり、1から解析していかないといけないなど、開発の効率も悪かったです。
■開発中にフィードバックを貰うことは無かった。
これはアジャイル開発では重要になるのですが、正直な所、開発の遅延が凄まじい状況の中で要望がどんどん上がってきたら、それどころじゃないとなっていたでしょうが(笑)
最後に
筆者のチームの開発は振り返ってみると、ダメダメな所が多々ありました。別に『アジャイル開発をしろ』と口を酸っぱく上司から言われていた訳ではありませんでしたが、今回の開発経験は今後の開発をする時にもっと良くできる所がたくさんありました。それらについて、これからの記事で書いていこうと思います。
それでは、またまた。。。
func pleaseSupportMe() { if ( isSupportedFromYou ) print("より一層がんばります!") else print("頑張るぞい") }