※こちらの記事は、プロスタ編集部がプログラミングの学習法を公開することで、皆様のお役に立ちたい意図で投稿しております。
参考サイト:プログラミングに向いている人、向いてない人
プログラミングに向いている人、向いてない人
プログラミングスクールで講師を勤めていた方の実体験に基づく話です。
「プログラミングに向いている人、いない人」について、考えてみましょう。向いている=長所、向いてない=短所として洗い出せば、単に自分がどちらなのかということだけでなく、「(自分は)向いていないと思ったけど、こういう点(短所)を改善すれば、プログラムが作れる人になれる!」と気づくことができるかも知れません。
プログラミングスクールの授業の実態
私は一時期、社内の教育でプログラミングを教える仕事をしていました。
それは、いわゆる「プログラミング実習」の授業で、とある電気メーカの工場のラインで、将来、監督する立場にある10代の若い人たちを中心に、教えるという仕事でした。具体的には、フローチャートの書き方やプログラムを作っていくコツについて一通り説明をするといった作業です。その説明が一通り終わると、そのままの流れで、「実習」になるのですが、大半の生徒は、固まってしまいます。
「分からないことがあったら、遠慮せずに、何でも聞いてください」
必ず最後に、そう付け加え、生徒たちの間をねりあるきます。でも、遠慮をしているという訳ではないらしいのですが、手が動き出す生徒というのは、ほとんどいません。先生業務を始めた頃は、「少しでも理解を深めてほしい」という一心で
「では、私に分からないところを教えてください」
そう問い合わせると、彼らの回答は、ほぼ、間違いなく「全部・・・」という答えが返ってきます。つまり、彼らにとって、「プログラミング」とは、「何が分からないか、分からない、分からないところが、どこだか、よく分からない」のです。なんだか哲学書みたいな話になってきましたが、よくよく、思い出すと、確かに自分も、始めた頃は、そうでした。
プログラミングの世界とは
プログラミングの世界は、学校の勉強と違います。それは「一つの問題」に対して、「一つの答え」が用意されている数学の公式のようなものではなく、たとえ、同じ答えに到達するとしても、沢山のルートがあります。もっとも、近年のプログラミング言語の進歩により、そういった「ばらつき」は抑えられる傾向にあります。これは、プログラムの生産性(可読性、再編、追加編集、デバッグなど)に大きく寄与する要素だからです。
それでも、やはり、個性が出ます。特に、私が教鞭をとっていたころは、最も原始的でシンプルな「アセンブラ」という完全に機械よりな言語でしたので、特にその差が著しかった…という記憶があります。現在は、そういった「個人的なばらつき」が出にくく、生産性の高い「オブジェクト指向」と言われる言語が主流です。
代表はJava、MSだとC#などが挙げられます(C++はオブジェクト指向の強い言語とも言われていますが、私はC言語をむりくり「オブジェクト指向」にしたもののように思えて、むしろ、複雑で、プログラミングの入門者には向かないかと考えています)。C言語もどちらかというと、OSなどのシステムを構築するために開発されたものなので、オブジェクト指向とは程遠く、同様にこれからプログラミングを始めたい人にはあまりお勧めでありません。
今までの学校教育ではそういった、「アルゴリズム」という考え方について学ぶという、ことはなかったように思います。だから、彼らも面食らってしまったのでしょう。もっとも最近では、これらを子供たちに学ばせようという動きがあるらしく、義務教育でも政府は「プログラミング」をコンピュータ教育の一環としてやっていく方針を固めたようです。
また、別の例を考えてみましょう。例えば、よく、人を「理系」「文系」で分けますが、「理系」は向いていて、「文系」は向いてないのでしょうか?
確かに、数学が得意な人だったら、その、プログラミング言語の仕様を理解して、「方程式を解く」ように、プログラムをすらすら書けるのかもしれません。これらを踏まえ、簡単に「プログラミングに向いている人、いない人」について、まとめてみましょう。
プログラミングに向いている人/向いていない人
プログラミングに向いてる人の特徴
・理系に限らず、様々な「もの」に対して興味を持つ人
・文書を書いたり、よんだりするのが好きな人
プログラミングに向いていない人の特徴
・論理的に考えるのが嫌いな人
・物事にたいして、粘り強さがない人
【おすすめ記事】
➡1人でのプログラミング学習。効率を良くする5つの方法とは?
➡【プログラミング学習法】QiitaやStudyplusを使って学習モチベーションを高める
➡初心者にオススメ!プログラミングを学習できるスマホアプリ7選