フリーランスのエンジニアをやってます。
スタートアップや中小規模案件の多くで、アジャイル開発が採用されています。
一介のエンジニアとして、こういった開発案件を受ける時、クライアントや仲介から、
「アジャイル開発の経験は、ありますか?」
と聞かれます。
アジャイル開発・・
その度、思うのです。
この人達、なんとなくの雰囲気で、「アジャイル開発」という言葉を使っていて、「アジャイル開発」が何なのか分かっていないんだろうな。(私も含めてですが。。)
誰もアジャイル開発を理解していない
「弊社の開発案件では、アジャイル開発を採用しています(キリッ)」
「アジャイル開発」と言えば、専門性のあるプロっぽく聞こえますよね。
では、そういった人に「アジャイル開発」がなんたるかを聞くと、次のように考えているはずです。
アジャイル開発とは、エンジニアに無茶振りしても、臨機応変に対応してくれる開発手法
これは、アジャイル開発の現場を多く経験してみて、あながち間違っていないですね。
この手の開発プロジェクトでは、ほとんどが、仕様が定まっていない、あるいは、頻繁に仕様変更が発生するので、エンジニアが振り回される機会が少なくありませんから。
アジャイル開発は、技術よりも体力やメンタルが必要
アジャイル開発を調べてみると、以下の意味でした。
一部抜粋します。
アジャイル開発とは
- 人間・迅速さ・顧客・適応性に価値を置くソフトウェア開発
- チーム主導で設計・実装・デプロイを短期間に繰り返してユーザーが得た価値を学習し適応する、すなわちトライアルアンドエラーで開発が行われる
(Wikipediaより)
あらためて、こうして説明を読むと、納得できる部分もありますが、
現場経験者からすると、いささか、理念や理想主義的な印象を受けますね。
確かに、この説明通りの開発手法で、継続的にパフォーマンスが発揮できれば、それは凄いと思います。
でも、そんな素晴らしい現場は、「アジャイル開発を採用しています」と主張している開発プロジェクトの半分にも満たないでしょう。
大半のアジャイル開発のプロジェクトでは、「まだ仕様がブレている状態です。まあ、よしなにやってくださいよ」という感じです。
もちろん、アジャイル開発の意味など分かっていません。
本来の意味
チーム主導で設計・実装・デプロイを短期間に繰り返してユーザーが得た価値を学習し適応する、すなわちトライアルアンドエラーで開発が行われる
現場の意味
エンジニアに無茶振りしても、臨機応変に対応してくれる開発手法
仕様未確定、あるいは、頻繁に仕様変更が発生する
現場感では、アジャイル開発の本来の意味と実際の意味が、乖離しているように感じます。
そして、このようなアジャイル開発って、炎上案件になりやすいんですよね。
「アジャイル開発の経験ありますか?」
そう尋ねられたら、
私は、技術力うんぬんの話ではなく、
(無茶振りをこなせるくらい)体力やメンタルにおいて、十分タフですか?
と解釈するようにしています。