ECILA RIP

思い出したように何かを書き留める

「プログラミングが出来ない」とはどういうことか

f:id:ecilavip:20180114025359p:plain

たまには自己啓発的な、自分の考えをまとめてみたい。

前置き

自分は、プログラムを書いてお金を企業から貰っている、という観点ではプロなのかもしれないが、知識ややる気的には「アマチュア」であるということを前置いておく。

僕の大学の話

僕は、Minecraftに関わる上でプログラミングを学び始めました。それももう三年前の話です。最初に触れたのはPHP*1、そしてJavaMinecraftプラグインへと遷移していきました。このプログラミングの学び始めは、ちょうど大学に入学した頃でした。当時はTwitterでプログラミング界隈の人らと繋がりがあり、みんな若いのにプログラムすごいかけてすごいなー(棒)みたいな感じでした。ド底辺を突っ走っている気分です。

僕の大学は、曲りなりにも情報学部ということで、プログラミングを学びます。一年では必修として「Processing」*2、オプションとしてC言語を学びます。二年時になると、コースによってはJavaRuby on Railsをガッツリやります。この段階で人は大幅に減り、最終的にそれらを一通り扱えますという人はごくわずかになります。それ以外の人たちは「単位認定のためにやること*3はやった、後は二度と触りたくねえ、という気概になると聞きます。僕は前者で、プログラミングの単位的には優秀な方でした。一通り扱えるごくわずかの人間の中でも、更にトップに立つことが出来た気がします。*4*5

本学は、情報学部と名乗っている割に、その実学生はほぼほぼプログラムに対して恐怖心を抱いています。「わたしにぷろぐらむはかけません」

逆に「プログラミング出来ます」と言える学生はほぼ居ないでしょう。

な ぜ な の か

プログラミングが「できる」とは

そもそも、プログラミングが「できる」とはどういうことなんでしょうか。

情報処理技術者の資格を持っていれば「できる」のでしょうか。毎日GitHubにコントリビューションしていれば「できる」のでしょうか。僕は少なくともその両方に当てはまりませんが、自分はプログラミングが(比較的)「できる」と思っています。後述しますが、かと言っていきなり明日からLispで仕事してね、とか言われても無理ですけども。

上記にあるような経緯があるので、プログラミングが出来ないと言う人にプログラミングを教える機会が多々あります。そういう人に共通しているのは「問題解決能力の無さ」だと思います。決して資格の勉強が足りないとか、プログラミングに対して造詣が深くない、とかいう原因では無いように感じます。プログラミングは様々な思考から成り立つものだと思いますが、それらの「引き出し」を上手く引き出せない、知識としてため込めれない人が「できない」人になってしまうのでは無いでしょうか、と僕は思います。

逆を返せば、プログラミングが「できる」ようになりたい人がすべきなのは、資格の勉強でもなく、毎日GitHubにコントリビューションするのでもなく、セミコロンレスプログラミングでもなく、ワンライナーマンの特訓でもなく、ラムダ式を読み書きできるようになることでも無いという訳です。「問題解決」が出来ればいいんです。多分。僕はそう思う。本当に。

「問題解決」を出来るようになるためには、問題にぶち当たらないといけません。そしてそれを解決して「こうやって解決したんだ」という知識を蓄積していく必要があります。そうやって蓄積した知識は確実に自分のちからになります。これは色んな分野でも言えることなのかもしれませんね。問題解決を放棄する人間にはプログラミングは一生身につかないでしょう。これは色んな分野でも言えることなのかも(中略)。コピペがプログラミングにおいてダメだよ!と言われるのもこれが所以なのでは無いでしょうか。

「問題解決」という段階は、意外と軽視されているように思えます。軽視されている中、プログラミングが小学校で必修化するそうですが、本当に意味があるのかも考えものです。(語ると長くなるので省略)少なくとも大学という機関ではうまく教育出来ているようには思えませんから。

まとめ

  • 考えて乗り越えることに価値がある。乗り越えた時の知識は後で役に立つ、二度と忘れるな。

あとがき

特定の人向けのメッセージというか愚痴みたいになってしまいましたがそういう意図はありません。本当に。

*1:今では絶対書きたくないけどね!

*2:Javaみたいな記法

*3:コピペ、教えてもらうなど

*4:もちろん学年で。1個上の先輩はとても凄いし凄い。一年ちょい経った今では話は別な気がする。

*5:MinecraftJava、当時から働き始めた職場でRailsを使っていたのもある