【QUORA】プログラミングを学ぶメリットやデメリットは何ですか?

いろいろ考えがあってQuoraを撤退しようと思っている。

会員を削除すると回答が消えるらしいので、それなりのエネルギーをかけたエントリ、人気のエントリ、Quora外でも意味のあるエントリ等をこちらに移しておく。

プログラマじゃなくて普通の人という前提で考えてみます。

まずメリットですが、一番大きいのは「プログラムの気持ち」がわかるようになれることじゃないかと思います。

今時はプログラムそのもので作られたもの以外に、いろんな機械の中にプログラムが入っています。そういったものが一見不思議な動きをしてしまった時、「なるほど、そーゆー事情か」みたいな納得が出来るようになります。設定メニューの「辺境」の機能の実装が雑なのを見ると、プログラマの苦労とか納期との戦いとか、そーゆーものに思いを馳せることが出来たりします。あるいはマニュアルにない機能を使いたい時、「きっとこうやったら出来るだろう」という勘が働いたりします。そういった「感じ」は、プログラミングが出来る人なら、なんとなくわかったりすることもあります。

また、プログラムが「魔法」の一種でなくなります。

一見「魔法」のように見えることであっても、それらがごく当たり前のことの積み重ねの上に構築されていることがわかれば、「魔法」ではなくなりますね。そうすると、「怖い」という類の心理的な忌避感は随分減ると思います。使うことにある程度の自信を持つことが出来ます。

デメリットは、メリットに挙げたようなことが出来るようになる結果、プログラムを「舐めて」しまうことじゃないかと思います。

なまじ中身がわかってしまっていると、「どうせこうなんだろう」的な感覚になり、それを元に操作してしまうことが増えます。ところがまぁ、世の中はそこまでは論理的でも甘くもなく… という失敗につながります。

あるいは、自分で内部の実装を勝手に想像して、「これはこうなっているはずだ」という前提で、操作したり、異常の報告をしたりしがちになります。特に何か異常が起きた時の報告で、勝手な実装の憶測から必要な情報を省くというようなことをしてしまいます。それは、なまじ知っていることによる弊害です。

次のデメリットとして、プログラマを舐めてしまうことです。

プログラムが書ける人は、つい自分が書くことを考えてしまいます。そうすると、「こんな簡単なことがなぜ出来ない」という類の思考をしてしまいがちです。でも、現実のプログラムでは「簡単そうだけどいろんな事情で出来ない」ことがたくさんあります。でも、その部分をすっとばして「プログラマのレベルが低いからだ」と思ってしまいがちになります。「そんな簡単なことを」と思えるようなことでも、実はそんな簡単じゃないってことはいっぱいあります。これは技術そのもののこともあれば、「費用」のこともあります。

あるプログラムが自分の思う最先端の技術で作られていなかった時、「レガシーなプログラマ達だな」と馬鹿にしてしまうこともあります。特に歴史的な背景とか無視してそういった舐めたことを言う「悪いオタク」はいっぱいいます。「日曜大工」レベルの技術からガウディを批判するようなことをしがちになります。

まぁ、これらのことは全て、「プログラミング」に限らず存在しうることなので、何かを学ぶことのメリットとデメリットは、たいていこんな感じになるんじゃないかと思います。