技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

プログラミングの経験と信仰

経験は全ての物事の元となるもので、とても重要なものだと思う。
でも、経験を『信仰』にした瞬間、それは害悪となる。

プログラマは誰しも経験した記憶があるだろう。
「それならコレでもできるよ」と長ったらしい作りをした人を。
かく言う私も、これをかつてしたことがある。今では恥じるばかりだが。

あるコボラー達の話をしよう。
これは大学時代の友人から数年前に聞いた話である。

COBOLメインだった会社が生き残りをかけて、Java を主軸にしようとした話だ。
一般の方に説明すると、COBOL 言語とは、全くプログラムを知らない人用(事務方用)に設計され、非常に少ないルールでのみ記述するプログラム言語だ。(今は若干機能が増えた方言がいくつかあるが、やはり先細り中)
ここだけ聞くと何が間違っているかわからないだろうが、ルールが少ないと言う事は覚えやすい反面、できることが少ないと言うことだ。これは平仮名だけで小説を書くに等しい。当然分量は増え、冗長で誰も読みたくない。

ビジネスは変化する。それはアプリだってバージョンアップする必要があると言うことだ。
ひらがな(COBOL)の小説に続編を書くなんて、浪費でしかない。人件費だけがかかりすぎるのだ。
だが、現場は猛反発。「それならCOBOLでもできる!」の一点張りだったそうだ。
最終的に「Javaやるか会社辞めるか選べ」と言って、トップダウンで強硬策までしてやっと乗り換えたと言う話だ。

彼らにとって、これまでの成功経験は絶対的な正義であり、変えるべきではない『信仰』だったと言える。
それを変えようと言うのは、彼らにしてみれば『背信行為』なのだ。

彼らが間違っていたことは、成功体験が信仰となり、経験と混同していたことだ。

経験は猛毒だ。
たとえどれだけ理不尽であり得ない論理であっても、経験してしまえばそれはその人の真実となる。
まして成功体験は、その真実を信仰に補強してしまう。

経験とは応用し、より良い結果を生み出すものだが、信仰とはそれを受け継ぎ、変化を妨げる。
変化も良し悪しはあるだろう。だが少なくとも現代のプログラミングに信仰は無用だ。

オープンソースがメジャーとなり、GitHub がそれを加速させた結果、『誰かの経験』は短期間で幅広く共有でき、『皆の経験』でドンドン進化する。
それは個人程度が持つ『経験』など、霞むくらいの経験の集合知だ。
個人の成功経験で書いたコードと、多くの人の成功経験、失敗した経験をフィードバックして書かれたコード、価値はどっちにあるだろう?

『経験』とは『知っている事柄だから、新しいやり方も咀嚼して理解できる』だったり『知っているからより良くする方法を考えられる』。『知っているから効率のいい運用を考えられる』と言うことではないだろうか?
それは変化を促すものであって、変化をせき止めるものであってはならない。

信仰を捨てれないなら、COBOL のように先細って茹でガエルになりましょう。

しかし、この業界は変化が早い。
実は上記の理由以外にも『変化をせき止める。押し返そうとする』勢力は実はいる。
それも入社仕立てや、30代の若い世代にも大量にいる。

IT の変化が早すぎて、追従し切れない人たちだ。
多くの場合、仕事で使った、説明された技術のみ覚えていく人たちだ。

追従できなくも、仕事を変える事ができないのはある種、可哀想ではあるが…
彼らに言える事は、仕事の外でも勉強するしかありませんねと言うこと位だ。

仕事で使う技術についていけないなら、仕事の外でも学ぶ事だ。
良書と言われる本を読み、知っている人の講義を聞き、有名なOSSのドキュメントを端から端まで読み、コードを読み、テストを読もう。
どう勉強していいかわからない人もいるだろう。コードが自分の知識と離れすぎて読めない人もいるだろう。どの本を読むべきか分からない人もいるだろう。
そんな時は、年下だろうが後輩だろうが頭を下げて教わろう。僕は下げた。凄い奴は凄い。割り切ろう。

好き嫌いの問題では無い、プライドが許さないと言うなら、猫のモフモフより価値のないプライドは猫にでも食わせればいい。
気位の高い猫のことだ、きっとお気に召してくれるはずだ。

IT はルネサンス期。
天動説を強要したキリスト教は地動説への転向を余儀なくされた。
人の造物ごときに神はいない。『信仰』を捨てる心の準備は?皆の経験は本当に『経験』か?