①PC初心者の私がプログラミングを学ぼうと思ったわけ
初心者がプログラミングを学ぶ時に挫折するポイントや、こうして学んだらいいというような記事を多く目にしますが、この記事では全く違う観点で書いていきます。
なぜなら、私が学んだプログラミングが一般にあるプログラミング教室とは違うからです。
普通プログラミング教室に通う目的としては、何かのアプリを作成したいとか仕事で必要、転職に役立つなどの現実の生活に+αする為ということが多いかと思います。
けれど私が学んだプログラミングはデジタルリーダーシッププログラムという教育プログラムの中で学ぶもので、プログラミングの他にPCに関する全般を学ぶものでした。
プログラミングを学ぶことで、宇宙の成り立つ仕組みも理解できるという最新のIT教育です。
+αではなくて全てを0化したところから新たに創りだしていく+∞の学びです。
ここでプログラミングを学ぶことで、PCの画面を創りだすことと自分が見ている現実という画面を創りだすことが同じ仕組み、同じアルゴリズムであることを認識できます。
ITに心が入った教育ができるのです。
自分の見ている現実がPCと同じアルゴリズムであると言われても、そもそもPCが良くわかっていない私にとって、同じだと受け取り切れないモヤモヤもあり、「知りたい!」という欲求が強くなっていきました。
なので、プログラミングを学んでスキルを身につけたいわけではなく、原理を理解したかったのです。
それにはこのデジタルリーダーシップが最適でした。
ということで私の主観によるところもありますが、プログラミングを学ぶときに苦しんだポイントを書いていこうと思います。
②その前に、現在のプログラミング市場
2020年に小学校にプログラミング教育が導入されたこともあり、子ども向けのプログラミング教室の市場は2013年に約6.6億、2018年に約90億、2023年には約226億の予想がでていて、10年で約35倍の伸び率になっています。
また大人もリカルレント教育(生涯にわたって教育と就労のサイクルを繰り返す教育制度)として、プログラミング教育の需要が拡大しています。
こちらは詳しい数字は調べることができなかったのですが、最近のIT事情としてDX(デジタルトランスフォーメーション)という単語を耳にすることが増えてきていませんか?
DXとはデジタル技術による業務の改革やビジネスの変革のことですが、IT後進国と言われている今の日本としては、ITに関しての知識があるかないかで、社会のとらえ方・活躍の場が違ってくるのではないかと思います。
不思議なのは、小学校にプログラミング教育が導入されることになって、子どものプログラミング教室の需要は増したけれど、その親であるお父さん、お母さんがプログラミングを一緒に学んでみようとか、自分も知っておきたいという意識にあまりならないことです。
3700人の保護者を対象に行ったアンケートでも、53%の人が「親の自分が理解できるか不安」という回答があるそうです。
しかし小学校で行われるプログラミング教育は、実際にプログラムを作るのではなく、その思考を学ぶことだと言われています。
ところが親自身にその思考が養われていなかったりするのが、私が実際にプログラミングを学んで感じたことです。
実はお父さん、お母さん自身もプログラミング思考を使うことはすごく大事なことです。
それを得ることで、子どもとのコミュニケーションがスムーズになります。
子どもの可能性を阻害することなく、伸ばしていく・花開かせていくことのサポートができるのです。
プログラミングなんて、私には無理!と思っている方にはぜひ知ってもらいたいです。
③プログラミングを学んでみて ~言語の限界
正直いうと、プログラミングなんて大っ嫌いだーーと思う瞬間が何度となくありました。
何がわからないのか、何が限界なのかというと、まずプログラミングで使われている言語が英語であること。
タイピングをするのにも日本語だとスムーズなのに、英語になった途端遅くなります。
私が英語を学んだのは中学・高校のみ。
そして学んでいたときから何十年もたち、触れてもいない状態です。
普段の入力もローマ字入力だから使う文字は変わらないのに、なぜか遅くなってしまう。
苛立つ原因の一つでした。
タイピングだけならまだしも、実はもっと大きな違いがあったのです。
それは言語の仕組みの違いです。
日本語と英語の仕組みの違いです。
それをわかっていないと凄く苦戦します。
どんな違いを感じたのかというと、日本語は主語(S)があって、そこから色々、色々と間に入って(O)、述語(V)になります。
しかも主語が抜けたり、述語が曖昧だったりします。
いい加減なんです。
だから思考もゆるゆるで、話している途中に何を話しているのかわからなくなったり、最初に伝えたいことと違ってしまったりします。
思考がびよーんと伸びたゴムのような感じです。
それに比べて、英語は主語(S)述語(V)がくっついていて、あとから色々と付け足されていきます(O)。
最初の規定がしっかりしているんです。
だから、脇道にそれません。
きっちりかっちりです。
先ほどのゴムで例えたら、ゴムの大きさは決まっていて、それをいくら伸ばそうと、その最初の大きさに戻ってくるという感じです。
その思考の違いにイライラしていた、私。
言語が先か思考が先かというところですが、言語と思考が密接につながっているように思います。
少し話はずれますが、この主語述語の並び順、意外にも日本語のようなSOVの並びの言語の方が、英語のようなSVOよりも多いらしいです。
④プログラミングを学んでみて ~言語とイメージのつながりの限界
さらにこのプログラミング言語、ひとつではなく、種類が色々あります。
そもそもプログラミング言語は機械と人間をつなぐ言語です。
機械語では人間が理解しにくい、人間の言語では機械が理解できない、その間を取るのがプログラミング言語。
開発者によっての違い、そして時代によってのはやりすたりがあるようで、最近のweb開発で欠かせないものとしてHTML/CSS,JavaScript,SQL,Java,C++,C#,Bash/Shell,Pythonなどがあるそうです。
何を開発したいか、何を作成したいのかで、その言語を選択をします。
私の場合は先ほども書きましたが、何を作成したいのかというところではなく、PU感覚デジタル認識プログラミング思考を得るプログラムだったので、HTML/CSS,JavaScript,SQL,Javaといったところを学びました。
「この言語を使うと何ができるのか?」というのが最初は全くイメージができていなくて、ただ文字の羅列。
なにせプログラミングにはそもそも興味がなかったので、知ろうともしていなかったこともあり、ついていくのに精一杯。
コードを真似して打つことに精一杯で、わからなさ過ぎて泣くほどでした。
一般的なプログラミング教室であれば、とにかく真似して沢山書くというところなのでしょうが、私は仕組みや動きを知りたかったので、中々苦戦するポイントでした。
しかし「やっとわかってきたかも!」という頃には次の単元に移ります。
「なんとなく動きは似ているけど法則は違うかもしれない」というところから始まるので、「いつまでたってもできた感じがしない」という思いも抱いていました。
私の場合、ここに勝手な相対比較が働きます。
「できない私がいるけど、そのできない私のままでいたら大変、私はできる人でいなければいけない。」
これは学校教育の負の遺産だと思うのですが、「あの人はできているのに私はできていない」というところに私は凄い焦りと、切迫感と、自分に対する絶望感がやってくるのです。
これには本当に泣きました。
教えてもらうのだけど、期待する答えと違うとか、こんな気持ちになっているのにどうせあなたはわからないでしょうとか、勝手に思ってしまって苦しくなってくるのです。
プログラミングを学ぶことで、ここに何度も出会いました。
ここは凄く重要なポイントです。
ITに心が入る教育の意味価値がわかるところです。
このポイントを「無意識エンジン」と言います。
誰もが無意識に決めつけるアイデンティティーのことで、そこから感情・考えのアルゴリズムを生み出しているのです。
私は弟との相対比較で「できる人でありたい・できる人にみられたい」があるのですが、このアクセルの反対には「できない私」と強烈に思っている私がいて、前に進むことにブレーキを掛けます。
この「できない私」を誰にも知られてはいけないのです。
知られてしまったら最後、私の存在価値はなくなります。
なので、ものすごい葛藤が私の中で繰り返されるのです。
もう、内容は入ってきません。
しかし自分の無意識エンジンがわかっているし仲間に対して信頼があったから途中でやめることはなかったけれど、これが一人で学ぶとか全く知らない人達と学ぶとかであったなら、途中でやめていたかもしれません。
ここで大事なポイントは、自分がどんな観点をもって、どんな判断をしやすいのかということです。
学びが身につかないということは、この自分の判断基準にはまっていて、そこから出てこられない状態だからです。
⑤空間認識能力の限界
3つ目の限界が、空間認識能力があるかないかです。
それをもって物事を立体的にとらえられないと、プログラミングは難しいと思いました。
プログラムを書いてPC画面に出すまでには、その裏に目には見えない動きがあります。
こちらが命令してPCが一発で「はい、そうですか」と動いてくれるわけではなく、その裏であっちに行ったりこっちにいったりをしながら、書かれた設計図をもとに規定がされて、動きが創られていきます。
その立体的な動きの理解ができなかったのです。
日常において「平面的にしかこの世界をとらえていない」ということがわかりました。
つまり目で見えるところしか興味がないのです。
人間の機能って複雑にみえるけれど、凄く大ざっぱにつくられていることを実感します。
私、数学の図形とか凄く苦手でした。
それがこの「プログラミングの動きがわからない」につながっているのだと思います。
これを一般的に言うと「空間認識能力」のことになると思います。
空間認識能力とは、三次元空間における物体の位置・形状・方向・大きさ・位置関係などを素早く正確に認識する能力です。
空間認識能力が優れていると、紙に描かれた図形をみて立体物をイメージしたり、地図をみて自分の位置や進むべき方向を正しく理解したりすることができます。
心理学者のデイビット・ルビンスキーは「空間認識能力は人間のなかで眠っている潜在能力のうち、最大の部分かもしれない」と言っています。
これが優れていると、自動車の運転が上手だったり、絵を描くことが上手だったり、自動車・機械の設計者やオペレーターにむいているそうです。
この「空間認識能力」、これがプログラミングにも自分がみている現実画面にも必要な要素です。
これがないと、わけがわからなくなりプチパニック状態になりかねません。
プログラミングをする前に、パズルとか折り紙とか、そんな頭の思考回路を作ることが大事かもしれませんね。
⑥エラー連発の限界
4つ目の限界は間違い探し。
人間だったら曖昧に察してくれるところも、機械はそうはいきません。
たった一文字、スペルを間違えたり抜けていたりしたらエラーになり、画面が立ち上がりません。
このエラーが中々しんどいのです。
特にこれは今までの教育の要素が大きいのかもしれませんが、試験で正解を求めていた教育では「間違うことは許されない」と強烈な思いを無意識にため込んでしまいます。
しかも間違ったなんて人さまに言えない・・。
これ、私が強烈にあるのかもしれないけれど、つい一人でエラーを何とかしなきゃと思っていじっているうちに、わけがわからなくなるパターンです。
これは今思うと、沢山エラーをしたほうがいいのです。
そしてそのエラーを探すこと・教えてもらうことで、自分が間違えやすいパターンがわかり、より理解が深まっていくということが今回わかりました。
⑦最後に
今回、プログラミングを学ぶ際の限界4つを書いてきましたが、この限界にぶち当たることこそ、人間が大きく変化できる時だと思います。
全く知らなかった世界に出会うからこそ、今までの自分がいたところがいかに小さいところだったのかを思い知らされます。
そして何が必要なのかが自然とわかってきます。
今度はその必要な事へ向かっていく。
そしてまた学ぶ。
その循環が、この世界すべての循環につながるのだと思います。
コードを覚えるだけのプログラミングもいいけれど、本来のプログラミングの醍醐味は「自分の観点と出会い、自分がどんな感情・思考パターンをつくっているのかを知る。そして、そのアルゴリズムはPCの画面を創り出す仕組みと変わらないし、宇宙の仕組みとも変わらない。」と理解できることだと思います。
その仕組みを知ったら、PCの画面だけではなく、現実も設計したとおりの画面が創り出せるのです。