見出し画像

非プログラマーの祈り 〜会話にあってプログラムにないもの〜

このテキストは、チラシの裏 Advent Calendar 2017の11日目です。

目的

このテキストを書く理由について述べる。
まず一番の動機としては、より優先度の高い様々なタスクへのやる気が出ないことが挙げられる。
次に、これは非論理的な主観であるが、さくとも氏は私がアドベントカレンダーに参加することを望んでいるような気がしたからである。

さくとも氏と知り合った経緯については、もはや記憶から概要すら引き出すことができなくなってしまった。
しかし、ある時点からさくとも氏に関心を持つようになった。
Twitterにおいて相互フォロー状態になってからしばらくした後、DMかあるいはメンションを送信するにあたり、
Screen Name(現時点において:@418iamteapot)を入力したのであるが、そのSNが比較的好みであったためである。
それ以降さくとも氏は私の記憶に好意的に、印象深く居座り続けている。

この"418 I am Teapot"の内容に関することは技術的な話題であるのでこのテキストでの記載は避けることとする。

それでは本題に入っていこうと思う。

コミュ障プログラマーでも会話したい!


私はコミュ障である。それも、喋りたいけど口頭で喋るのが苦手なコミュ障である。
俗に言うネット弁慶というやつにも該当するだろう。
ただ、「相手の顔が見えないから好き放題言うことができる」といった悪いイメージは持たないで欲しい。
対面していたとしても、チャット等テキストの方がいくらか会話しやすいのである。

例えば、「幼児はアナログテレビの砂嵐の音やビニール袋の音で泣き止む」という話を周りがしているとする。
みんな知っていると思うが、胎内の音に近いからという説がある。
「なんでなんだろうねー」
あ、知らない人がいたか。誰か知っている人がさらっと言うだろう……。
「赤ちゃんはビニールの音好きなのかなーw」
ん?ここにいる人は誰も知らない……のか?何と言おうか……。
「またこの音かーって思ってたりしてw泣き止んでやろうーとか思ってたりw」
ピンクノイズは胎内で聞こえる血流の音に近いと言われていて……。
割り込みたいわけでもないから次に沈黙が訪れたら喋るかー。
「でもすごいよねー、こんな泣き止む音見つけられるなんてー!w」
……もしかして、皆事実を知りたいのではなくて、楽しく会話がしたいだけ……?
この後話題が変わり、結局私がこのことを発言することはなかった。

私の脳内では何が起きていたのだろうか。
まず基本的に、会話は聞いているが脳がシャットダウンされた状態になっているような気がする。
もっと正確に言うと、アウトプットのための部分を起動するのに時間が掛かるのではないか。
それにより、発言しようと思ってから実際に発言できるまでに時間が掛かってしまい、運が悪ければ話題が変わってしまう。
また、話題が変わったと感じてから発言を諦めるのが早すぎるのかもしれない。

発言に時間が掛かってしまうことに拍車を掛けているのが、発言前に文章を正確に組み立てようとすることだろう。
短期記憶が弱いこともあり、口に出しながら一貫性のある文章を組み立てていくことが難しく感じる。
会話なんてぐちゃぐちゃでいいと思う人もいるかもしれないが、
私は完璧主義に近いものがあるため、理路整然とした発言にこだわってしまう。
その結果、発言前に一旦脳内で文章を整理して検証する段階が追加され、発言に時間が掛かってしまうのだと思われる。

私は、感情や思想を人と分かり合うことはできないと思っているため、会話は事実を伝達するための手段としか捉えていない。
一般的な会話と私の会話との差は一体何なのだろうか。
一般的な会話では、相手の趣味嗜好を推測しながら、相手の気分を損ねないように楽しもうとしているのではないか。
相手のことなど完全には分からないのだから、間違ったことを言わないように祈りながら。

私の会話にはきっと祈りが足りない。無機質な情報交換になってしまっているのだろう。

非プログラマーの祈りプログラミング


あなたは学校でのプログラミングの教育現場を見たことがあるだろうか。
あるいは、プログラミング初心者のデバッグの手伝いでもよい。

「プログラミングができない」、としか形容のできない人間が存在する。
自ら望み、もしくは必要に迫られてプログラミングを勉強することを試みた者の中で、
教えるものに驚きを与えるほど、ひどくプログラミング能力のない者について分析する。
彼らは教科書を読み、写経をし、出された課題に取り組む。
……そこまではいいのであるが、私が問題にしたいのはその問題への取り組み方、課題解決のプロセスである。

「英語ができないから」……彼らの中にはそのような言葉を免罪符として使おうとする者も存在する。
プログラミング言語は語学ではない。コンピューターとの会話等では断じてないのである。
プログラミングを生業にする者の中にも英語ができない者もいる。
英語ができなくても、プログラマーはプログラミングができるのである。

プログラミングにおいてプログラマーと彼らの間に一番差が付くのはエラーが出たときだと思う。
プログラマーも人間であり、ミスを犯す。プログラマーであってもエラーは良く見るのである。
プログラマーにとって、エラーメッセージは友達である。道路の案内標識のようなものであり、問題解決への近道である。
英語ができなくてもそれに変わりはない。
エラーが何行目のどの辺りで発生したのか。ソースのその周辺を見て、周りと違う箇所はないか。
エラーメッセージの中に見たことのある英単語はないか。分からなければ、先頭の1文等を検索してみる。
プログラマーはそうやってエラーと戦い、エラーと共にプログラミングをしていくのである。

一方、彼らのエラーに対する反応はどのようなものであろうか。
彼らの一部には、エラーを見た途端に思考が停止しているとしか思えない者が存在する。
あるいは、エラーに親を殺されたかのようにエラーを恐れ、一刻も早く視界の外に追い出そうとする。
そして彼らは自分の書いたコードを見つめ、どこがダメだったのか必死に探し始めるのである。

ちょっと待って欲しい。彼らはプログラミング初心者ではなかっただろうか。
初心者がコードだけを見て問題点を修正することは効率的であるだろうか。
私にはそれは不可能に近いように思える。

彼らのこの非効率な行動の根底にあるのは一体何なのだろうか。
私は以下のように推測した。

彼らにとってプログラミングとは、会ったばかりでお互いに良く知らないコンピューターくんとの会話なのではないだろうか。
相手の趣味嗜好を推測しながら、当たり障りのない言葉でお願いをして、相手の感情を損ねたら自分の発言を見直す……というようにも思える。
そんなのは正しいコンピューターとの接し方ではないと思う。それはプログラミングというより、祈りに近いのではないか。
コンピューターは祈っても願っても、優しく接しても、機嫌を取ろうとしても思った通りには動いてくれないのである。
やるべきことはただ1つ、コンピューターに動いて欲しい通りに指示を出すだけだ。

プログラミングは、コンピューターとの会話ではないのである。
決まりきった仕様があり、自分のしたいことを淡々と記述して、毅然とした態度でメッセージのエラーを解消すればよい。
会話ではなく、一方的な指示である。矛盾点があったり抜けがあったりすれば聞き返されるから、正しく指示し直せばよい。

もしあなたがプログラミング初心者であれば、上記のことを良く理解して欲しい。
もちろん、既に理解しているなら素晴らしいことである。そのまま続ければよい。
そして、何か問題が発生したとき、10分悩んでも解決できないエラーに遭遇したときには、遠慮なくプログラマーを頼って欲しい。
プログラマーは人間だから、会話と丁寧なお願いと、感謝の気持ちを忘れないように。

まとめ


人間と機械的な会話をする私と、コンピューターに祈るプログラミング学習者。
お互いにお互いの苦手分野で悩んでいる。
人間誰しも得手不得手がある。
私は人間との会話を諦め、彼らはプログラミングを諦めれば良いのだろうか。

無理に不得意なことを続ける必要もないが、やりたければ訓練するのも手だろう。
私は不自由なく会話ができるように日々訓練していきたい。

お願い


このテキストはこれで完結ですが、もし気に入っていただけたら以下の購入ボタンからお金をくださると励みになります。
まだテキストを書くことに慣れておらず、気に入っていただけるかも分かっていないので、全文を無料で公開しています。(投げ銭スタイルです。)
また、「サポートをする」ボタンから任意の額を支援することも可能です。

気に入った所や、特に改善した方がいいと思ったところ!参考にするので、感想やコメントを書いていただけるととても喜びます!

ここから先は

78字

¥ 500

この記事が気に入ったらサポートをしてみませんか?