プログラミングの文化的側面

綺麗ではないコードを目にしたとき、厳しく指摘することに意味がない気がしてきました。
プログラム≠数学
新卒社員を(長い目で)眺めていると、理数系の学部学科出身の方が伸びる傾向が強い、という訳ではないことに気付きます。 良いコードを書く能力は、理数科目への才能とイコールではないと経験的に感じていますが、同様の印象を持っておられる方がいたのでご紹介します。
回答に合う例を挙げると、どうしても苦手、というのとはちょっと違いますが、数学的能力は間違いなくとびきりなのに、ある程度の規模以上のものは実働するところまで行かない、という人は結構います。200行くらいまでならまさに芸術・斬新な発想、というコードが書けるのですが、1000行くらいになるとなんとなく甘い感じの楽観論が頭をもたげ始め、さらに大規模になると「いや、さすがにそれでは動かないだろう」というようなところが入ってきます。
プログラム=言語
プログラムとは目的(=システム)を書き表す言語です。 数学的な記述もありますが、それだけではないシステム全体を書き表すためにデザインされたものです。
そう、プログラミング言語とはプログラムを表現することに特化した「言語」なのです。
プログラミング言語を解釈して実行するのはコンピュータですが、この言語は人間に向けて書くものであるという意識がないと良いプログラムが書けないのではないか、というのが最近のワタシの思いです。
上達への道
プログラミングは文章の作成に似ています。 なので一足飛びで上達することは難しいのではないかと思います。
よく、プログラミング上達のために写経しろ、と言われます。
黙って写経は意外とね、勉強の方法としてはかなり上位でいい感じ。
また、コードリーディングもよく言われますね。
- 技術の知識が、自然が広がる
- 開発するサービスやプロダクトの「色」が見えてくる
- (運用保守の場合は特に)跳ねる範囲を理解できる=バグを減らすことにつながる
これって「読み」「書き」ですよね。 言語なので、よく読みよく書いた分だけ成長するって国語や英語の勉強と何らかわらないということです。
良い作品に触れる
かつて先輩に聞いた話を思い出します。
面接のときに必ず聞く質問がある。 それは「一番好きな映画は何ですか?」 というもの。 我々ものづくりに携わる人間は、良い作品に触れているべきだ。 そうしないと、自分たちが作ったものが良いものかどうか判断できないじゃないか。
プログラミングは「言語」で、よく読みよく書くことで上達する。 そして何より、良いものに触れて審美眼を養うことが大事。
これってまるで文学や芸術に対する態度と同じじゃないか、と思います。 プログラミングは技術である半面、この人間的・文化的な側面を疎かにしてはいけない、と感じる今日この頃です。
- 謝辞
- 画像は Pixabay 様より使わせていただきました。