サッカー日本代表のみなさん、たくさんの感動をありがとうございました!!

さて、この記事ではサッカー日本代表のここまでの戦いについて振り返ってみるのではなく、仕事をする中で割とあるあるネタかもしれない事柄について、簡単に考えてみようと思います。なお、この記事は GMOペパボエンジニア Advent Calendar 2022 の 6 日目の記事になっています。

考えてみる

仕事をする中で割とある事柄として、今回考えてみる対象は、タイトルにあるとおり「問題解決に必要なこと」です。仕事は問題解決がすべてではありませんが、解決しなければならない問題が大小問わず目の前に立ちはだかるようなシーンは、仕事をする中で結構頻繁にあるのではないでしょうか。

私たちは解決が必要な問題が目の前にあるとき、あれこれ試行錯誤しながらなんとかその問題を解決しようとするわけですが、なかなか上手くいかないこともあります。以降では、上手くいかないケースとそれを解決するにはどうしたら良いのだろうかというのを考えてみたいと思います。

まずは、上手くいかないケースの例を挙げてみます。

  1. 問題と思っていたことが実は問題ではなかった。
  2. 問題を解決したら別の問題が発生した。
  3. 問題を解決したと思っていたのに解決できていなかった。

みなさんも仕事をする中で似たようなシーンに遭遇したことがあるのではないでしょうか。私も社会人になってから幾度となく遭遇してきましたし、やらかしてきました。どうしてこういうことが起こるのか考えてみます。

問題と思っていたことが実は問題ではなかった。

これは、問題が何であるかを正確に把握できていないことが原因に思えますね。「この問題は解決しなければならない」という大前提で、自分のもとにやってきたりするようなケースで発生しがちかもしれません。解決しなければならない問題であると判断したのが自分ではないようなケースですね。こういうとき、私たちは若干盲目的に「じゃあ、頑張って解決するぞ!」と張り切って問題解決に取り組みがちです。

ところが、実はその問題は今解決する必要がない問題であったり、そもそも解決する必要がないもの、つまり、問題ですらないといったこともあるわけです。このようなケースに対処するためにも、問題が何であるかを正確に把握することが大事になってきそうですね。具体的には、問題に関する情報収集を試み、問題を正しく分析することによって、今解決する必要があるのか?そもそも解決する必要があるのか?といった点の精度を上げることが重要と思われます。

問題を解決したら別の問題が発生した。

これは、問題の全体像を捉えられていないような場合に発生しそうですね。例えば、あるチームやある部署が問題だと思っていることを解決したのに、他のチームや他の部署でそれに起因する問題が発生してしまうといったケースです。会社の規模が大きくなるほど発生しやすくなりそうな印象ですが、規模の大小に関わらず、局所最適解と呼ばれるものを問題解決に用いてしまうと、このような事態になってしまいがちです。

このあたりについては、広木大地『エンジニアリング組織論への招待』に対処法も含めて詳しく書かれていますので、一読してみるとより理解が深められるかもしれません。

また、こうした事象は、ソフトウェアエンジニアリングにおいては、リファクタリングでのアンチパターンとしても挙げられています。リファクタリングをすることによって新しい問題を発生させるようなことをリファクタリングとは呼ばないといったことをどなたかが言っていたと思うのですが、思い出せないので思い出したら補足しようと思います。

問題を解決したと思っていたのに解決できていなかった。

これは、発覚したらへこむケースですね。主な原因として考えられるのは、完了条件の定義が正しくなかったなどでしょうか。完了条件の定義を誤ってしまうと、当然ながら完了していないことが完了と判断されてしまうので、問題が解決されていないまま残ることになってしまいます。

アジャイル開発のコンテキストなどでは、完了というのはリリース可能な状態のことであるといった定義が一般的ですが、ここでいう完了はそれとはまた別の定義になりそうですね。そもそも完了の対象が異なりますので混同してはいけない点ではあります。

どうしたら正しく完了条件を設定できるでしょうか。大前提として、基本的な網羅性を満たすことは必要でしょう。加えて、上述した問題の正確な把握も必要になってくるように思います。問題を正しく把握できていないと、その問題が解決されたのかを正しく評価することはできませんし、問題に対する解法も誤ったものになってしまうでしょう。また、これも上述しましたが、問題の全体像を捉えるということも必要になりそうです。問題を解決する作業者という視座・視野になってしまうと、そのスコープでの完了条件を設定してしまいがちです。このような場合、問題の本質や全体像を正しく把握した場合の完了条件よりも完了が手前になってしまうイメージがあります。手前というのは、自分が見ている範囲よりも先に本来の最適解があるという関係性を表現するために使ってみました。

まとめ

まとめると、この記事で考えてみた問題解決に必要なことは以下になりそうです。

  • 問題は正確に把握する。必要ならばそのための情報収集・分析を行う。
  • 上記に加えて問題の全体像も把握する。局所最適解だけを求めてはならない。
  • 完了条件を正しく明確に設定する。これには上記 2 点がどちらも必要。

当然ながら、実際には問題となるケースやそれらに対する対処法は、上記以外にも多種多様に存在するわけですが、今回考えてみたことを手始めに実践するだけでも、私の日々の仕事に良い変化を生むことはできるのではと考えています。まずはこれらのことを改めて意識しながら仕事に取り組んでみようと思います。