こんにちは、ロジリズム小嶺です。
教室で子どもたちにプログラミングを教える前は、システムエンジニアとして20年近く、システム開発現場にどっぷり浸かっていました。
学生時代は専門学校でプログラムを学び、その後ソフトウエア開発の会社に勤めたわけですが、そのSE時代の1年目のころ、何度も言われて印象的だったことがあります。
それは「美しいプログラムを書きなさい」ということ。
仕事を初めたころは、どの業界もそうだと思いますが、ただただ業務をこなすことに精一杯。必死にプログラムを書いても間違えだらけで、勉強することが山ほどあって、いっぱいいっぱい。そんな中、ある先輩に何度も「あなたのプログラムは美しくないんだな〜」と、ちびまる子ちゃんに出てくる花輪くんみたいに優雅によく注意されました(当時の先輩、色々ごめんなさい😁)。全然余裕のなかった時期だったので、「"美しいプログラム"なんて、どういうことよ!?ちゃんと動いているじゃん」とちょっと卑屈でした。
ただ、それからだんだんと少しずつ経験を重ねていくうちに"美しいプログラム"の意味を理解しました。
それはアートのように自分の書いたプログラムがインパクトがあるかとか、おしゃれか、とか、すごい難しい関数をいっぱい使ってかっこよく書いたとか、自己満足の類ではなく、
「綺麗に整理されたものである」ということ。
それはつまり、
バグをなくすため
無駄や重複をなくすため
可読性を上げるため
だれが見ても読めるようにするため
メンテナンスしやすくするため
など、超超現実に即したものだということです。
そして、この考えは、エンジニアとして仕事する人だけでなく、今プログラムを習っている教室の子どもたちにも教えてあげたいことの一つです。
教室ではスクラッチ(Scratch)というプログラミング学習用の環境をよく使います。
スクラッチを使った学習でも、"まずは触れる慣れる"という時期を過ぎたら、「美しいプログラム」を書いていく必要があると思います。スクラッチは子どもや初心者向けに作られたソフトなので、適当にいくつかブロックを持ってくるだけで動きます。初めはそこが手軽で楽しくていいところ。ですがスクラッチに慣れてきて、子どもたちがこう動かしたい、こういったゲームを作りたい、もっとかっこよく作りたい、と自分で考えてアイディアを組み立てて作り続けていく時期にきたら、この「美しく書く」ことが大事だと思います。
なぜなら、制作途中、うまく動かないところや、予想外のバグ、もっとこうしたい、というものが必ず出てきますが、美しく書いていないとプログラムの解析が難しく、自分で書いているのに、自分で理解しにくくしてしまいます。
例えるなら、謎のカレーみたいな感じでしょうか🍛
今夜、カレーを作りたくて、じゃがいもと、にんじんと、お肉を買って来たけど、キッチンの上には、他にもプリンやあめだまやお菓子といった関係ないものが転がっている。「なんかわかんないけど、適当にぜーんぶ鍋にいれちゃえー」って作ってみる。すると、一見、見た目は普通のカレーだけど、なんでこんなに甘すぎるの??全然おいしくない!作りたかったカレーじゃない!どこがだめだったのかわかんない!でもこれカレーだよ、みたいな感じでしょうか。(そんなカレー、本気で恐怖です😅)
こうなると「あ、もう全然わかんないや。やーめた」となってしまいがち。さっぱりわからないまま進める苦労と、わかるからきっとどこかを直せばいいんだな、と進める苦労は、同じ苦しみでも辛さや諦めたくなる気持ちがまったく違います。
プログラムは、のめり込んでこだわって作れば作るほど、必ず苦しいタイミングが訪れます。ですがそれはステップアップしている証拠。なので悪いことはなくむしろ、くるべくして来た、待ちに待った瞬間です。その苦しみは、思考を巡らせて考えて考えて頭の中が沸騰しそうなくらい大変ですが、そんなとき解決できるためにつけておくべき一つのスキルが「美しく書く」ことです。そう、つまり自分自身が、この苦しみを乗り越えていくためのスキルです。
「美しく書いたプログラム」は綺麗に整理されていて、間違いがわかりやすくて、追加や修正がしやすい。ひいては、子ども向けプログラミング学習の主軸である「論理的思考」に、もっとも繋がる考えだと思っています。
長々と書きましたが、私のプログラミング人生の中で、「美しく書く」ということを学べたことを感謝していますし、ずっと大事にしています。
そして今でも、難しいプログラムを組んでうまく出来たとき、
"この事象が、順序よく、引っ掛かりなく、止まることなく、なめらかに美しい流れを組みながら処理を進めていき、別のものに生まれ変わる感じ..." に自分でうっとりしています☺️😅
Comments