アジャイル開発のウソ!? ホント!? 注意すべき3つのポイント

こんにちは、ShareWisインターン生の明石です。
本日はアジャイル開発に対する誤解をなくすためのお話をしようと思います。

agile_development

アジャイル開発と聞くと、
「早い!考えるよりも、とにかく実行!まずは開発して、それからPDCAサイクルを回しまくる!」
という印象を持っている人が少なからずいるのではないでしょうか?

私もその一人で、特に技術や設計に自信のない間は『正しい設計なんかわからないし、一度つくってまたつくり直せばいいや。とりあえず書いていこう。』という気持ちでアジャイルめっちゃ気楽でいいじゃんと考えていました。
実際に、私はアジャイル開発で個人ブログを開発し、公開してみた経験があります。
しかし、どうやらそのときの私はアジャイル開発に対して誤解があったようで、いくつかの問題にぶつかる事がありました。

アジャイル開発に対する誤解

まず、アジャイル開発には確かに得られるメリットがあります。

◯アジャイル開発の良い点

  • 理論上の最善の設計ではなく、今自分が考えうる最善の設計で開発に取り組める。
  • ある程度の企画の段階で実行に移せる。
  • 完成後の修正・改良を受け入れられる。

上記は企画を実行に移しやすくなるという意味ではとても良いことだと思います。
そういった意味では、私はアジャイル開発は大好きです。
しかし、上記の良い点を強調することは、実は以下のような誤解を生じさせることにつながります。

◯アジャイル開発に対する誤解

  • 企画は真剣に詰めなくて良い。課題解決は後回し。思いつきは即時実行。
  • システム設計は曖昧で良い。後からリファクタリングで修正。
  • ドキュメントはなくても良い。コミュニケーション重視。

アジャイル開発でも企画は詰めよう!

実は、アジャイル開発といえども、企画を詰める事は必要不可欠です。
思いつきをそのまま開発してしまうと、無駄な開発が増えてしまうからです。

例えば、私のブログサービス開発の際に、
「ここでtwitterをつぶやけたら便利だ!」
と考えてtwitterつぶやき機能を導入したとします。

しかし、実際にはtwitterは専用のアプリケーションの方が使いやすくて、ブログに取り付けられたつぶやき機能は全く使わないということがあります。
これは、機能が必要か、必要でないかの思考錯誤が甘かった事が原因です。
思いつきがあっても、本当にそれが必要かという事を考える事は必要です。

アジャイル開発でもシステム設計は曖昧にしない!

また、システム設計も曖昧にしてよいことはありません
詰めれるだけ詰めるべきです。
システム設計を曖昧にすれば、開発の途中で無駄な労力を使わなければならなくなるからです。
先ほどと同様に私のブログの例であげると、私はブログにカテゴリ機能を取り付けました。
はじめは記事だけだったので、記事のためのカテゴリだったのですが、後ほど読んだ本の管理機能もつける事になり、本のカテゴリ機能も必要になりました。
その際、カテゴリの設計が悪く、カテゴリ設計をある程度作り替えなければならなくなりました。

アジャイル開発でもドキュメントは必須!

最後にドキュメントですが、ドキュメントは必要不可欠です
ドキュメントは意思疎通をするツールだけではないからです。
ドキュメントをつくる事の本当の価値は自分の考えを整理し、まとめる事にあります。わかりやすい、誤解のない意思疎通をするためにドキュメントをつくるのです。
ドキュメントがない結果、自分が本当に思っている事を間違って話してしまい、誤解が生まれてしまうのです。

このように、アジャイル開発に対する誤解は様々な問題を生じます。アジャイル開発をする際はその手法について正しく理解していかなければなりません。


最後にですが、今回はアジャイル開発が怖くなるような記事の内容でしたが、私はアジャイル開発を否定しているわけではありません。
アジャイル開発の良い点、誤解の生じやすい点をよく理解して、開発に取り組んで欲しいと思っています。
そのために、一度は課題のあるアジャイル開発(つまり、設計や企画は曖昧に、思いつきのものをプログラミングすること)に取り組んでみた方が良いと思います。
そうすれば、上記で述べたアジャイル開発に対する誤解がなぜ誤解と言えるのかが本当に理解できるはずです。
そして、そのプロセスを踏むことで、アジャイル開発の本質的な部分を理解できると思います。

(明石)