saii-lab

「知性のルーツを発見する」がテーマのブログ。人工知能(AI)、プログラミング教育などの幅広いトピックを扱います。

楽しくプログラミングを続けるために -プログラミング初心者が陥りがちな罠-

一時期は専業のプログラミング講師をしていましたが、現在は毎週末のみiOSのプログラミングを教えています。これまでに、トータルで500人以上は教えてきたかと思います。

様々な方にプログラミングを教えている中で、プログラミング初心者の方が陥りがちなパターンがいくつか見えてきたいので、この場で共有したいと思います。

下手に罠にはまってしまうと、プログラミング自体が苦痛となりトラウマになりかねないので、プログラミングを学習するにあたってそのパターンを予め知っておき予防することが大事に思えます。

以下に、ご参考までにですがそのようなパターンを5つほど挙げてみます。

1. 過剰な完璧主義

綺麗でバグの少ないコードを書こうとする姿勢は大事ですが、最初から完璧なコードを仕上げることは難しいです。むしろ、学習のためには多くの失敗するコードを数多く書くことが大事になります。

トライ&エラーを繰り返すことで、少しずつコードの理解が進み、次第に綺麗なコードを書けるようになります。

完璧に頭の中でコードが完成してからでないとコードを書くべきでないというのでは決してなく、むしろ、拙くてもいいので少しずつ頭の中のアイディアをコードとして転写することが大事かと思います。

2. 適切でない目標

長期的な大きな目標を持つことは大事ですが、短気的にいきなり大きすぎる目標を持つことは挫折の原因になります。

例えばアプリをプログラミングする場合、いきなりLINEやパズドラ、Facebookのようなアプリを目標にしてしまうと目標と現実の隔離が大きくなりすぎて失望感を感じることになります。

個人的に、最初の開発目標としてお勧めするアプリは、ボタンをタップすると音が鳴ったりシンプルなアニメーションするだけの簡単なアプリです。そのようなアプリでも、子供には十分に喜んでもらうことが可能です。また、アプリ内に広告を貼ることで決して多くはありませんが収益を得ることもできます。

特に最初のうちは、ミニマルなプロダクトの開発を心がけましょう。

3. 困難に対する恐怖心

慣れないうちは、既存のコードの行数やファイルの数に圧倒されるかと思います。また、見たこともない記号や文法、アルゴリズムに戸惑ってしまうこともあるかもしれません。

そのような場合は、ヘンリー=フォードの以下の言葉を思い出しましょう。

「何事も特に難しいことはない、それを小さな仕事に分ければ。」

どんなに複雑そうに見えるコードでも、それを小さく分解して一つ一つその機能を学習していけば、決して理解できないものではありません。

初学者にとってコードの巨大な山は未知の恐怖かもしれませんが、足元をみて一歩一歩登っていけば決して恐れるべきものではないのです。

4. 周囲に対する過剰な意識

プログラミングの世界では、他人の活躍を見て焦ってしまうことが多くあります。もちろん、健全なライバル意識を持てればいいのですが、自己否定や自己嫌悪に陥ってしまうパターンは避けなければいけません。

基本的には、どこかの天才が書いたコードよりも、自分で書いたコードを大事にしましょう。プログラミングの素晴らしい点は、コードを書くことで日々成長が実感できる点です。この成長の実感を、外部により乱されない心を持つことが大事になります。

5. 試行錯誤の不足

コードを書くためには、試行錯誤が重要です。

具体的には、以下のようなプロセスになるかと思います。

1. 仮説 → こうしたら機能するのではないかというアイディア

2. 実験 → 実際にコードを書いて、1.の実証を行う

3. 結果の検証 → 結果をもとに、1. の仮説が正しいかどうかの検証をおこなう

4. 改善 → 3. で仮説が間違っていると判断された場合、1. の仮説の改善を行う

(2. へ戻る)

頭の中だけでプログラミングの学習を完結することはできませんが、上記の過程を数多くこなすことで、頭の中で描ける仮説の精度が次第に向上し、上記のプロセスは洗練されていきます。

 最後に

これらの5つのパターンを意識することは、プログラミングに限らず、他の分野の上達においても大事ですね。

今後の世界におけるプログラミング教育の重要性は言うまでもないですが、そのためのノウハウはまだ十分に共有されているとは言えません。しかしながら、他の分野の上達の法則はプログラミングにおいても当てはまることが多いかと思います。

 

また、「傲慢、短気、怠惰」はプログラマーの美徳(?)として語られることが多いですが、

傲慢→勇敢

短気→フットワークの軽さ

怠惰→効率性の追求

と置き換えると今回の記事の内容にそのまま当てはまるのではないでしょうか。

 

これらのパターンを意識することで、皆さんのプログラミング学習が多少なりともスムーズになれば嬉しい限りです。