覚えるんじゃない、身につけるんだ!2本立て
プログラミング学習に限らないことだが、学習というと覚えることを主体と考えてしまうことが多い。実際は、そうではなく、身につけることなのである。身につけるということは、何も見なくともコードが書けるようになるということであり、そのためには数多くのコードを書くことが大切である。
中には全部覚えないといけないと書けない考える人がいる。別にそれでも構わないのだが、覚えても書くことをしなければ身につかない。プログラミング学習やHTML/CSSの学習などといったものは、そうしていくものなのである。学校の勉強ではないということを理解しておくべきだろう。
学習は大きく2ステップに分けられる。最初のステップは、基本構文を覚え、プログラムの書き方を覚える。次のステップでは、実際にコードを書いていくということになる。そのためには、なんらかの問題が必要だ。初学者は、いきなり何でもいいから書いてみろと言われても書くことができないと思ってよい。とはいえ、最初から難しい問題に取りかかってしまうと、多くは諦めて投げ出してしまう。ステップアップが大事なのだ。
Progateなどで学習している人たちに、「何周もしなくていいよ」という人たちがいる。しごく当然のことである。Progateは、覚えるという最初のステップだからである。これを何周もして覚えたからといって、実際にコード書いてみろと言われて書ける人はいない。すでに他のプログラミング言語を学んでいる人なら別だが。周回しても、せいぜい2週から3周程度だろう。これ以上は、時間のムダである。
問題の例として、金種計算を上げてみよう。金種計算とは、お釣りから、1,000円札が何枚、500円や100円硬貨が何枚と計算する問題である。
ここに、AさんとBさんがいる。Aさんはこの問題を解決するのに、インターネットで検索し、調べて「こうやって書くのか」として、そのコードを実際に入力して、スマートに短い時間で問題を解決した。一方、Bさんは自分なりに手順を考えて、決してスマートやり方ではなく、エラーを何度も出しながら自分でコードを書いて問題を解決した。
さて、どちらがプログラミングを身につけたといえるのだろうか。
最終的な判断を皆さんにおまかせしよう。
学習には優先順位をつけよう。これは、まず、必要なことを優先的にということである。たとえば、HTML/CSS+Javascriptを学習するとしよう。Web制作に必要とされているものだが、優先すべきはHTML/CSSであり、Javascriptはあとでもいいのである。オプション扱いでも構わない。しかも、必須と考えなくともよい。どうしても、HTML/CSSでは、実現できないし、Javascriptでないとダメというときになって考えてもよい。もし、Javascriptでゴリゴリとコードを書くということは、それはWeb制作ではなく、Web開発の部類に入る。開発であればJavascriptが優先され、HTML/CSSはその次になる。
このように、自分が何をしたいかによって、学習の優先度が変わるので、優先度を間違えないようにしておきたい。
同じようにデータベースを取り上げよう。まず、SQLを考えるかもしれないが、優先度はそうではなく、データベースそのものについて学習することである。データベースの設計に重点を置き、その後は実践として、データベースを設計し、データベース作成、正規化、リレーションシップとしてやってみることだ。本だけ読んでも身につかない。具体的に例をあげるなら、在庫管理のデータベースを設計してみるとよい。もしかしたら、在庫管理ってどうやっているの?というところから始まるかもしれないが、それで構わない。そういうことがわからないと、データベースの設計をしようがない。
学習と優先度について理解しておき、数多くの実践をみずから経験して身につけてほしいものである。