全3873文字
PR

 今はプログラミングができないけれども、ゆくゆくはできるようになりたい。そう思っている人は多いだろう。そうした人が知りたいのは「独学でプログラミングができるようになるのか」ということではないだろうか。

 こうしたことを考えているのは、「独学コンピューターサイエンティスト Pythonで学ぶアルゴリズムとデータ構造」(日経BP発行)という書籍を読み始めたからだ。著者のコーリー・アルソフ氏は、大学の政治学科を卒業し、独学でプログラミングを学んで職業プログラマーになったという。前著の「独学プログラマー Python言語の基本から仕事のやり方まで」(日経BP発行)は、そうした経験を通して同氏が得たプログラミングの知識をまとめたもの。そうした知識の中から、特にアルゴリズムやデータ構造といったコンピューターサイエンスに焦点を当てて解説したのが本書だ。

 もっとも同氏がいう「独学」は、大学でコンピューターサイエンスを学んでいない人がプログラミングを学ぶことを指す。米国では、プログラマーはコンピューターサイエンスの学位を持っているのが一般的で、そうでない人は少数派だからだ。日本では、コンピューターサイエンスとは関係ない大学の学部を出てIT企業に就職し、システムエンジニア(SE)としてプログラミングをしている人も多いので、日本の実態とはややかみ合わない面もある。

 こうした本が出ているくらいだから、プログラミングを独学で身につけるのはもちろん不可能ではない。実際に独学で習得したという人もいるだろう。もっとも、プログラミングの解説書を買ってきて独学で挑戦しようとしたが挫折したという話もよく聞く。

 そうした人は「人から教わればできるようになるのではないか」と考えるかもしれない。たしかに本当に最初の入り口のハードルは、人に教えてもらったほうが乗り越えやすい面はある。しかし、そこから先の難度は、独学であろうがスクールであろうがオンラインの学習教材であろうが大差はないと感じている。

 結局、どんな手段で学習しようが、プログラミングができない最大の理由は「累計の学習時間が足りていないこと」である。中でも重要なのが、実際に手を動かしてコードを書いた時間だ。その時間が足りていないのが、プログラミングができない唯一の理由だといっていい。

 プログラミングは語学に似ていると常々感じている。どちらも本質的にはコミュニケーションの手段だからだ。対象が人なのかコンピューターなのかが違うだけである。自然言語に大量の熟語が存在するように、プログラミングにも多くのイディオムやパターンがある。大規模な文書をつくろうとすると構造を考えなければならないところも似ている。細かい点を挙げれば、粒度や結合度、再利用性といったプログラミング特有の概念はあるものの、おおむね同じようなものだ。

 そう考えれば「プログラミングスクールに入ればあっという間にプログラミングができるようになる」などということはあり得ないことがわかるだろう。英語が全くわからない人が英会話スクールに1カ月間通って話せるようになるのは、1カ月分の英語にすぎない。同様に、プログラミングスクールに1カ月間通って書けるようになるのも、その期間に見合ったレベルのコードだけである。