抽象化して要求し、具体化して応える
## TL;DR
抽象化された要求を解釈して具体に変化させるのがエンジニアをはじめとする技術者の重要な仕事のひとつである。具体化まで要求者に任せると要求側にとってのメリットがなくなり、技術者に任せなくてもいいじゃんとなる。
## 要求の多くは抽象化されている
顧客からサービス提供者、上司から部下、レビュワーからレビュイーなど、あらゆる構造において抽象化された要求は存在する。なぜなら、依頼したいのは本質的な改善であり、本質というのは抽象化されているものだからだ。
本質的な改善を依頼するのは、いくつか理由がある。
まずひとつに、被要求者に自立させるためである。例えば、経営層から各部署には利益を最大化する、あるいは損失を最小化するように指示を出すとする。これのときもし、具体的な売上目標や削減目標、方法論などに踏み込みすぎてしまうと、部署の裁量や現場の創意工夫を阻害する恐れがある。実際に、目的が忘れ去られいつの間にか手段が目的になるなんてことはよくあることだろう。そのため、経営層は全体の方向性を示し、各部署においてはその抽象的な指示をもとに最適な手段や手法を考案することが求められる。被要求者が自己の責任と判断で行動し、成長するように促すためには、本質となる情報を伝えて被要求者に解釈してもらい、最適解を考え行動させることが必要なのである。
加えて、先に挙げた理由よりも大きな理由として、具体的な説明をすることで要求者側が得られるメリットが少ないことが挙げられる。通常、要求者は抽象化された要求を具体化するコストを他の人に受け持ってもらうということがメリットである。コストというのは、具体化する知識や能力の習得コストや具体化自体にかかる時間である。もし要求者が被要求者に対して、具体的な説明をしてしまったら、知識や能力を習得している前提となり、時間を書けて説明という具体化作業を行わければならない。これでは、コストを転嫁するためにコストを背負う、自転車操業のような状態になってしまう。
## 技術者は具体化をする仕事である
前項で、要求というのは抽象化されているものだということを書いたが、技術者は抽象化された要求を自身の専門性を用いて具体化するための専門職である。これを放棄して、具体的な要求がほしいというのは甘えであることが多いような気がしている。(例外がないとは言わない)仮に、具体性が非常に高い要求が合ったとして、それを粛々と行うことができるとする。その場合、実際に作業を行う人は「技術者」ではなく「作業員」と呼ぶべきだと考えている。なぜなら、自身の能力を使った思考が介入する余地がないからだ。もし技術者として価値のある仕事をしたいなら、要求の詳細度に文句を行っている場合ではなく、自分の能力を用いて要求者の本質的な課題を解決することに取り組むべきだ。
### 要求者が本質を捉えきれていないことはある
もちろん、要求者が本質を捉えきれておらず、自身が抱えている課題が何なのかを正しく理解できていないことはある。その場合は逆に、被要求者が自身が提案できる解決策を抽象化して伝え、要求者と焦点を合わせる必要がある。
## まとめ
技術者は抽象と具体の反復横飛びをすることで価値を出せる。具体化した話しかできないのもダメだし、その逆ももちろんダメ。場面や文脈に沿って使い分けていく訓練が必要。
## 参考