概要
ソフトウェア開発者への割り込みの弊害について
※以降, ソフトウェア開発者=開発者と表現します。
前提
良く燃える話題なので石橋を叩いて叩き壊すレベルで予防線を張っておく。
バンバンバンバンバンバンバン バン バンバンバン バン (∩`・ω・) バンバン _/_ミつ/ ̄ ̄ ̄/ \/___/ ̄ ̄
ドゴォォォォン!! ; ' ; \,,(' ⌒`;;) !!,' (;; (´・:;⌒)/ ∧_∧(;. (´⌒` ,;) ) ' Σ(* ・ω・)((´:,(' ,; ;'),` ⊂ヽ ⊂ ) / ̄ ̄ ̄/  ̄ ̄ ̄\/___/ ̄ ̄ ̄
- システム開発会社の組織内の話。関係者は 全員ソフトウェア開発者 です
- コミュニケーションを軽視するものではありません
- 割り込みをしている人への 批判が目的ではありません
- 割り込みとその弊害に関する認識を共有し、 より良い環境を作り出すことが目的 です
ソフトウェア開発者の仕事
知的労働
開発者の仕事は知的労働です。
- 設計
- 実装
- テスト
- バグ対応
など、多くの仕事は 1 人で頭の中で思考を巡らせることで成果物を生み出します。
※もちろん 1 人の仕事だけではありませんが。
バグ対応の例
例えばバグ対応であれば、
- バグの対象
- システム構成
- 担当者
- ログ
- 環境
- プログラム言語
- 過去の経験
- バグが起きた状況
など非常に多くのことが頭の中にあり、
それらの素材を元に思考を巡らせ解決策を模索します。
割り込みの弊害
割り込みを行うことでどのような影響があるでしょうか?
先述のバグ対応の件で考えてみましょう。
まず、バグについて考えるために必要となる情報を資料や脳内から引き出します。
過去の経験と照らし合わせ、直感が働けば即座に解決します。
しかし、 未経験だったり過去の経験からの勘が働かない場合 は、
さらに 様々な情報を集め、整理し、仮説を立てる必要が出てきます 。
集中をしはじめ、情報を整理し、仮説を立てるまで 20 分かかったとします。
ここで割り込みが入ると、 最悪の場合 20 分が丸ごと無駄になります 。
割り込み時にメモを残すなど、損失を軽減することができたとしても、
再度集中し、バグの原因について思考を巡らせ 割り込み直前の状態になるまでには
更にある程度の時間がかかる でしょう。
一般的に、 難易度の高い業務 を行っている開発者への割り込みほど、
- 思考の量や難易度による影響範囲
- 開発者の単価の高さ
などにより、 損失がより大きなもの になります。
割り込みを費用に換算
前提
- 1 日 8 時間労働
- 割り込みは毎日同じ頻度で発生
1人への割り込み
仮に 時給換算 2,000 円 の開発者の作業に 1 日 10 回割り込んだ とします。
割り込みを行うと、割り込まれた際に 失った思考が 15 分 。
同じ水準まで回復するまで 15 分 かかるものとします。
- 1 回の割り込みにつき 0.5 時間( 1,000 円 )の損失
- 10 回割り込むと 5 時間( 10, 000 円 )の損失
割り込みによって 10, 000 円 の損失が発生しました。 時給換算 2,000 円の開発者は、 残りの 3 時間だけ成果を出します。
つまり成果は
2,000 円 × 3 時間 = 6, 000 円 相当の仕事量
だけになってしまいました。
1人への割り込みグラフ
10 日間の成果を比較してみます。
大勢への割り込み
騒がしい開発現場・響き渡る怒鳴り声などのように、
同じフロアにいる開発者全員に影響する割り込みが発生したとします。
割り込み頻度・復帰までの時間は 1人のケースと同じものとします。 フロアには 20 人の開発者がいます。
- 1 回の割り込みにつき 0.5 時間( 1,000 円 )の損失
- 10 回割り込むと 5 時間( 10, 000 円 )の損失
- 20 人分にすると 200, 000 円 の損失
つまり成果は
2,000 円 × 3 時間 × 20 人 = 120, 000 円 相当の仕事量
だけになってしまいました。
20人への割り込みグラフ
10 日間の成果を比較してみます。
割り込みの種類
割り込みの種類を二種類に分けます。
積極的割り込み
自発的に行われる割り込みを 積極的割り込み とします。
- 話しかける
- 電話を掛ける
- メッセンジャーで呼び出す
- メールを送る
消極的割り込み
意図せずに行われる割り込みを 消極的割り込み とします。
- 騒がしいオフィス内の環境
- コミュニケーション重視の職種のチームが近くにいる
- 怒鳴り声が響き渡る
- 騒音が大きい立地
- 大きな館内放送
- 人通りが激しいオフィスレイアウト
割り込み被害の軽減策
前段階
この記事の内容のような 割り込みの弊害を共有し、理解を得る。
積極的割り込みを軽減
- 話しかける場合
- 緊急度を加味して割り込む
- どうしても即対応が必要な場合のみ、即話しかける
- 緊急ではない場合は、相手の様子をみたり非同期の手段で割り込む
- メモを残す猶予を与える
- 「今お時間よろしいでしょうか?」を必ず付ける
- 有無を言わさず会話を開始しない
- 特に上司が強く出ると部下は断りにくいので、上の立場ほど配慮する
- 緊急度を加味して割り込む
- 非同期の手段への即返信を義務付けない
- メールやメッセンジャーへの即返信を慣習化しない
- 緊急の場合は、直接のやり取りや電話で割り込む
- リモート等、非同期の手段しか取れない場合は、一工夫必要
- 決め事を作る
- メール
- 量を減らす
- CC, BCC は本当に必要な場合のみにする
消極的割り込みを軽減
積極的割り込みへと比べ、 組織的・金銭的に対応が難しい ものが多い。
また、全員に影響する内容が多く、 コストはかかるが改善できれば効果も大きい。
決裁権を持つキーマンとの信頼関係を作っておくことで、
より良い環境を作ることができる可能性が高まる。
- 騒音等を加味したオフィス選び
- すでに騒音が大きい環境のオフィスを選んでしまった場合
- 防音対策を施す
- しつこく移転を促す
- 作業スペースをパーティションで区切る
- 指導のために部下を叱る際は場所を移す
- 人の流れを考慮したオフィスレイアウト
- ルール作り
- 集中して作業をする時間とコミュニケーションをとる時間を分ける
まとめ
ソフトウェア開発者は頭の中( = 目に見えない部分) で多くの成果物を作り出しているため、
割り込みの損失はついつい甘く見られがち です。
こういった内容を組織・チーム内で共有し、個別の問題点を改善し、
集中できる文化を作り上げることでより良い現場を作り出すべきでしょう。
これらの環境は一般的に 開発者が所属組織を選ぶ材料の1つ でもあるため、
採用向けのアピールポイント にもなります。
ソフトウェア開発は 「人」が命。
優秀な開発者を多く採用し、長く一緒に働くためには良い環境を作る必要があります。
現在だけではなく、未来のためにも不要な割り込みのない、
集中できる開発現場は重要です。