会社の1on1があって、 id:yigarashi と30分くらい話したら面白い話がいろいろできたので紹介する。掲題ではエンジニアと書いているが、別にウェブ系ソフトウェアエンジニアに限られた話でもないし、ホモサピエンス全員におすすめ、考える葦の皆様におすすめです、くらいのニュアンスである。
熟考すると良い
熟考すると良い答えが出る。当然のことである。しかし入門者に熟考しろと言ってプロになるかといったら難しい。
今期も例によってゴリゴリScalaを書いたりTypeScriptを書いたりPerlを書いたりしていたが、アーキテクトとして中規模プロジェクトを引っ張る機会がいくつか与えられたし、今も引っ張っている最中だ。反省点としてあるのが、具体的にどういうプロジェクトかはいったん措いといて、その進み方に着目すると、一筋縄でうまくいったり、いかなかったりしたことだ。
どういう風に考えると良いんでしょうね、とざっくり話を振ったら、熟考すると良いですよ、という言葉が出てきて、それはそうと思った。しかし、一般のホモサピエンスと比べると自分はどちらかといえば考えているほうではある。一日以上考えているということはあまりないが、「良く考える」にも筋の善し悪しのようなものがあるのだろうか。
一方で、社会は熟考を許さないであろう、ということも思った。
正解の濃度
そうこう対話を進めるうちに、正解の濃度という言葉が出てきた。正解の濃度を上げると良いというのである。正解に対して濃度という言葉が適用されているのがとても新鮮で面白みがあった。ふつうわれわれが正解について考えるときは確度といった言い方をすることが多いのだが、濃度である。
濃度という言葉には様々な含意があって良い。すくなくともソフトウェアエンジニアリングの文脈において、正解とはシステムの一点に集中するものではなく、システムに浸透して効果を引き起こしたり抑制したりするものである。濃度の高い正解は、望む効果を効率的に得る一方で有害な事象を遠ざけうる。そういった含意がうまく表現できているなと思った。
この答えはどのくらい濃い正解になっているだろうか、ということを考えるのが良かろうと思う。
強いロジック
では正解の濃度の裏付けとなるようなものは何か?という問いでは、強いロジックツリーがそれではないか、という話を聴くことができた。自分は割と直感を信用してエイッとやるタイプで、かつ文筆家みたいなタチなのだが、 id:yigarashi は理詰めの人である。普段我々が同じソフトウェアを読み書きしていても、見えているものは全く異なるだろう。何かをどうする、といった決定をするとき*1、かなり強い論理的理由付けをしていくことで、それがもたらす正解の濃度は上がっていくのではないか、ということである。
たしかに無闇矢鱈にシステムを弄っても正解には至れないだろう。そもそも何が正解なのか分からないだろう。強いロジックを要請することを習慣化することで、自然と筋の良いやり方ができるようになるのではないか。
副次的に、強いロジックは思考をうまく圧縮するという効果をもたらすと思う。例えば究極的には、ロジックだけで成り立つような仕組みがあるとき、なぜそうなっているのかは完全に説明できるはずである。思考を圧縮できるとき、同時に脳に載るメンタルモデルはどんどん大きくなりうるし、すると視野が広がるという結果をもたらすかもしれない。
論理的飛躍を最小化するということ
ここで最初の熟考という話に戻ってくる。熟考とは何か?という問いに対する一つの正解は、論理的飛躍を最小化することではないか、という話を二人でした。この表現の良いところは、「熟考」という言葉よりもはるかに解像度が高く、アクションに移しやすいことである。数学的証明のようにロジックツリーを緻密に組み立てるには、飛躍を避けることをいつも意識しておくことが重要そうだ。
という話をしていたら30分あっという間に終わってしまった。また次回。
別の友達から自分にとって熟考とはなぜ?を突き詰めていくことだ、という話を聴くことができた。
*1:仕事で発生するあらゆる行為は決定の性質を孕んでいる