プログラミングにおいてちゃんと設計しないといけないのは、側機能追加に於いて要求を出す側の関心の中心が新しい機能に有るのに対して実装する側は、それと同じくらい既存の機能との整合性を取ることに置かれるという、その非対称があるからなのですよ
— magnoliak🍧 (@magnolia_k_) November 22, 2023
いろいろな設計方法論とか、良いコードを書くためのお作法とか、最近だと書籍もたくさん出ていて、無限に勉強することができるのだけど、勉強ばかりしている訳にもいかず、われわれは目の前の課題を解決するためのコードを書いたり、納品するためのコードを書いたり、なんのために作っているのか分からないプロダクトのコードの断片を指示通りに書かされる日々と向き合っていかないといけない、という現実があるわけで、つまり時間は有限なのです。
この関心の非対称性というのが色々なところに在って、これをなるべく合わせていくことで、関心のズレを無くすための仕掛けが設計方法論なんですよ
— magnoliak🍧 (@magnolia_k_) November 22, 2023
という中で、いつも気にしていることと言うか、忘れちゃいけないなーと思っているのは、その方法論が「何の問題を解決しようとしているのか?」というところで。
人の関心は偏在している、人と人の関心の対象には非対称性がある……そんな状況の中で、その関心の方向性を合わせていくために方法論が有って、それは「ほんのちょっと目線をずらしくれるもの」くらいに捉えておくといいんじゃないかなと思っている。
ただ、カリスマみたいな人が上手く全体をまとめてくれて、進むべき道をバシ!っと示してくれる時も有って、それはそれで凄いけど、再現性がある場合とない場合があるからなー。
でもたまにこの非対称な状態を腕力でねじ伏せて統合していくんですよ
— magnoliak🍧 (@magnolia_k_) November 22, 2023
たまに間違った方向に行くこともあるんだけど、ズレてるより間違っていてもいいからみんな同じ方向、価値観の方がいいよね
プロジェクトにおいては、関わる人々がその立場や、価値観は違えど、とりあえず同じ方向を一回は向いておくことが大事なのだけど、勝手に同じ方向を向くことは全体に無くて、「ここが大事ですよー注目ー」と言って、目線を向かせるために権威に頼った方が手っ取り早いときもあって、そんなときに「ほら、この本にこんなやり方が書いてあるよ」っていうやり方が有効な場面ってあるんですよ、万能ではないけどね。
だから、方法論だけを取り上げて、良いとか悪いとか、時代遅れとか、言ってもなーって思った祝日の午後なのです。
まぁ、でも、あひるさんのこのツイートがもっと良い言語化だった。
とりあえず抽象化って単語使ってたけど、関心の抽出とかそういう言葉の方が感覚的に近い気がする
— 吉田あひる (@strtyuu) November 23, 2023