読者です 読者をやめる 読者になる 読者になる

過去と未来が出会う場所

「ひと」の場を構築するために

これからのプログラミング教育

プロコン

私は、2012年から独学でプログラミングのスキルを身につけてきました。
前々から気になっていた情報処理の資格を今年こそ取る!と、その年の元旦に一念発起したのです。

それまでは、プログラミングとは全く無縁の生活をしていました。
影響といえば、テレビドラマで描かれていたハッカーたちの、とても人間業とは思えない活躍を見て惹かれたことくらい。

ブラッディ・マンデイ DVD-BOX I

ブラッディ・マンデイ DVD-BOX I


とても、じぶんがたどり着けない次元の世界に見えていたのですから、カッコイイなくらいしか考えていませんでした。(そして、閉鎖的な世界)

その後、何度かの合格、不合格を経て、徐々にレベルの高い試験を勉強し、先人の偉大な背中を見ながら、自然と違和感を感じるようになってきました。

そして、IT系の資格でありながら、試験会場におもむき、与えられた問題を頭で考え、解答を記述する(選択する)ことが、この世界に求められていることなのか?

という疑問がふと頭をよぎったのでした。
パソコンを持ち込み、プログラムを自分で作って動かしてみるという経験こそがまず最初にやるべきことなのではないか。

そこでたくさんの失敗をして、なぜ間違っていたのかということが分かるまでトコトンじぶんの力で考える。

当然のことながら、かなりの忍耐が必要です。はじめは、バグを発見するまで、何時間もかかるのは日常茶飯事。
でも、ある時から、飛躍的にその時間が短縮されます。
今では、質問サイトがあり、じぶん一人の力ではなく、多くの知恵が結集される環境が整っていますが、
これまでの先人たちは、今よりはるかに、おのれの知恵のみで鍛え上げられたのです。

さて、そんなこんなで、じぶんがこれまでやってきたことをまとめてみました(反省の意味も多々あります)



1. Webを作成すること、ビッグデータを分析することだけがプログラマの役目ではない。


これからの時代。小・中学生もプログラミングが必修となります。 (2020年から) ニュースをざっと見た限りでは、小学生ではプログラミング言語を打ち込むのではなく、GUI的に処理する(Scratchとかなのかな?)ことで、その基礎を学ぶようですが。 www.sakana.tech 与えられたことを処理することが、次の時代に求められているとは思えません。 それは、パターン化された方法で処理すればよく、どんどん人の手を介在しないで自動化していきます。
もっと、広い意味でのアーキテクチャー(デザイン)思考が求められていると思います。

2.プログラミングは、向き不向きがある。


wakuwakustudyworld.co.jp とはいえ、わからない人にとっては苦痛でしかない呪文のような言葉を学ぶことが、重要である、そして基本であることは、今後ずっと変わりないと思われます。(コピペすればいいじゃんという方は、この世界には向いていないでしょう。)

そこで、言語とお友達になった人、ハマった人のためにオススメなのが、プログラミングコンテスト(通称プロコン)の問題を解いてみることです。

知らない人にとっては、とても敷居が高いと思われがちですが、なんのことはなく、プロコンに参加しなければいいのです。(私も参加したことがありません。)タダで、時間を気にせず良質な問題を解くことができるのですから。 そして、ある程度自信がついたら、自分の回答をさらしてみましょう。
初期の解答と今の解答を見比べると、自分のレベルが上がっていることがすぐわかります。

オススメは、
1.AtCoder

AtCoderとはなんぞや? →社長さんのブログ

chokudai.hatenablog.com

2.Aizu Online Judge

過去のプロコン大会の過去問が1000問以上あり、
登録すればじぶんの提出履歴がまとめて見られる。 また、解答数、レイティングなどが定期的に更新され、ほかの人との比較ができ、モチベーションが上がる。


自分がやった工夫は、
ただ漫然と説くのではなく、履歴を作ることです。 f:id:aweshin:20160607214153p:plain

解法をまとめることで、例えば、
再帰ダイナミックプログラミング(DP)は、見た目は違う解き方だが、結局同じことをやっている。(問題によって、あるいは言語によって使い分ける) ということが、自然とわかってきます。 わからなかったものは、ほかの人のacceptされた解法を元に、じぶんの書き方で必ず解答を提出してみましょう。



3. ものづくりを通して、自分の主張を多くの人に伝える。


1.twitterbotを作る。(このブログの埋め込みTweetは、自分がこれまでに見てきた、感銘を受けた言葉を集めたものです。
つぶやきを見てくれている、言葉の発言の当事者からRTやいいねを受けると、単純にうれしい)

2.実態を持たない主義、主張を、実態を持たせてみる。(IoTを、モノから得られる情報を元に分析すること(ハードからソフトへ)としてではなく、頭のなかで考えたデザインを実態化する(ソフトからハードへ)として用いること)
今であれば、Raspberry Pi や Arduino といった製品から簡単に作ることができる(環境が整ってきた)。


4.プログラミング教育にはそれ以外の教養が非常に大事。


プログラミングとは、何か新しいものを生み出すことですが
何か新しいものを生み出すためには、技術だけでなく、文化から哲学まで、幅広い知見を導入することが求められると思います。
プログラミング教育を通して、教育の概念を変える。そんな時代が、きっとこれから訪れるでしょう。