皆さんこんにちは、プロクラスの野間です。
他人から聞いた話ですが、この業界では「プログラマは諦めが悪い」と思われているそうです。はじめて聞いた時には「そうかなぁ?」と思いましたが、歳を取ってきて多分これのことかな?と思うようになったので今回はそのお話を少し。
世の諦めが悪い方、ひょっとするとプログラマに向いているかもですよ?
■いきなりガラッと話が変わります
プログラムは「文章」ですので「話す」のと異なり「文字」以外の一切の付加情報はありません。以前書いたかもしれませんが、目の前で話していればジェスチャーや表情でも結構伝わりますよね?それよりも電話の方が格段に意思疎通の難易度はあがりますが、まだ声のトーン等でも付加情報を加えることが出来ます。
ですが、文章はそれらが全くありません。文法も厳密ですので(人が会話に使っている言語のような自由度は全くありません)、プログラムは「勘」や「感覚」で書くことはできません。「こう」書いたら「こう」動く!とわかっていないとまともに動くプログラムは書けません。
逆に書くと、思い描いたように動くプログラムが組めるのは論理的に物事が考えられないと不可能なのです。
このまま話を進めてもプログラムをご存じない方にはピンと来ないと思うので、少し例を変えます。
ピタゴラ的装置を思い浮かべてください。あれは勘で作るものではなく「何をどうするとどうなる」事を計算して作るものです。「玉が落下して下にあるものに当たる」玉の大きさにもよりますが、1cmもずれたら装置は失敗に終わるでしょう。
ここで質問です。
玉の落下位置が安定せず、落下させるたびに落下位置が2cmも3cmもバラバラになるようならどうしましょう?
※前提条件として、困ったことに、落下した時の勢いのまま下にあるスイッチに当たらないと、スイッチが稼働しないようです…
多くの方が何らかの対処を考え付いたかと思います。思いつきましたよね?(笑)
もちろんこれは、大掛かりな装置の一部で、ここまで作るのに何日程もかかりっきりで作りました。対処が思いついたあなたは、対処することなくここで諦めますか?
説明の都合上、前に「ついたて」を立てることにしましょう。ところが、今度は勢いがつきすぎた時、跳ね返ってしまいます。
何か対処は思いつきませんか?「跳ね返った手前にもついたてがあれば?」等でしょうか。
■日々対策を考える訓練をしているようなものです
さて、ここで少し質問を変えます。
今、2つの問題に直面し、2つの解決方法を考えていただきました。それ「以外」に何か「手」は思いつきませんでしたか?ここでの例のように「跳ね返りすぎる」等、無理にでも思いついた「手」に何らかの「失敗」する条件は思いつきませんか?
プログラマはこのような「手」を沢山思いつきます。
私はこれを「引き出しの数」と呼んでいますが、この「引き出しの数」は経験によりどんどんと増えていきます。何しろ、作るものは毎回この世に存在しない新しいものです。毎回条件が異なるので、今回は「ついたて」で解決したとしても次回は上手くいかないなんてことが普通です。
さぁ、無理にでも別の「手」を考えないといけません。と考えると・・・如何です?「引き出しの数」が増えますよね?プログラムを沢山組んでいる人はこじつけでも色々なことを考え付きます。
Q:事故を無くすにはどうしたら良いか
A:車を無くせば良い
なんてことを真顔で1案として提案します。(プログラマには必要で重要な1案なのです)
ここまでを踏まえて・・・話を戻します。
■プログラマが諦めが悪い理由?
例えば・・・
1)問題発生!買ってきた道具の使い方がわからない!
2)ピキーン!あれこれ使い方の候補を思いつく\
さて、あなたは解決策が思いつくのに何もせずに諦めますか?
おそらくプログラマの多くが「とりあえず思いついた『手』を全部試す」派なのだとおもいます。だって、それで問題が解決するんですから。
「『手』を全部試す」を第三者的目線で見ると「失敗しても、失敗してもチャレンジしている」ように見えます。
如何です?傍から見たら諦めが悪いように見えますよね。思いつく限りを試しても、何かを調べてでも解決策を・・・な方もいますが、これはおそらく別のお話が必要になります。
また機会があれば(笑)