読んでもらえるかどうかわからないが,一応IDコールしてみる。> id:NOV1975氏
この記事,
という点において,「ウォーターフォールとアジャイルはどう違うのか」という問題が混然一体となって語られてて,ちょっとわかりにくい気がした。
そこで,この3つの論点について,自分なりの理解でアジャイルとウォーターフォールの違い(あるいは違わないこと)を書いてみる。
まず,OJTとOffJT(研修,勉強会等)の組み合わせで育てる,というレベルの話では,ウォーターフォールもアジャイルもあまり違いはない。
また,スキルの広げ方についても,ウォーターフォールとアジャイルであまり違いはないと思う。NOV1975氏は,
プログラミングって世界はわりと想像できるんですよね。もうちょっと大きいアーキテクチャの話とか、業務要件の落としこみの部分とかをどういうプロセスで身につけて成長していくんだろうか。
と書いているが,アジャイルでも,最初は既存のものの改修から始めてもらって,新機能の追加(ここで要件落としこみが入る),新プロダクトの設計(ここでアーキテクチャの話が入る),みたいに,徐々に範囲を広げていく感じだと思う。
ただアジャイルのチームでは,最初の「既存のものの改修」の段階から,運用の稼働を減らすことを意識し,テストやデプロイの自動化をしてもらうことになるはず。運用を意識する,という点では,運用系の機能追加(例:監視機能の強化)もやってもらうことになる。これをどこに入れるかは悩ましいけど,比較的初期段階で経験することが多いのでは。
手法レベルでは,アジャイルで特徴的なのは,OJTの手法としてwonodas氏の言うところのレビューやペア・プログラミングを重視している点ではないかと思う。このへんはwwolf氏のあげた「アプレンティスシップ・パターン」にもあるのではないかと思うが,職人と弟子の関係で,日頃の行動の中である種「背中を見せる」感じで(教えるというより)学ばせる感じになると思う。
これは(NOV1975氏自身が書いている通り)ウォーターフォールもアジャイルも変わらないと思う。顧客に提示する価格の中に教育も含まれることになる。
ここで重要なのは,アジャイルの場合教育は顧客にとっても価値が大きい点だと思う。なぜならアジャイルのチームは,システムを開発するだけでなく,運用も行うのが基本。運用の中で継続的に改造や機能追加を行うことで,顧客にとってのシステムの価値を高めていくのがアジャイルの真の意義。そういう活動を続けるために,教育に投資することは顧客にとっても価値があるはず。
話はそれるが,ここで少し面白いなと思ったのは,「属人性」の話。アジャイルのチームでは「属人性」を避ける文化があると思う。だがそれはチーム内の話であって,外から見ると同じチームに開発と運用を依頼することは,チームとしては「替え」がききにくくなる気がする。そのあたりを現状どう解決しているのかはちょっと興味がある。
これはもう,向いてない人はチームから出て行ってもらうのがお互いのため,というのがアジャイルのやり方だと思う。というかそもそもそういう人をできるだけ入れない。なぜならチームの文化が壊れるから。
正直,そういう人でもウォーターフォールだと活きる道がある,というNOV1975氏の考えには納得できないが,なんとか活かしたいという心情は理解できる。なので少し考えてみたけど,人手の作業が最後まで残りそうな QA (Quality Assurance) やマニュアル作成あたりに行ってもらうしかないのではないだろうか。個人的には,向いてない人が向いてない業界にいるのは本人のためにもならないとは思うけれど。
増田からidコール飛ぶようになったのか