日記

プログラミング教育に必要なことを考える

※この記事では、初心者がプログラミングを学ぶにあたってどのような教育をするべきか、ということをブレインストーミングするための記事です。
自分の考えをまとめるための記事ですので、少し読みにくい可能性があります。

対象者について

この記事で扱う「プログラミング教育」の対象は次の通りです。

  • 大人の初学者
  • 初めて学ぶ子供(子供が読むにはすこし難しいことばで書いちゃったかも)

この人たちが気持ちよーく、効率的にスキルを得ることを第一に考えます。

筆者について

誰が書いてんの、というのは気になるところと思います。

私は、現役のWEBデザイナーです。
講師経験もあります。(今は引退しています)とある社会人向けWEBデザイナースクールの講師を5年くらいやりました。なので、プログラミングをいかに教えるかについては一般的な人よりは考えてきたかなと思っています。

そんな筆者が思っていることをまとめます。

いろいろな教育の問題点

既存の問題の解決、というアプローチが最もわかりやすいと思います。
今ちまたに溢れる教育の仕組みは大きく分けて2つかなと思います。
それぞれの問題点について考えてみたいと思います。

独学

文字通り独りで自分で学ぶことですね

メリット

お金がかからないことです。
安価な、もしくは無料の教材もかなり整っていますので、こちらを活用することでほとんどコストをかけずに質の高い勉強をすることが可能です。
書籍から学ぶ場合もほとんど金銭的コストはかかりません。
また、完全に自分のペースで学べることがメリットだと思います。

デメリット

独学では、本人の「意思力」が重要となってきます。
それが伴わないと、結局スキルが身につけられないといったことにもなってしまいます。
また、学んでいることが正しいのか、実際に業務で役に立つのかなどが判断できないというのもデメリットでしょう。
こちらは、同じことを勉強している仲間を見つけることで対処できると思います。
しかし、他の方法を選んだ方がこれは見つけやすいです。

社会人向けスクール・プログラミング教室で学ぶ

メリット

色々相談でき、ひとりでは難しいスケジュール管理が強制的に進むのがメリットだと思います。
正直社会人スクールの内容としてはかなり重いものとなります。
そんなとき、不安を相談できたり支え合える同期の仲間が作れるというのがとても大きいです。
ここでできた関係性は、意外と長く続いたりします。
仕事をもらったり振ったりする関係性をここで築くことができるととても良いと思います。

揃えるべき道具、学ぶべき言語や内容、働きだしてからの気になる疑問など総合的に質問できるのが利点です。

自分が社会人スクール出身なので、どうしても贔屓な書き方になってしまいますね。

デメリット

コストはかなりかかってしまうと思います。
ピンキリだとおもいますが50万円~70万円ぐらいするのではないでしょうか。

どちらにしても

どの方法で行っても、最終的には独学で学ぶ力が必要になってきます。
また、自分で課題を見つけ、自分で調べて解決までいく力が求められます。

学びに必要な環境と設備

プログラミングを学ぶには、最低限必要な環境と道具があります。
これらが揃っていないとなんともできないのでこれから挙げるものは最優先で揃えるようにしましょう。

パソコン

パソコンは最低限必要です。
性能はそこまでハイスペックを要求しません。
しかし、あまりに古かったり安すぎるパソコンはだめです。
以下のスペックを満たすものなら割となんでもいいです。

  • ノートPC
  • 一年以内に発売されたもの
  • officeソフト抜きで12万円~15万円程度価格のもの(予算以内なら高ければ高いほどいいです)
  • WindowsかMac
  • 画面サイズ13〜15インチ

映像編集、3D制作などをやる場合はもっともっと高いスペックが必要です。今回はプログラミングについてなのでその場合は別途調べてください。
自分はmacを使っていて、macbookairの一番安いモデルを使ってます。
10万円以下でしたが、全く不満はありません。

なぜノートPCかというと、どこでも触れるからです。
据え置きのものを買ってしまうと家でしか学べないのでよくないです。
カメラとか、マイクとかもリモートワークが重要な現在では欠かせない要素です。
それらをちゃんと搭載しているノートpcにしておくと後で後悔することがないです。

学びの環境

勉強するには環境が重要です。

Wifi

まずwifiが必須です。モバイル回線でもできなくはないですが、光回線など安定したものを使っておくのが無難です。

学ぶ仲間

いなくてもいいですが、やっぱりそういった仲間がいるととても良いです。
スクールに入ったり、はたまた、プログラミングスキル習得系のオンラインサロンなどに参加するといいでしょう。
何を学ぶべきか、という情報もここから得ることができます

教材とカリキュラム

独学でも、どこかに通うにしろ必要です。
書籍やWEBサイト、動画が一般的です。今はものすごく選択肢が多いのですが、逆にそれが初心者のハードルになっているとも言えます。

集中できる部屋

椅子や机、デュアルディスプレイなどの設備。
そして自宅やカフェなどどこでやるかも大事です。
wifiさえあればどこでもできるのが良いです。
コロナ禍の今は、自宅で集中できるようになっておいた方が都合がいいでしょうね。

なぜ学ぶか。学ぶことで得られるもの

個人的に、「教養として学ぶ」というのは結構ハードルが高いように感じます。
だから、学校教育でのプログラミングは非常に難しいと思います。
これはプログラミングに限らず、どんな科目でも一緒かもしれません。

仕事で必要だから、収入を増やしたいから。
そういった目的がある方が目的意識を持って取り組めるので、身になりやすいと思います。

「親に今後きっと役に立つから学んでおけと言われて入った」
そんな人が時々いるのですが、大体が死んだ魚のような目をしており、2ヶ月程度でリタイヤしていきます。

学びは自分から始めると楽しいですが、強制されると嫌になってしまうものです。

「今後きっとどこかで役に立つ」という親御さんの意図には完全同意なのですがね。

教養としてのプログラミング

いまは「IT業界」があるのではなく、全ての業界が「IT化」している時代です。
よって、プログラミング的な思考方法やITの感覚が今後役に立たないわけはありません。

前述したとおり、やる気が起きにくく身に付きにくい目的なのですが、少しこれについて考えてみたいと思います。プログラミングをするために必要な感覚について少しお話ししてみたいと思います。

機械は頑固、でも言われたことは必ずやる。

機械は人間の話している言葉は理解できません。
人の言葉を理解する機械も増えてきてはいます。「siri」や「アレクサ」です。
でも、何かやって欲しい時、自分たちが命令の工夫をしてはいないでしょうか。

機械は明確に命令しないと動いてくれません。

何を、どのように、どうする。
これらが一つでも抜けていると動いてくれません。

そして命令したことは必ずやってくれる、という特徴を持っています。
機械がうまく動いてくれないときは、必ず命令の仕方が間違っているのです。

機械は「0」と「1」で作られた言葉で動いています。
でもそれは理解できません。
人間が普段話している言葉は機械には(あまり)理解できません。

機械にはとても理解でき、人間は訓練すれば命令することができる。
それが「プログラミング言語」なのです。

暗記することに価値はない

現代において、暗記はほとんど意味がありません。
必要な情報はpcに記録しておけばいいし、もっと言えば誰かが記録・発信している可能性が高いので、記録する必要すらありません。
何かがわからない時、「調べて解決する」ということができれば暗記をする必要がないのです。

つまり、「知らないことを調べる」能力が必要です。
最初は人に聞いて答えを見つける方が早いかもしれません。
しかし、インターネットで情報を見つけて解決するスキルが絶対に必要になります。

今ある知識を組み合わせてなんとかする。水平思考の発想。

プログラミングでは、めっちゃ難しい最新技術を時間をかけて学んで解決するより、今ある手持ちの材料を組み合わせてなんとかすることを求められます。

どっちがすごいかというと、方針の違いだとおもいます。

しかし、どっちが効率がよいかでいえば後者になると思います。

プログラミングをやっているとすごい技術を使った方が偉いような感覚になってしまうのですが、そんなこともないかな、とおもっています。

高度な技術をつかって問題を解決することと
高度な技術を持ってる人に依頼して問題を解決すること
簡単な技術の組み合わせで同じ問題を解決すること

これらは結果がおなじなので、価値に差はないとおもいます。

「XXぐらいできないとプログラマーじゃない」という人はいると思うのですが、嘘です。
そこまでしないでちゃんと給料をもらって生活している人はいっぱいいるので騙されないようにしましょう。

適材適所で必要な技術を身につけるのが大事です。
一つを極めようとすると、他のことができません。

いろんなことをある程度極めた方が、応用の効く人材になると自分は思っています。

なので、自分は「枯れた技術」の方を大事にします。

枯れた技術とは一般的になりすぎてしまってあまり重要視されない技術といった意味です。
そこを馬鹿にせずちゃんと活用するのが大事だと思います。

過去の資産を活用する。車輪の再発明はしない

先に述べたことと繋がってきますが、プログラミングでは過去に人々が開発した技術がすでにたーくさんあります。

そして、そのように過去に積み上げられた資産をうまく利用する技術も多く用意されています。

そういったものをうまく活用すること、そして、再度それらのことを生み出すようなことをしないことが重要となります。

勉強段階で、自分で一から同じものを作ってみるというのは良いかもしれません。
しかし、効率化が大事な業務ではわざわざ同じものを再発明して使うことは悪とされています。

すでにある便利なものはうまく活用して怠ける。これがプログラマーとして重要な感覚です。

自分の頭の中にあるものを実現するのは面白い

結局のところ自分がなぜプログラミングをするかと言えば、楽しいからだと思います。
何かをうまく動かそうと工夫をしている時、それはパズルゲームの問題を解いている時と全く同じだと思っています。

解決できると達成感があり、ゲームをやり遂げた時と同じ快感があります。

つまり仕事中なのにゲームをしているのと同じような感覚です。
しかもうまいことそれを達成すると褒められます。

そして創作の喜びがあります。
マインクラフトというゲームをご存知でしょうか。
あのゲームはゲーム内で得た素材を組み合わせて、より過ごしやすい環境を作ったり、素敵な建築物を作るゲームです。やったことのない人は是非やってみてください。

プログラミングで何かを生み出し、解決することはこの楽しみと非常に似ています。
一生ゲームをして暮らしたい人はプログラマーになるというのも一つの選択肢だと思いますよ。

最後に仕事としてのプログラミング

仕事のスキルとして考えた時、プログラミングを習得することはとても良い選択肢だと思います。

プログラマーとして会社に就職するのも良いですし、デザインスキルを身につけ、プログラマーと組んでデザイナーになるのも良いでしょう。

最近の経営者はもともとプログラマーだった人が多いように感じます。
堀江さんだったり、ひろゆきさんだったり、まこなり社長だったり。

みんなプログラマー出身です。
これからはプログラミングの土台を持ちつつそれをもとに経営だったり、なにか別のことをするケースが増えていくのではないかなと思います。

なにか別のことをやるにしても絶対に有用なスキルなので必ず身につけておくべきものだと思います。

ゴールの設定:何ができるようになるかを明確にしてあげたい

ゴールの設定は非常に大事だと思います。

一つ前の項目で挙げた部分が「大目標」となります。
そして、小さく面白いことが達成できる課題をたくさんこなすことで「大目標」がいつの間にか達成できる。

そんな構成が優れたカリキュラムではないかと思います。

途中で達成できることを挙げてみる

中目標はかなりたくさんあると思うのでここに羅列していきます。
デザインもカリキュラムに入れようかと思っているので、デザインについても含めて記載します。

  • 自分のことを発信するホームページを作れる
  • 何かしらの発信ができる
  • htmlで文字の装飾ができる
  • 自分の意図が伝えられる資料をデザインできる
  • サーバーやホームページ公開の仕組みが理解できる
  • パソコンの作りが理解できる
  • ものづくりの進め方がわかる
  • すごくて便利なWEBサービスについて知れる。
  • 簡単なアニメーション付きのサイトを作れる
  • 簡単なWEBアプリを作れる
  • 自分用にとって便利な自分専用アプリを作れる。
  • 簡単なゲームが作れる
  • いい感じのyoutube向けのサムネイルが作れる

まだまだいっぱいあるとおもうのですが、とりあえずここまで。
面白そう、やってみたい!と思うような中目標が作れたらきっと楽しいと思います。

まとめ

以上のような思想をもとにブログ更新や、カリキュラム作成に取り組みたいと思います。

是非、当ブログをよろしくお願いします。