見出し画像

素人がプログラミングに挑んでみて初めて知る「想像力」の壁

私の周りでは、以下の記事が少し話題でした。

プログラミング学習において、「目的意識」を持つことは本当に大事です。「目的」が無いと、精神的な問題として、モチベーションが維持できませんし、時間的な問題として、膨大なプログラミングに関する資料・情報の中から、何をチョイスしピンポイントに勉強したら良いのか、皆目検討もつきません。

上記事の通り、

・どうしてもエンジニアになりたい
・どうしても開発したいアプリ・サービスがある

という信念が無い限り、カジュアルな理由でプログラミング学習に手を出すべきではないと私は断言します。修得できなかったときに、本当に膨大な時間を無駄にすることになります。中途半端なその体験は、微塵も日常生活で役に立ちません。

素人がプログラミングを学習すると、その結果はとても極端なのです。「確実に力を手に入れる人」と「全くダメな人」と、両極端に分別されます。上記事では、以下の「壁」にぶち当たっています。これは典型的な、後者の、全くダメな人たちの思考です。

・ググってもわからない
・わからないことをすべて人から教わる
・エンジニアを質問攻めにしたい
・いつでも質問できる環境が不足している

以下(前回)の記事で、プログラミング学習の挫折時に「気軽に聞ける環境があればよかった」人が 6 割もいるという話を参照しましたが、

共通してダメなことは、冒頭の記事と同様で、素人は、「誰かから教わることを前提」にしてしまっています。これは、日本の義務教育が悪だと私は強く思っています。予め「正解が存在」し、それを導くために答えを埋めていく、「出題者の顔色を伺う」という思考に小さい頃から慣れてしまうと、「自分で新たに創造(想像)する」という思考が、全くできなくなります。

そもそも、プログラミングには、”ただ一つの正解”というものが存在しません。「エンジニアを質問攻めにしたい」と記事にありましたが、全知全能のエンジニアはこの世に存在しません。最前線で活躍するエンジニアたちも、日々、調査し、勉強し、試行錯誤し、「自分なりの正解」を、やっとの思いで導き出しています。そして、それは長く続きません。日々、技術は進化し、新たな技術が登場し、ベテランの玄人エンジニアも、毎日が勉強なのです。ベテランの玄人エンジニアが、新たな技術を習得するときに、「誰かから教わる」と思いますか。新たな技術を、教えてくれる人はいません。技術が新しければ新しいほど、教えられる人が世界に殆どいません。自分で論文を読み漁り、試行錯誤して、毎日、毎日、勉強します。

これが、プログラミング学習の本質です。そして、これがプログラミング学習の当たり前です。自分が知りたいピンポイントな技術的な問題を、ピンポイントに解決してくれる人は、基本的に存在しないと考えなければなりません。

正解の無い問題。それがプログラミングです。正解が無いので、プログラミングは、とにかく想像力をフル活用します。「想像力=創造力」です。机上で、英数字をカタカタとパソコンに羅列し、それらを目で読み、頭の中で動作する様子を思い描きます。どのようなプログラミングが、どのように動作し、どのようにエラーを起こすのか、そこまでを全て想像する必要があります。全てをイマジネーションすること、頭の中で殆どの動作・エラーを想定します。

実は、現役のエンジニアでも、それが苦手な人が凄く多いです。今、日本は空前のエンジニア不足を迎えていますが、これはエンジニアの絶対数が不足しているのではなくて、スキルのあるエンジニアが不足しているのです。想像力の無いスキルの乏しいエンジニアが非常に多く、世界に先行される新しい技術革新に、多くの日本人がついていけない状態なのです。

今の日本人は、その想像力が著しく低下していると警告されています。少し前に、以下の記事が話題でした。

現代の日本では、「読解力」が低下しています。捻りのない、分かりやすい短文、娯楽、に慣れてしまい、裏や背景を読む力がない、目に入った情報だけで物事を処理してしまう、これは、想像力の欠如が最大の理由です。

・ググってもわからない

前述の通り、玄人エンジニアも、全知全能ではありませんし、全ての問題がウェブに存在するという前提がナンセンスです。自分の問題は、膨大な問題の一部分で、ピンポイントにその問題を解決できる情報は出てきません。

「似ている」問題を探し出し、それを手掛かりに、自分自身で試行錯誤するしかないのです。「似ている」ところから、「想像」しなければなりません。正解は自分で創造するのがプログラミングです。

・わからないことをすべて人から教わる

全てを教えられるエンジニアはこの世に存在しません。全ての問題を解決できる複数のエンジニアを、一人も洩れなく探し出せると思いますか。無理だということが「想像」できませんか。

・エンジニアを質問攻めにしたい

全てに答えられるエンジニアはこの世に存在しません。一緒にその問題を調査し解決してくれるエンジニアはきっとどこかにいるでしょう。しかし、それは最早、そのエンジニアが問題を解決しそのエンジニアの情報財産になっただけなのです。問題を調査し、「想像」し、解決する、その過程の全てがプログラミングです。正解をカタカタと打ち込むことがプログラミングではありません。試行錯誤することも含めて、悩み、「想像」し、創造するのがプログラミングです。

・いつでも質問できる環境が不足している

もう、「想像」すれば、分かりますよね?

この記事が気に入ったらサポートをしてみませんか?