今回は、難しい話は小休止にして、世の「プログラミングは簡単」という言説について所感を述べたいと思います。
プログラミングは簡単なのか?
「プログラミングは簡単」
・・といったことを言っている(書いている)人をネットでよく見かけます。
プログラミングを教えることを商売にしている方が、プログラミングに壁を感じている人をプログラミングに誘うためにはある程度仕方がない言説なのかもしれません。
しかし、それをそのまま間に受けた初心者の人が「やっぱりプログラミングって簡単だった」と言ってるのには違和感を覚えます。
正直、プログラミングは、そんなに簡単ではないと思っています。
どのような人がプログラミングを簡単と言ってるのでしょうか?
HTMLやCSSをプログラミングだと思っている人
よくあるのが、HTML・CSSをやっている人がプログラミングを簡単と言ってるケースです。
HTMLやCSSは厳密にはプログラミング言語ではなくマークアップ言語です。
マークアップ言語は文書構造や文書の装飾について定義するもので、プログラミング言語のようにロジックに従って条件分岐、繰り返し処理、演算などをするものではありません。
コーディングのための思考は全く異なります。
プログラミング言語をどれか一つ習得していれば、他のプログラミング言語を覚えることは比較的容易ですが、マークアップ言語しか知らない人がプログラミング言語を習得するのは、それなりに労力が必要です。
※HTML、CSSが簡単だと言ってるわけではありません。
理解せずにコピペしている人
プログラミングをしていても、他者のソースコードを理解せずにコピペしているだけの人がします。
現場でもよくあることですが、プロジェクト内でコピペコードが蔓延することがあります。
むしろ同じような画面を作成する場合など上級者のコードをコピペすることを推奨することもあります。
大規模プロジェクトでは一定の品質を担保するために、ある程度仕方がないことではあります。
しかし、コピペしているだけで内容を理解してないプログラマーはプログラマーとしては一人前ではありません。
そのような人はコードの内容を理解していないため、ちょっとした変更にも対応できない場合があります。
フレームワーク上でしかコーディングしていない人
現代のシステムにフレームワークは不可欠です。
しかし、特定のフレームワーク上でしかコーディングしていないと、全体がどのように動作しているか理解しなくてもコーディングできてしまいます。
そのような人は自分の書いたソースコードがどのような条件で実行されるかも理解していない場合があります。
Webフレームワークで「ありがち」なのが、自分のコードがクライアントサイドで動いているかサーバーサイドで動いているかを理解していないケースです。
過去には、単純にJavaScriptだからクライアントサイド、Javaだからサーバーサイドと言語の違いだと思っている人もいました。
中にはサーバーサイドとクライアントサイドが何なのかも理解していない人もいました・・
プログラミングの上達にはキリがない
もし基本的なプログラミング技術を持っていたとしても上には上がいます。
私も現場でとてもかなわないような上級者を見ていたからこそ、とても「プログラミングは簡単」などと言えません・・
上達しようと思えば、学ぶことはキリがないです。
そして初心者と上級者では以下の3点においてそれこそ天と地の差があります。
コードがきれい
同じことを実現できるソースコードでも上級者と初心者ではコードの読みやすさに相当の差が出ます。
初心者のコードは読みにくく無駄に長いのに対して、上級者のコードは読みやすく短い傾向があります。
読みやすく短い方がバグも少なくメンテナンス性も良くなります。
コーディングが早い
プログラミングのスピードにも初心者と上級者では相当の差がでます。
初心者が1週間かかるようなコーディングでも上級者なら数時間で終わることもあります。
タイピングの速度はほとんど関係ありません。
上級者の方が、ハマる時間が短いこと、調べる時間が少ないこと、考えをコードに具現化するのが早いこと、同じことを実現するためのコードが短いことが大きな要因でしょう。
バグが少ない
ほぼ「コードがきれい」と同義ですが、上級者のコードの方がバグが少ないです。
きれいかつ短いからバグが入り込む余地が少なくなること、テスト前の動作確認の時間的余裕が大きいことなどの要因が大きいでしょう。
まとめ
以上、「プログラミングは簡単」という言説について所感を記載しました。
例えると、世の中の「プログラミングは簡単」という言説は、卵焼きを作って「料理が簡単」と言ってるだけのような気がします。
やはり、なんでも極めるのは、難しいという当たり前の結論になるのかと・・