TechFULの中の人

triple-four’s blog

プログラミングを好きになるには?

こんにちは!
大学の後学期が始まり、毎日ヘトヘトのganariyaです。
今回は、プログラミングが苦手・嫌いな人に向けた人に読んで欲しい内容です。ちょっと自分のポエム的な要素も入ってしまいますがお許しください。


はじめに

まず、第一に僕はプログラミングが大好きです。
大学から始め、大分スタートが遅めなプログラマーですが、今は自分の仕事道具でありながら趣味でもあるといえるほどプログラミングが好きになりました。

今でこそプログラミングが大好きと言えますが、一年生の頃や二年生の前半はそこまで好きというわけではありませんでした(むしろ苦手でした)。しかし、プログラミングに対する認識の変化勉強スタイルの変更をしたおかげで、プログラミングを受け入れることができるようになりました。

現在、日本では多くの情報系の学生がプログラミングを勉強しています。しかし、プログラミングが苦手だったり、もうこれ以上触りたくないという学生も多くいるのも事実です
このような、プログラミングが好きな得意な学生と、嫌いで苦手な学生の違いについて、個人的見解を示してみようと思います。

僕の考えでは、本当にその学生がプログラミングが嫌い・苦手なのではなく、好きになるようなきっかけ・体験をしていないのが原因だと考えています。そのことについても書いてみようと思います。

自分のプログラミング経歴

まずは、自分の経歴から書かないとうまく伝わらないと思うので、下に書いてみます。

大学以前

プログラマーになる前は、医者になりたかったです。 しかし、どうしても浪人したり、大学入試で勝負することが怖かったため、自分の学力なら絶対に落ちない簡単な大学に入りました。
今となってはこの選択は悪手だったとは思いますが、今の友達に出会えたり、高校の友だちに追いつくために毎日勉強を頑張ってこれたので、これはこれで良かったと思えるようになりました。

一年生

ゲームプログラミングサークルに入り、いろいろな言語をかじっていました。
特に多くの時間をプログラミング言語の学習に費やし、使いもしないような文法を理解しようとしていました。
当たり前ですが、使いもしないのに、一生懸命文法を覚えているため、どうしてその文法があるのかわからず、すぐに内容を忘れ、結局ほとんど何もせずに一年生を終えました。

二年生

前期の授業で、チームを作って何か自由に作ろうという授業がありました。
僕たちのチームではUnityを使用してスプラトゥーンもどきのゲームを作成しました。この授業を通して、誰かとなにかプログラミングをする楽しみを知った気がします。

また、二年生後期から文法主体の勉強をやめて、とりあえず何か作ってみるというスタイルに変更しました。これが今ではだいぶ響き、効率よくプログラミングが身についていると思っています。

二年生後半からゲームプログラミングだけでなく、機械学習ディープラーニング、Web言語の勉強をはじめました。

三年生

三年生にはいってからは、競技プログラミングにはまり、毎日競技プログラミングばかりをしています。
しかし、それだけではまずいので、Chromeの拡張やDiscordのボットなど、誰かに使ってもらえるようなアプリ制作をすることを心がけています。

以上のようなことを大学からのプログラミングで行ってきました。やはり二年生の中間あたりでガラッとプログラミングに対する姿勢が変わったような気がします。

まずプログラミングとは?

自分の経歴についてのあとは、まずはやはり「プログラミングとはなにか?」という定義についてですね・・・

プログラミングが苦手な人はプログラミングに対する定義・認識が間違った方向に向いていることが多い気がします。

定義

コンピュータのプログラミング(英: programming)とは、コンピュータプログラムを作成することにより、人間の意図した処理を行うようにコンピュータに指示を与える行為である。(Wikipedia出典)

プログラミングの正しい定義とは、「コンピュータに何かをやらせること」のようです。

それでは、誤った認識とはどのようなものなのでしょうか。

誤った認識

プログラミングとは、文法であり、完璧に文法を覚える必要がある。 ソースコードを書くことが目的であり、完璧なソースコードを書くことが正義である。

プログラミングが苦手・嫌いな人は以上のような認識をもっている気がします。
文法を暗記することに取り憑かれ、文法だけではすぐに飽きるので、なかなか続かない・・・(昔の自分を思い出します。)

これも完全に間違ってはいないのですが、最初の定義である「コンピュータに何かやらせること」とは少しベクトルが違う気がします。大切なのは文法や暗記ではないはずです。

今度は、自分の思うプログラミングを書いてみます。

自分の思う正しい認識

プログラミングとはただの「手段」であり、「目的」ではない。プログラミング以外でその目的を達成できるならプログラミングを使う必要はない。

以上が、自分の持論でありポエムです。ただ、ある程度的を得ている気がします。

プログラミングが苦手な人は、プログラミング自体を目的としていることが多く、プログラミングが得意なひとは、プログラミングはただの手段・道具であると割り切っている事が多いです。

この考え方・認識をできるか出来ないかで、その人がプログラミングが得意・好きになるのか、不得意・嫌いになってしまうのかを大きく左右してしまう気がします。

プログラミングが嫌い・苦手な人の特徴

それでは、プログラミングが嫌い・苦手な人は一般的にどのような特徴があるのでしょうか。

文法に固執する

苦手な人は、文法を多く気にして、何かアプリケーションを作る前に文法の学習に疲弊して挫折してしまいます。
それよりなら、文法を学習するときは1日なら1日と時間を決めてそれ以降は作りながら覚える!としたほうが頭に残ることが多いです。

アプリケーションを作成したことがない

苦手な人は、何か作品・アプリケーションを完成させたことがなく、ターミナルアプリでじゃんけんなどを作成して終わってしまっています。
プログラミングは、自分の欲望をすべて満たせる魔法の道具です。
一度、自分の好きなものに関したアプリケーションを完成させると自信がつき、どんどんプログラミングが楽しくなります。また、文法を真に理解することが出来ます

クリエイター気質ではない

これはもう性格の話になってしまうのですが、やはりプログラミングができる人は「一つのことに固執できる人」であると思います。
プログラミングはバグ・仕様との戦いです。挫折する場所は無限にあるため、どうしても性格がついて回ります。
しかし、プログラミングが好きになればどんどん改善され、少しずつ長くプログラミングができるようになります。(実体験)

プログラミングでできることをイメージできない

プログラミングができない人は、何をしたら良いか分かっていません*。
また、
プログラミングで何ができるのか、どこまで勉強しないといけないか**という点についても理解できていません。

そういう場合は、自分のプログラミングのできる友達や、インターネットで凄腕プログラマーを見習うと変わると思います。
また、プログラミングで何ができるのかを調べてみましょう。きっと何か自分の興味のあるものが見つかります。
そして、TechFULで自分のプログラミング力を分析してみましょう。

なんとなく情報の道を選んだ

この人が一番辛いかと思います。
事実、最初自分もなんとなく情報系の大学に入ったので、最初はプログラミングに興味がなく続かなかったのが事実です。 しかい、好きになるきっかけがあれば大きく変わることが出来ます

プログラミングが好き・得意な人の特徴

それでは、一方プログラミングが好き・得意な人の特徴とは何でしょうか。
大まかにはプログラミングが嫌い・苦手な人の反対の内容になります。

文法学習を少しにして、作りながら覚える

ここが一番大きな違いかと思われます。
好き・得意なひとは、まず文法の勉強時間を決め、それ以降はアプリケーションなどを作りながら覚えることが多いです。
こうするほうが、どうしてその文法があるのか?という理由に気づけ、より面白いものを作成できる事が多いです。

友達とプログラミングの話をする

プログラミングができる人は、同様にプログラミングのできる人の友だちを多く持っています。
プログラミング好き同士がしゃべると楽しいですし、新たなアイディアが出たり、一緒にアプリケーションを作成し、新しいことに気づけたりします。

暗記より理解を優先する

プログラミングができる人は、文法やフレームワークの使い方を暗記しようとせず、どうしてその文法があるのか?、どうしてそのフレームワークが使われているのかといった理解を重要視しています。

プログラミングが楽しいというきっかけを経験している

当たり前ですが、プログラミングが好き・得意な人はプログラミングが大好きです。
しかし、最初から好きであったわけではありません。
何かアプリケーションを作ったり、友達と語ったりする中でプログラミングが楽しいというきっかけを経験しています。
このきっかけを経験したかどうかでプログラミング人生が大きく変わると思います。

外部に発信しながらプログラミングしている

プログラミングができる人は、アプリケーションを作成しながらTwitterFacebook、ブログなどでその情報・作品を発信しています。
誰かに見てもらえるというのはとてもモチベーションが出ますし、完成させなければいけないという意識が高まります。
また、完成させていろいろな人に使ってもらえるととても幸せな気持ちになります。

プログラミングを好きになるには?

それでは、以上を踏まえてプログラミングを好きになるにはどうすればよいのでしょうか?
個人的には、以下がとても重要なファクターを占めている気がします!

文法を気にしない

アプリケーションを一つ完成させて発信する

プログラミングが好きな友達を持つ

これらの3つを意識するとすぐにプログラミング初心者から脱却して中級者になることができると思います。
プログラミングが好きになるきっかけを是非探してほしいと思います。

 さいごに

プログラミングを好きになるには?という内容で書いてきました。
自分の考えでは全員プログラミングを好きになることができて、そのできる・できないの差は、好きになるようなきっかけをしたのかどうかという点だと思っています。
是非、アプリケーションを文法を気にせずに完成させて、好きになるきっかけを探してほしいと思います。

しかし、それでも、プログラミングが苦手・嫌いな人はいると思います。 そういうときは、他の分野のプログラミングを探してみてください。
ひとえにプログラミングと言っても、その中身はいろいろな道があります。アプリ制作・ゲーム制作・システム制作・Web制作・機械学習・・・数え切れないほどです。
どれか一つが嫌いでも、きっと他に自分の好きな道があるはずです。

ぜひ、これからプログラミングを始める学生が、この記事を通してプログラミングを好きになって頂ければ幸いです。お読みいただきありがとうございました。