ある日の我が家
娘(10歳)「ねぇ、パパ」
ワイ「なんや、娘ちゃん」
娘「わたし思うんだけど」
娘「わたしって空気が読めないから、プログラマーに向いてるよね?」
ワイ「え・・・どういうこと?」
ワイ「確かに娘ちゃんはプログラミングのセンスが凄くあるけど」
ワイ「それは『空気が読めないから向いてる』って訳ではないんちゃう?」
ワイ「プログラマーのお仕事って、チーム開発やからさ」
ワイ「空気を読めないのは普通にデメリットやろ」
娘「そんなことない!空気を読めない人こそ向いてるはず!」
娘「パパの𝕏でアンケートして調べてみてよ!」
ワイ「まぁいいけど、結果は見えてるで」
ワイ「95%くらいの人が『向いてない』に投票すると思うで」
ワイ「カタカタカタ・・・ッターーーン!」
ワイ「アンケート投稿したで!」
ワイ「お、𝕏に通知が来とる」
ワイ「アンケートの結果が出たみたいや」
ワイ「なんと、ちょうど引き分けかいな」
ワイ「意外と『向いている』派も多いんやな」
娘「チッ・・・引き分けか・・・」
娘「でも、負けてはないってことだよね」
ワイ「う〜ん、ホンマかなぁ」
ワイ「空気を読めないことは、単にデメリットやと思うけどなぁ」
ワイ「ワイなんかも、前に病院で『ASD傾向がある』って言われたことがあるんやけど」
ワイ「それもあってか、空気を読むのがかなり苦手で」
ワイ「それで苦労しまくってるもん」
娘「へぇ〜、パパも私と同じASDなんだ」
ワイ「いや、傾向があるって言われただけやけどな」
ワイ「所謂グレーゾーン的な」
娘「それで、パパはどんな苦労があるの?」
ワイ「やっぱ人間関係かなぁ」
ワイ「昔っから、空気を読まずに自分の話ばっかりしてもうたり」
ワイ「余計な発言をしてもうたりして」
ワイ「知らん間に嫌われとったりするわ」
娘「ああ〜、パパってそういうことしてそう」
ワイ「せやねん・・・」
ワイ「大人になった今でも、たまにそういうことをしてしまうねん」
ワイ「だから、プログラマーの仕事っていうか、もう人生自体が苦手やわ」
ワイ「だってさぁ、空気が読めないってことは」
ワイ「ワイにだけ見えてない文脈とか」
ワイ「ワイにだけ見えてない変化があるってことやろ?」
娘「まぁ、そうだね」
ワイ「そんなん、ズルいやん」
ワイ「定型発達者ズルいやん」
ワイ「ちゃんと、ワイのやり方が嫌なら嫌って言うてくれたらいいのに・・・」
ワイ「気づかへんような曖昧なサイン出されても困るわ・・・」
ワイ「いや、気づけへんワイが悪いんかなぁ・・・」
娘「分かる。わたしもASDだから」
ワイ「人生にもエラーメッセージがあればいいのに・・・」
ワイ「ワイがなんか文脈を見誤ってたり、相手が不機嫌になり始めてたりしたら」
ワイ「エラーメッセージを表示してくれぇ〜〜〜!!!」
ワイ「そんな仕組みがあればいいのにぃ〜〜〜っ!!!」
娘「パパ、それだよそれ」
娘「それこそがプログラマーに向いてるんだよ」
ワイ「え、どういうこと?」
文脈や副作用の明示を求める傾向
娘「要するにパパはさ」
娘「空気読めてなくて失敗した!っていう学習データをたくさん積んだことで──」
「ワイが気づいてへんだけで、何か見落としてる文脈があるんちゃうか・・・?」
「ワイの知らん間に、何か状態の変化が起こってるんちゃうか・・・?」
「それを知らないのは危険や・・・!」
「それを知りたい・・・失敗する前に知りたい・・・」
「そんな方法があったらいいのに・・・!」
娘「──っていう、言わば文脈や副作用に対する警戒心」
娘「そんな脳内モデルがパパの中に醸成されたわけじゃん?」
ワイ「せやな」
ワイ「全てを可視化したい・予測可能にしたい、という強い警戒心は持ってるわ」
ワイ「いっぱい失敗したから」
娘「めちゃくちゃ大事だよそれ」
文脈も副作用も、全てを予測可能にしたい
娘「全てを予測可能にしたい・可視化したい」
娘「それって、システム開発をするうえで凄く大事な考え方だと思うの」
ワイ「おお、それはそうかもしれへん」
娘「だって、プログラミングのコードが動作する時って」
娘「たくさんの文脈があるじゃない?」
娘「例えば、ユーザーのデータをサーバーから取得しようとするだけでも──」
- サーバが停止中かもしれない
- 通信エラーが起きるかもしれない
- 該当のユーザーが存在しないかもしれない
- 取得中に時間がかかるかもしれない
- 上手く取得できるかもしれない
娘「↑これだけ色んな文脈があり得るじゃん」
娘「そして、それぞれの文脈によって、すべきことが違うでしょ?」
ワイ「せやなぁ」
ワイ「それに応じて、エラーメッセージを表示するのか」
ワイ「ユーザー情報を画面に表示するのか」
ワイ「ちゃんと処理を分岐させなあかんよなぁ」
娘「そうそう」
娘「データが取得できてないのに、画面にデータを表示しようとしたら」
娘「画面が真っ白になっちゃうことだってあるし」
ワイ「せやな」
娘「そういう、文脈に応じた必要な処理を、忘れずにしたいよね」
ワイ「ほんそれや」
娘「それって、関数型プログラミングの思想にも繋がるじゃん」
ワイ「あー」
ワイ「確かに関数型言語は、パターンマッチ等を使って」
ワイ「各ケースに応じた処理を書かんと、コンパイルが通らへんもんな」
娘「そう」
娘「Option
型とかMaybe
型とかResult
型とかEither
型とかがあって」
娘「失敗するかもしれない、ってことを型で明示してくれる」
ワイ「つまり『失敗する可能性』がコードの中にちゃんと可視化されるわけやね」
ワイ「そして、それに対応したコードを書かないと、型エラーで教えてくれる」
ワイ「実行時にエラーが出るんやなくて、コードを書いてる時点でエラーを出して教えてくれるのがええよな」
娘「そうだよねぇ」
娘「後悔を先に立たせてくれるって感じだよね」
娘「文脈をうまく扱う機構が言語レベルで用意されている」
ワイ「ほんまや」
ワイ「人生にも欲しかったやつや・・・!」
娘「実際、関数型言語から生まれた思想が、別の言語にもどんどん取り入れられてるから」
娘「めっちゃ優れてるし先を行ってるってことだよね」
ワイ「せやなぁ」
ワイ「きっと関数型言語を生み出した人たちも、見えない文脈に苦労して」
ワイ「全てを予測可能にしてハックしたい、って思ったのかもなぁ」
娘「それに、副作用を静的解析できるEffect systemなんてのも」
娘「同じようなモチベーションから生まれたんじゃないかなあ」
ワイ「なるほど、副作用を静的解析」
ワイ「そんなんもあるんや」
ワイ「メッチャ良さそう」
ワイ「それも人生に欲しかったやつやん」
まとめ
- 見えにくいものを警戒する気持ち、大事
- 全てを予測可能にしたい気持ち、大事
- 発生し得る文脈や副作用を可視化するの、大事
- 実行する前に静的解析するの、大事
- 発生し得る文脈や副作用を可視化するの、大事
- 全てを予測可能にしたい気持ち、大事
ワイ「なるほどなぁ・・・」
ワイ「副作用だらけの諸行無常な世界の中で」
ワイ「見えない文脈に苦しんできたからこそ」
ワイ「それらを明示しようとする設計に執着を持つことができるんかもな」
娘「うん」
娘「それに、空気が読めないことによるメリット、まだまだあると思うよ」
ワイ「ほんまかいな」
娘「例えば、空気を読まずに余計な行動をするからこそ──」
- 余計な行動によって、多種多様な失敗と成功を経験できる
- 学習データの幅が広いため、脳内モデルの精度が上がる
娘「不安感・警戒心が強いからこそ──」
- 「このエッジケースで失敗するのでは?」という警戒ができる
娘「明確に言語化してくれないと理解できないタイプだからこそ──」
- 自分が文章を書くときは、凄く明確に言語化する
ワイ「あぁ〜、確かにワイの同僚にも」
ワイ「空気は読めないのに、技術記事を書かせると天才的な奴が何人もおるわ」
ワイ「SNSでもよう見かけるわ」
娘「まぁ、わたし達のそういう特性が」
娘「よろしくない結果に繋がることも沢山あるとは思うけど」
娘「一見ネガティブな我々の特性も、場所や場面によって輝くはず!ってこと!」
ワイ「せやな!」
その日の夜
ワイ「はぁ、娘ちゃんに言われて気づいたけど」
ワイ「多様な人材が組み合わさって成果を出すのが大事なのかもなぁ」
ワイ「みんなが必ずしも空気を読まなくても」
娘「そうだよ」
娘「むしろ、画一的な学校教育が」
娘「わたしに定型仕草を押し付けてくるから──」
「みんな普通にできてるのに、わたしだけ普通にできない」
「わたしの努力が足りないんだ」
「もっと、泣きながらでも頑張って」
「間違ってるわたしは、正しい世界に合わせなくちゃ・・・!」
「我慢しなくちゃ・・・我慢しなくちゃ・・・」
「逃げちゃダメだ!逃げちゃダメだ!逃げちゃダメだ!」
娘「──なんて過剰適応して病んじゃうんだ!」
娘「誰もが人生一周目だから、人それぞれ辛さに違いがあるなんてことも気づけないし!」
ワイ「う〜ん、一理あるかも」
娘「だから今日は学校行かない!」
ワイ「まあ、今日は休もか・・・」
〜おしまい〜
こちらの記事もよろしくやで😃
Views: 0