🔍

「アジャイル開発」を自分なりに理解する

2021/01/11に公開

2020年を振り返って

2020年の業務を振り返って何が大変だったか思い返してみると、新入社員に向けた研修だった。
グループ会社含め3名に研修を実施したのだが、全員が専門外(文系専攻)の分野からの入社。
1から(いわゆる"Hello World!"から、変数の宣言から・・・)手取り足取り教える必要があった。

しかし、1度教えたことが中々再現できなかったり、進捗が芳しくなかったことから、少しキツく指導してしまう場面もあった。
そんな中、自分の指導の仕方の問題なのか、何がいけないのかと自問自答を繰り返していた際に、以下の1冊の本に出会った。
エンジニアリング組織論への招待

この本では個人・チーム・部署・会社といった単位でそれぞれどのようなことを心得るべきかについて述べられ、それを踏まえて「アジャイル開発とはこのようなものである」と結論付けられている。その内容を自分なりに解釈して理解する。

概要

  • 「アジャイル開発」に入る前に押さえておきたいこと
    • 人間の不安や心理的安全性について理解する
    • 「不確実性」について理解する
    • 「通信不確実性」並びに「情報の非対称性」をなくすにはどうするべきか
  • 「アジャイル開発」とは
    • 「アジャイル開発」の誤解
    • アジャイルな方法論

要約

「アジャイル開発」に入る前に押さえておきたいこと

人間の不安や心理的安全性について理解する

心理学的に、人間は不安に対して恐怖を覚え、本能的に回避行動をとるとのこと。
回避行動とは様々で、単に物事から逃避するだけでなく、自分の思考を歪めて解決したように思い込んだり、物事に対して怒りをぶつけたり、などである。
(※この「怒り」という行動については後述する)

そうして、人間は心理的安全性の高い場所に居続けることを本能的に望む。
心理的安全性とは、自身のあらゆるステータス(キャリア、イメージなど)に否定的な影響を与える恐れるがなく、自身を表現して働けることを指す。

ではなぜ人は不安を覚えるのか、それは「不確実性」のあるものに対峙するからである。

「不確実性」について理解する

「不確実性」は大きく分け、「環境不確実性」(未来、ある事象に対する結果)と「通信不確実性」(他人との意思疎通)に分類される。
さらに「環境不確実性」は「目的不確実性」と「方法不確実性」に分類される。

「目的不確実性」や「方法不確実性」は、将来に対する展望や、それに対する具体的な手段が見えていない時に生じるもの。
言い換えると、全く新しい事象に対して自身の知見がないための不安である。
従って、経験の積み重ねによって徐々に解消されていく事が多い。

経験を積み重ねるには、実際に行動を起こす必要がある。
その際、ゴールまで一気に進もうとすると、失敗して引き返したり軌道修正する際のリスクが高すぎる。
そのため、小さいステップに分解して考える(いわゆるマイルストーンを置く)。
そして、その行動を起こした結果から、最初に置いたマイルストーンを見直し、次の手段の方向性を決定する。
このループを繰り返し行うことが重要(最初のビジョンとのブレを見直すため)。

「通信不確実性」並びに「情報の非対称性」をなくすにはどうするべきか

次に、「通信不確実性」については以下の3つで構成される。

  • 他者理解 … 自分以外のことを理解できない
  • 伝達 … 意思疎通が正確に到達しない
  • 成果 … 予測された結果に結びつかない

これらの障壁が存在することで、「情報の非対称性」(自分もしくは自分以外しか知らない)が生じる。
では「通信不確実性」や「情報の非対称性」はどのように解消していくべきか。
それは単純で、「コミュニケーションを取る」ことである。
片方しか知らない情報があるのであれば、それを共有し意識を合わる必要がある。

更に、互いにしか知らない情報や知見が交換されることで、
物事に対する実現への可否や解決策の良し悪しの判断が出来るようになる。
その際の考え方のポイントが3点。

  • 非論理的(感情的)になる瞬間を認知する
    • 誰しも先入観や偏見を持っているため、事実を正しく認知できない
    • 認知の歪みが存在する(0か1でしか考えられない、主語が大きい、1つの属性に執着して考えるetc)
    • 感情や行動の矛盾を、認知を歪めて解消するケースがある
  • 「経験主義」と「仮説思考」
    • 経験主義 … 結果(事実)を積み重ねて情報源とし、その結果から次の選択肢を決める
    • 仮説思考 … 事前の情報から全体像を想定し、検証する
      • リアルオプション戦略 … 不確実性の高い事象に対して、小規模の対策を取って効果を測り、その後の行動を選択する
  • 「システム思考」
    • 広い視野で全体像を見極め、より正解に近い一手を設定する(全体最適解を選択する)
    • 複数の要素、並びにそれらの関係性によって構成されることを意識する

「アジャイル開発」とは

「アジャイル開発」の誤解

システム開発の現場で元来主流となっていた「ウォーターフォール開発」に相対した存在として認識されがち。
しかし、あくまで複数の計量開発プロセスの総称であり、開発指針である。
つまり、1つの物事に対して仮説検証とフィードバックを繰り返し、開発精度を高めるための思想である。

アジャイルな方法論

ここで言う「方法論」とは、具体的な手段ではなく、方針であることに注意する。

  • 不安をチーム全体で共有するなどして、対人リスクを取りやすくする
  • 情報の非対称性を減らす為に、少人数の対話を重視する
  • チーム全体の目的に対して、自分がすべきことを考える&専門外の事柄にも関与する(させる)為に、役割を分けない
  • 不確定な事象に取り組んで、得られた結果を知識に変える
  • 仮説思考とリアルオプション戦略によって、意思決定を遅延させる
  • チームが抱える不安に対して、「成果を出すまでの時間」と「一定時間内に出した成果」のどちらに重きを置くべきか考える

最後に

この著書の中で、特に私が個人的に学びとなった事柄について簡単に纏める。

怒りとは、恐怖や危機から、本能的に取る攻撃的または防御的行動

自分ないしは自分が大切にしているモノ(アイデンティ)を脅かされたことに対して発動する。

コードレビューは、人格的な指摘であると思い込みやすい

その個人が書いたコード(アイデンティティの一部に相当)に添削するため。
「なぜそう書いたか?」を深掘りしていき、指摘ポイントを気づかせる。
「こういう理由でこうする方が良いが、どう思うか?」と尋ねて考えさせるようにする。

不確実性の高いタスクから取り組む

複数のタスクが存在した時、不確実性の低い(工数が見えやすい)タスクに均一化できれば正確なマネジメントが出来る。

コミュニケーションでは、「発信」「到達」「受信」「受信の正確性」の確認が必要

「受信」及び「受信の正確性」は相手に依存するため、情報の非対称性が存在していないか確認することが重要。

権限の委譲には、権限の付与だけでなく、付与された側の責任(付与した側への説明)が伴う

物事を依頼する側は、依頼される側へ権限を付与している。
その際、権限の付与の度合いに応じて、適切な説明(結果の報告)を行う必要がある。

Discussion