プログラミングはスキルじゃなくて習慣
今回は以前書いたプログラマーにアルゴリズム脳はいらないの続編です。
健康が技能ではなく状態であるのと同じく、プログラミングもスキルを指すのではなく状態を指しているだけなのかもしれない。
ビジネス書あたりでは「健康になる技術」的な本はありそうだが、健康そのものはただの心身の状態に過ぎない。
しかし、健康を維持するための知識は存在しており、栄養バランスを考えた食事、十分な睡眠、適度な運動、これら3つを愚直に守れば、まぁおおよそ健康を保つことはできる。
それらを健康のための技術やスキルと呼んでもいいが、じゃあ、そのスキルを身につけるとはどういうことかというと、それは継続した実践である。
食事、睡眠、運動を継続して続けているから健康を保てる。
逆にそれらのどれかが疎かになれば何かしら健康に悪影響を及ぼすことになる。
一般的な認識でいうとプログラミングは知識やスキルにカテゴライズされる概念である。
しかし、プログラミングはどちらかといえば健康と同じく、ただの自身の状態に過ぎないのではないか。
コンピューターサイエンスやプログラム言語という知識体系はあるが、それをすべて頭に入れておかなくてもプログラムを書くことはできる。
プログラムを書くこととプログラムの知識は別であり、知識がないからといって全くプログラムが書けないわけじゃない。(もちろんあるに越したことはないが)
前回書いた通り、分からなければググったり試行錯誤を繰り返せばいいだけである。
プログラミングの本質はどちらかといえば知識ではなく試行錯誤の過程にある。
技術書100冊分の知識を持っていたとしても、一行もプログラムを書いたことがなければ、そいつにプログラミングスキルなどないし、プログラマーを名乗ることもできない。
逆になんの知識はなくてもコードを書いて動かせば、それはプログラミングである。
そういうわけで、プログラミングの本質は知識ではなくコーディングの試行錯誤にあるといえる。
プログラミングスキルとは即ち、コードを習慣的に書ける事実そのものを指している。
自分は一応国家資格を持ってはいるけど、資格があるからプログラマーなのではなく、実際に仕事でプログラムを書いているからプログラマーなのであって、仕事がなくなれば資格があってもただの中年ニートになるだけだ。
ここまで書いてきて、自分の中にある一つのモヤモヤが解消した。
プログラミングはスキルじゃなくて習慣なのだとしたら、世に蔓延っているプログラミングスクールとは一体何なのか?
そう、あれは教育機関というよりスポーツジムに近い。
健康を維持するためにジムに通うのと同じように、プログラミングをする自分を保つためにプログラミングスクールが存在しているのだ。
プログラミングスクールの先生のことをメンターと呼ぶ習慣がずっと腑に落ちなかったけど、今まで書いてきた理屈により合点を得た。
それは、スクールが知識を習得する場所じゃなくて、心を折らずに試行錯誤を続ける習慣を身につけるための場所だったからだ。
スポーツジムでは、器具の使い方とかトレーニング方法とか基礎的な知識はトレーナーから教わることができるが、それはあくまでも筋トレのための土台であって、スポーツジムは筋トレをする場所である。
スポーツジムに知識を求めていく人はいない。
プログラミングスクールもそうで、あそこは知識を習得する場ではなく、プログラミングをする場を提供しているだけに過ぎないのだ。
「プログラミングを習得する」という概念がそもそも間違っていて、プログラミングはただひたすら「やり続ける」だけのものでしかない。
やり続けた結果、動くコードが書き上がり、システムが開発されたり運用されたりする。
その結果を客観的に評価して「プログラミングを習得した」ことにしているだけだ。
健康と同じくプログラミングは身につけるものじゃなくて「保つ」ことにその本質がある。
健康に関する商品や情報は世の中にあふれているのに、未だに病人であふれている現代社会と同じく、エンジニアリングに関する情報があふれているのにエンジニアが不足している現状は、互いに知識ではなく実践の不足の結果である。