Go Fujitaさんのこちらの記事に、
次のようにあるのを読んで、少し考えました。(言及いただきありがとうございます!)
そして、倉下さんやのらてつさんと同じことはとてもできないしやらないけど、ぼくだったら何ができるだろうか、と考えるようになりました。
私が使えるのは、JavaScriptがある程度とPythonが僅かばかりという状態ですが、倉下さんがお使いになっているのもJavaScriptとPythonなので、私は初心者ながらも倉下さんのお話はおおよそイメージを掴むことができます。どの程度の難易度のコードなのか、というのが大体わかるのです。
一方Go Fujitaさんが日頃お話になっている言語やツール(例えばSmalltalkやEmacs)については全く触れていないので、Goさんのお話は私にはおそろしく難解に感じます。何も知らないので「難しそう」と反射的に下す判断が当たっている保証は一切無いわけですが(実際、おそらく多くが間違っているのですが)、「難しそう」という評価を覆す体験を自分が一向に積まないので、「難しそう」という印象はそのまま残り続けてしまっています。
倉下さんや私がやっていることは当人からすると他の人にとって「とてもできない」ようなことではなく、またGoさんがお話になっているSmalltalkなどについてもGoさんからするとそこまでハードルの高いものではないのではないかと推察しますが、扱える言語が違うだけでなんだかとても高くて厚い壁が立ちはだかっているかのような気分になってしまうように思います。まだどの言語も知らないプログラミング未経験者からすると尚の事でしょう。ある言語の特徴などを抽象的に語ると、その言語を知らない人からすると「全く何を言っているかわからない」ということになってしまうからです(小一時間勉強するだけですぐわかるようなことであったとしても)。
私が「こんな感じに自作ツールを作ったor改良した」「プログラミングを始めて○ヶ月でこのくらいだ」という話をするのは、「右も左もわからないド素人でもちょっと齧れば結構なことができるぞ」ということを伝えたいからです。
しかし一方で、「結構なことができる」を言いたいがために情報量を増やしてしまうと、まだその言語に挑んでいない人を逆に圧倒してしまう可能性があるとも感じています。すごいのはあくまでプログラミング言語なのですが、プログラミング言語を使う私がすごいかのように見えてしまう、という感じがします。他の人の語りに対して、私自身がそう感じています。(もちろん「プログラミングしている人」に個々のすごさというのがないわけではないでしょうが、プログラミング言語に対する「わからなさ」が「すごさ」の評価にどかっと上乗せされがち、という印象があります。)
伝える側として、これを解決するにはどうしたらいいのだろう、と時々考えます。しかしまだ答えは出ていません。
具体的なコードを公開するのはひとつの手かもしれませんが、しかし私個人の体験としては、先に「難しそう」を取っ払ってからでないとどんな簡単なコードも難解に見えて圧倒されてしまいます。「console.log("Hello World!");」でさえ、文字で見るとウッとなる可能性があるわけです。
私がJavaScriptの勉強を始められたのはいくつか具体的な動機があったからで(以前自分のブログで書きました)、誰かの導きの力というのはそれほど大きな意味を持ちませんでした(影響が全くなかったというわけではないにせよ)。そう考えると、誰かに「最初の一歩」を踏み出してもらうための後押しというのは、どう頑張ってもなかなか難しいのかもしれません。
ただ、例えばJavaScriptを勉強してみようという時に、「勉強するはいいけど最終的に何ができるんだろう」と思いながらやるよりは、「○○(※任意のツール名)の代わりになるようなツールを作れたりするらしい」というようなイメージがあった方がワクワク感は持てるような気はしています。Goさんは記事の中で「気取ることなく楽しそうに、サイトやウェブアプリ (?) をつくっているようすをみて、刺激を受けている人も多いと思います」と書いてくださっていますが、そのように「楽しいものだ」という印象をもたらすことができているとしたら、それは小さくない意義があるのではないかとも思います。
また、もしかすると個別のプログラミング言語の話や成果物の紹介よりも、「ツールというのはこれがああなってこうなってそうなるものということだ」的な、メカニズムの把握の仕方の方が「最初の一歩」の後押しとしては大事なのかもしれません。学校でプログラミング教育を受けていない私たちには、その部分にボコッと穴が空いている気がします。
例えばブラウザで動くメモツールを作るのだとすれば、まず「メモツールというのは、テキストエリアを用意し、そこに自分が打ち込んだテキストがどこかに保存され、起動時にそれを呼び出すことができるものだ」という認識が必要です。逆にそこまでくれば、「JavaScript テキストエリア」「JavaScript データ 保存」とかで検索するだけで大体どうにかなるのです。やりたいことがはっきりしてさえいれば、それが実現できるまで調べればいいので、投げ出さない限りそのうち正解に辿り着きます。
私はプログラミングそのものを人に教えられるほどプログラミングのことを知りませんが、日曜大工のように趣味として自分のためにプログラミングすることがもたらす豊かさへの感動を人一倍抱いていると思っています。(日曜大工的にプログラミングする人のことを「サンデープログラマー」と呼ぶようですね。)
どうしたらその感動を活かせるだろうか、ということを今後も考えていきたいと思います。
Backlinks
関連度が高いかもしれない記事
- 2022年の振り返り
- NTA-DIY:なんでこれを書いているのか考え直す
- よくわかるNoratetsu Lab(2022年版)~前編~
- NTA-DIY:1ヶ月目①~どうせならTypeScriptを覚えればいいんじゃね~
- JavaScript日誌:一歩進んだら十回足踏みせよ
他の「プログラミング」タグの記事