yu-tarrrrの日記

完全に個人の趣味でその時々書きたいことを書く

アジャイルマニフェストの一部分について考えてみた

はじめに

アジャイルマニフェストとは

  • アジャイルソフトウェア開発宣言の方が聞き馴染みがあるかもしれないが、今から20年くらい前にpublishされたもの
  • 下の文章のこと
私たちは、ソフトウェア開発の実践
あるいは実践を手助けをする活動を通じて、
よりよい開発方法を見つけだそうとしている。
この活動を通して、私たちは以下の価値に至った。

プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、

価値とする。すなわち、左記のことがらに価値があることを
認めながらも、私たちは右記のことがらにより価値をおく。

引用元

今回考えたこと

  • たまに読み返していて、「包括的なドキュメントよりも動くソフトウェアを」と「契約交渉よりも顧客との協調を」と「計画に従うことよりも変化への対応を」については、ふむふむって感じで前から読んでたのですが、「プロセスやツールよりも個人と対話を」についてはなんか腹落ち感がなかった
  • ですが、今回は「プロセスやツールよりも個人と対話を」について、なんか理解できたので言語化していこうと思った

プロセスやツールよりも個人と対話を

  • 本来は「Individuals and interactions over processes and tools」というのが原文
  • もやもやしてたポイントが、「プロセスとツール」が「個人と対話」の対比構造?比較対象?になっていることが、イマイチ理解できずにいた

「プロセスやツールよりも個人と対話を」の裏側にありそうなこと

  • これを紐解いていくなかで、アジャイルウォーターフォールを比較するとわかりやすいと思った
  • ウォーターフォールは、なるべく属人性を排除する。だから、マニュアル化するのであって、テスト項目書を作って誰がテストしても同じ結果が得られるようにするし、誰が使っても同じようにバグが見つかるようなツールを求める(これは言いすぎかも)
  • アジャイルは、人の違いに理解をおく。あなたと私は違いますよね、だから対話をして理解をしていきましょうという考え方。なので、全員同席して色んな人が対話をするようにしている。
  • 例を用いると、ウォーターフォールだったらバグがあったときに、それを誰でもが検知できるような仕組みを考えると思う。(たぶん)
  • アジャイルだったら、仕様についてテストエンジニアと洗い出すとか、コミュニケーションで防げたよねみたいな対話をすると思う(してる)
  • なので、アジャイルウォーターフォールは根底のところで、プロジェクトにおける人への考え方が違うんだろうなーと思い、そこが起因してるんじゃなかろうかというのが今回の仮説
  • 炎上してるプロジェクトに人を投入するか否か、というのも一定上記の違いからきてるんだと思う。
  • これはどっちが良いとかではなく、あくまでも考え方の違いなんだろう

一方で

  • アジャイルが属人性を排除してないかというと、それは違う
  • ペアプロで知識を伝播してるし、コードの共同所有みたいな考え方がある
  • なので、両者ともに属人性を排除しようとはしていて、属人性を排除するためのアプローチの仕方が違うだけって考えるのが一番しっくりくる

要約すると

  • 「プロセスやツールよりも個人と対話を」については、属人性を排除するためのアプローチの仕方がアジャイルウォーターフォールでは違うんだろうなと読んでいて思った
  • 人の違いに注目して、対話を繰り返すことで知識やノウハウの伝播をしていくアジャイルに対して、人という要素をなるべく除外して誰がやっても同じような結果を得られるような仕組みやプロセスを構築するウォーターフォールという考え方の違いなんだと理解した。

おしまい