セカイノカタチ

世界のカタチを探求するブログ。関数型言語に興味があり、HaskellやScalaを勉強中。最近はカメラの話題も多め

アジャイルは死んだのか?

www.infoq.com

死んだというか、死んでないと思いますけど、よく耳にするのはこんな感じでしょうか。

パターン1
元々向いてない分野に無理やり導入しようとした
パターン2
聞きかじった程度の上司が始めてドキュメントを無くしただけで後は何も変わらず状況が悪化した

パターン1は、ガチガチのSI案件などです。

SIの場合、予算取りがありますので、目標があり、計画を立て忠実に従う必要があります。

その上で、厳密な契約事項の元、コンペして発注という流れになります(開発側から見ると受注)。

アジャイルソフトウェア開発宣言

  • 契約交渉よりも顧客との協調を
  • 計画に従うことよりも変化への対応を

アジャイル宣言を読んでみると、この辺の条件が揃いそうもありません。

つまり、山の民には、アジャイルは無理だということです。

山の民の間では、「アジャイル」というのは、短納期低予算をアピールしたい営業の殺し文句に使われていて、正直近づきたくない案件が多い印象です。(^^;

パターン2は、デザイン・広告畑の海の民の案件に多い気がします。

海の民は、元々ドキュメントなんで書かないのですが、アジャイル宣言のこの辺だけを聞きかじって、ドキュメントを捨て「対話だけでなんとかする」という解釈をします。

  • プロセスやツールよりも個人と対話を
  • 包括的なドキュメントよりも動くソフトウェアを

その結果、ただでさえ混乱しがちな現場が更に混乱して、顧客との対話が決裂した結果の案件の話が舞い込んでくることが多いい印象ですが、近づきたくないです。(^^;;;

そういう人たちの間では、そもそも死んでもらったほうが幸せなのかもしれません。

本来のアジャイル

本来のアジャイルを語れるほど熟知していないのですが、明らかに「継続的に維持・発展させる必要のある内製プロダクト」向きですよね。

SIでは無理です。

少なくとも、明確な目標目的なしに予算を出してくれる経営者がいる会社のエンドユーザーで、かつ契約条件も普通の請負とは違う契約で発注してくれないと無理です。

その上で、最新の開発支援ツールやプログラミング手法を使いこなし、常にコードの品質を保った状態で最速で走り抜ける必要のある人達が利用するものだと思います。

  • Gitなどのバージョン管理ツール
  • GithubなどのIssue/wiki管理ツール
  • Githubなどのコードレビュー管理ツール
  • Javadocなどのドキュメント生成ツール
  • maven/sbt/gradleなどのビルド管理ツール
  • Jenkins/TrabisCIなどのCIツール
  • Chef/Ansibleなどのオーケストレーションツール
  • Slackなどのコミュニケーションとボット管理ツール
  • 自動テスト・プロパティテスト
  • 静的型付け言語や高度な静的コード解析ツール

最低でもこの辺のところは押さえていることが前提としてあって、初めて有効活用される方法論なのではないかと思います。