ついに厨二病になったんか?違います.
チーム開発や長期的なプロジェクトにまったく触れることなくWebアプリケーションエンジニアになった自分はソフトウェア開発の中で見積りや仕様を詰めていく箇所が一番苦手でした.新卒4年目になっても未だに,プロジェクトというものを成し遂げていくということについては,まったく自信が持てずにいたのです.
- とりうる仕様がいくつかあって,どれでも実装できそうだがどうすればよいのかわからない
- この見積りで本当に良いのかという不安
- 本当にこれで良いのかという漠然とした不安
- ひょっとして自分はこの仕事に向いていないのではないかという不安
- そんな中同僚は次々とプロジェクトを導いていく...今年のボーナスが不安だ...
- などなど...
こういった悩みがいつもべったりとくっついて,心は沈みがちでした.
不確実性の闇を祓う
そこで,考え方を変えてこの状況を打開しようとしました.そもそも,ソフトウェア開発というものはこの世に無い,正解の無いものを作ることですから,不確実性との戦いでもあるのです. そこで不確実性,すなわち闇に怯えてしまっては意味がない.わかんなくて当然だ,だったらその闇を祓えば良い,という考え方にシフトすることにしました.
すると,ソフトウェア開発に対して前向きになることができたように思います.不確実でリスキーなことは,それを恐れるのではなく,確実に近付くようにしていけばよいのです.仕様があいまいだったりどちらでも良いような場合には,エイヤとどちらかに決めてしまって制約条件を狭めることで,全体としての挙動を確定させていく,といった考えもできるようになりました.
不確実性に対処する,というのはこれまでも何度も聞いた概念なのですが,闇を祓うという言葉が非常に自分にとってしっくりきました(かっこいいしね).まだ確定していることが少ないプロジェクトを導くということは,暗闇で不安な状況そのものです.そこに光を灯して暗闇をなるだけ減らしていけば,不安は勝手に減っていきます.自分は困ったとき,「闇を祓え!」と自分に呼び掛けています.
困ったことに,人間がまず感じるのは「不確実性があるぞ」ということではなく「不安だなあ」です.不安だからどうすればよいか分からない,という発想は間違いです.不確実な物事を目前にすると人間は不安になる,というのが正解です.そして不確実な事柄を明にしていくことで,不安は勝手になくなってしまうのだということも分かりました.
この闇を祓うという行動は,ソフトウェアエンジニアの必須スキルというか,大事な仕事だなと思うようになりました.
不確実性に対処する方法(例)
不確実性に対処するために,例えば次のようなサイクルを考えることができます.
- 不安なこと,心配事を書き出す(自動的に,不確実な物事が現れる)
- 不確実な物事を確実な物事へとゆっくり動かしていく
- たとえば,「なんとなく分かった気になっているけれど,具体的にどういう仕様なのか,実際はどう動くのか」を突き詰めてみる
- 新たな不安や心配事が生まれるので,これも確実に近付けていく
- 不確実度が許容できるほど小さくなるまでこれを繰り返す
大事なのは,本当にさっぱりどうすれば良いか分からない場合は,好きにどっちかに決めてしまうことです.そうしてより詳細について考えてみると「やっぱこっちじゃダメだな」といったことがいずれ分かったりするものです.これはプロジェクトが後退したのではなく,不確実性を減らしつつ選択肢を削ることができた,と肯定的に考えることができます.
まとめ
- 闇を祓いましょう
- 闇を祓うことで一見計画が後退したように見えることもありますが,大事なのは不確実性が小さくなったことです
- やっていきましょう