この記事はハワイアンAdvent Calendar 2020 12日目の記事です。IntelliJ IDEAのARM Supportのtest buildがきましたね。いやーうちのMac miniでも早く試したい。逸る気持ちを抑えながらこのブログを書いています。
11日目において、演繹的共通性についての話をしました。この演繹的共通性を導き出すというのは本当に難しい。ドメインモデリングというのは、帰納的共通性による導出でない限り、正解のない旅になる事が普通です。当然迷子になりますし、自分や社会と向き合う事になったり、哲学書に手を出したり、風呂でシャワーを流しながら「アー……ア…アー…」と声にならない声を出す日が続く事もあるでしょう。そういった辛みというのはチームで共有して、休日をしっかり休むのが重要です。哲学書は捨ててください。参考になる哲学書はなくもないですが、ただの沼なので基本的におすすめできないし、哲学書を前提にする行為自体が敷居を不当に高める事に繋がってしまうので私はおすすめしません。勝手にやってください。
これはあくまで自分のケースですが、その辺の辛みを乗り越えるというかなんというか辛みを軽減したり、ソフトウェアや周辺技術に起こる変化を受け入れて自分のものにする為の技術という所でU理論が割と役に立ったので、まあ誰かのきっかけになればいいな程度で紹介をしておきます。この辺の手段というのは性に合うかみたいなのがつきものなので、各位色々試すのが良いです。加えて、この手の話というのは基本的に胡散臭い話になりますが、わたしは逆に他の人がどうしてるんだろうなーというのを知りたい所があるので、胡散臭い手段とその感想をお待ちしてます。
あんまり深入りしないぐらいという意味で(専門家の方からしたら他になにかおすすめがあるんでしょうが)自分にとってのとりこれは以下2冊です:
- 人と組織の問題を劇的に解決するU理論入門
- まずはこの本でU理論の基礎を理解する
- U理論[第二版]――過去や偏見にとらわれず、本当に必要な「変化」を生み出す技術
- ざっと流しつつ「社会的病理、負のベクトルのUカーブ」を理解する
U理論自体は人や組織の問題において新しい解決策を生み出す為のプロセスを指していますが、その中で人の学びの過程についても論理立てて記載してあります。たとえばですが、他人の技術ブログを読んだり、使用しているライブラリや言語に新機能が追加された時、とりあえず試したり、「ふーんそうなんだ」と流したり、斜に構えたり、「いらないよ」と否定したり、いろんな受けとり方があると思います。U理論ではそういった受け取り方に対する「立ち位置」の定義と、定義の背景にある人間の心理について、実例を元に詳細に記載されています。加えて、各立ち位置からの転換に対するアプローチについても触れられています。アプローチについては全て適切なものかと言われると全てを実践してないので分かんない所はあるものの、まあ手段の1つとしてやってみてもいいかもなみたいな内容になっています。
本の紹介はこれくらいにしておいて、自分が設計を探求する中で迷子になった時には、取り組んでいる対象に対する自分の立ち位置を把握して、立ち位置に対する適切なアクションを起こす事が性にあってた訳です。結果として飲み込みはなんもしてないときよりは早くなったし、より適切な設計だったりオブジェクト表現を導きだす際の苦悩ってところがあんまり苦悩じゃなくなってきた感じはしてます。それでもまあ元々がすぐ斜に構える性格で社会的病理の方によく陥ってしまうので、それを止める意味でもこの本の内容を思い出したり、定期的に読み直したりしています。ソフトウェア開発に留まらず(そもそもソフトウェア開発者のための本ではないですが)学びのある理論だと思います。