なぜプログラミングをやるのでしょうか? 「人月の神話」に「その通り」と思う、意外といいことが書いてあった。

教育

ブルックス氏の書いた「人月の神話」は1975年に初版がでており、既に古典と言えるかもしれません。人月というのは人数と月数の積でプログラム開発のコストは人月に比例します。例えばプログラムを外注するとき、1人月が100万円だったとすると、6人月必要なプログラムには600万円かかるわけです。

この「人月の神話」は、いわゆる「ブルックスの法則」で有名です。
「遅れているソフトウェアプロジェクトへの追加要因は、さらにプロジェクトを遅らせるだけだ。」というのがその法則です。
人数を増やせば増やすほど、設計思想を共有化したり、お互いのコミュニケーションをとったりするのが難しくなるからです。人間という複雑なシステムを考慮すれば、結果は人数に比例することはなく、非線形になるのは十分予想できます。
実際に数年前にも某大企業が官公庁の大規模システムを何十億円で受注したがうまくいかず、さらに人員を1000名以上追加したということがありました。結局、破綻するのですが、その一要因は「ブルックスの法則」を理解していなかったことにもあるのではないかと思います。

さて、ここからが本題です。この本には、最初の方に「うん、その通りだよね」ということが書かれています。一言で言えば、「好きこそ物の上手なれ」ということが記載されています。
「なぜ、プログラミングをやるのでしょうか?」
この問いにはいろいろと回答できそうですが、この質問に対する答えが理路整然と述べられています。

ここで引用させていただくと、

1.物を作る純粋な喜びがある。

自分で絵を描いたり、作品を作ったり、何らかの物を作り上げると、それは大人でも子供でも楽しいわけです。

2.他の人々に役立つものを作ることの楽しさがある。

役立つといってもそんなに大袈裟である必要はないと思います。例えば、子供がゲームを作って親に楽しんでもらうなんてことも「役立つ」の一つと考えてよいのではないでしょうか。当教室で言えば、作った作品を親に見せてあげるというだけでも十分でしょう。「へぇー」と思うようなプログラム作品をいろいろ作ることができます。

3.複雑なパズルのような組み立て部品を完成させ、それが巧妙に転回するのを眺めるおもしろさだ。

小学生のころ、プラモデル作りをよくやっていました。これも部品を組み立てていくわけですが、完成品が動く様子には驚きと感動があります。夢中になると、ご飯も食べずに、風呂にも入らず、完成するまでトイレに立つ以外テコでも動かずに取り組むわけで、親によく叱られたものです。
まさに、完成品が巧妙に動く様子に心を揺り動かされ、寝るときは完成品を枕元に置いたものです。
プログラミングにも関数やクラスといった部品を作り、それらを組み上げて完成品を目指すという同じような要素があります。そして、実行しても何度もうまくいかず、やり直し、ようやく動いたときの喜びも。頑張れば実に巧妙に動かすことができ、感動ものです。
最近はデータサイエンスという分野も流行っていますが、この場合も同様なおもしろさがあります。ビッグデータから巧妙に新たな法則を見い出したときの喜びはひとしおでしょう。

4.つねに新しいことを学ぶという喜びだ。

プログラミングのネタはいくらでもあります。どんどん新しいことを学び、それをプログラムを使うことで理解しやすくなるならば、プログラムを使うべきです。
さらに、プログラムを使えばこそ出来る実験もあります。例えば、サイコロを100万回振るといった実験は現実には出来ませんが、プログラムを作ればあっという間に実行でき、新しい知見を得ることができます。
従来から良く知られているようなことも、プログラムを使って「実際に自分でやってみる」ことが重要です。実はやってみると、新しい発見がいろいろとでてきます。当教室のテキストを作成する際にも新しい発見がいろいろとありました。これについては別の機会に具体的な例をご紹介したいと思います。

5.非常に扱いやすいメディア(媒体)で作業する喜びがある。

コンピューターを使うことで創造性を発揮しやすくなってきました。失敗してもコンピューターそのものが壊れてしまうということはなく、何回もやり直しが効きます。さらに、最近では自分の作品を世の中に公開することも容易になりました。

思えば、前職の研究所での研究でも同じでした。
「楽しくなければ研究ではない。」
これは真理だと思います。楽しければ、24時間、365日、研究に打ち込むことが出来ます。ちょっとくらいうまく行かなくても挫折することはありません。
子供たちには、自分のやりたいこと、楽しいと思うことに打ち込んでもらいたいものです。こうして、人から言われなくても自ら積極的に調べたり、実験したりして取り組むようになれば、どんどん伸びていきます。