プログラミングブームに煽られて、何か勉強したいと思っている人が増えた。
プログラミングの学習環境ってすでに至れり尽くせりで、本当にわずかな出資でそこそこのスキルが身につくと思っている。
しかし、いざ!プログラミングを!!と思っても、最初に立ちはだかるのは「どの言語を選ぶか」という点だ。
人気プログラミング言語のランキングを見て、PythonやJavaScriptを選ぶ人が多いようだけど、やっていると「あれ・・・俺、本当にこの言語学んでていいの?」と不安になる。
その気持ち、よくわかりますよ。
プログラミング言語選びは人気よりも興味
言語選びに正しいも悪いもない。
と言いたいけど、言語選びは結構重要だと思ってる。
私が最初にプログラミング言語に触れたのはEXCELのVBAだった。今では書きたいと思わない言語だけど、VBAの良いところは、画面と連動するところ。書いたコードの通りにセルやらシートを動かせる。つまり動きがある言語だった。
これが私にはよかった。黒い画面でガリガリやる系の言語だったら本当に飽きて続かなかったと思う。
のちにPythonを書く機会があったけど、そのときもPythonでGUIプログラムを書く案件だった。
「書いたコードで画面が動く」。ここに興味を示せたおかげで今ではWeb系の言語を続けて学習できている。Webはデザインの自由度が高いので楽しい。
私の経験から言えることは、興味にフォーカスして言語を選定して言ったおかげで挫折せずに乗り越えたということ。言語選定に、「高給」「人気」「需要」などを考慮していたら、おそらくGOやC言語といった学習コストが高く挫折しやすい言語を選んでいただろう。
学習を続けられる理由を早めに見つけることが肝要だと思う。
言語の目移りは非効率
どんな言語にも批判はある。
たとえばVB.netはWidowsのプログラムを書く言語としていまだ現役バリバリだが、悪評もよく聞かれる。こういった言語の悪評や「こっちの言語のほうが良い」という巷の情報に踊らされて、多様な言語を行ったり来たりする人がいる。
もう1つの言語を極めているならそれでもいいかもしれない。しかし、スキルが中途半端なまま言語を横断すれば、せっかく身についた部分も捨てることになってしまうと思う。
私はかつて取り組んでいたrubyやVBAは結局中途半端なまま離れてしまったので、今ではほとんど書けない。
プログラミングは1つの言語を極めておけば、結局やることは「条件分岐」や「繰り返し」といったアルゴリズムを記述するだけ。書き方は変わっても考え方は意外と近い。それを理解していれば、言語の横断も乗り越えられるはず。
少し前にヒットした「独学プログラマー」でも”年に1つは新しい言語に挑戦しよう”と書かれていたが、あれは、操れる言語があっての話。これも途中、これもやりかけ、当状況で新しい言語にチャレンジしても使えるようにならない、というのが実体験だ。
プログラミングに関する情報が多いということは、ちょっと不便でもある。
教材を買いまくってさらに迷走
動画、学習サイト、書籍、ブログ記事等々。プログラミングを学べるメディアは有料/無料、過去最多だ。
言語選び同様に教材の目移りも迷走の始まりだ。
Udemyなどの動画教材は、セール期間にはタダのような価格で売り出される。そうすると「少し興味がある」くらいで教材をどんどん買ってしまう。これらがいわゆる”お蔵入り”するわけで、結局手つかずで放置となる。
なにかのタイミングでやってみよう、となったときにはすでに情報が古くて使えないということも考えられる。(udemyに関しては、講座内容をアップデートしてくれる講師もいるが)
格安で学習教材が手に入るのは本当にありがたいこと。しかし、それを上手に使えるかは自分の問題。基本的に人は1つのことに集中したほうが学習コストは低く抑えられるので、コレ!と決めた講師・教材についてみっちりやったほうが身につくのは早いはず。
教材を同時に買って横断するよりは、ひととおり教材を終わらせて、次の段階にステップアップしていった方が得策だ。
忙しい現代人に同時にいくつもの言語やフレームワークを学習する余裕は無いと思う。
決め打ちで得意分野を作る
専業プログラマーでもない私が好き勝手書いているが、使う言語やフレームワークを”決め打ち”して学習することが、プログラミングの学習効率を高めるコツかと思う。
一時期Pythonに傾倒したときに、Pythonでなんでもやろうとしたことがあった。でも、Webアプリを作るならJavaScriptだと思いなおしてVue.jsやReact.jsに手を出して迷走した。
Pythonを信じて邁進していたら、もっとPythonを使いこなせていたと思う。たくさんの言語を触ったことがある、程度では何もできないのと一緒だ。世間の評判や需要は一旦置いておいて、自分で選んだ言語を信じたい。
「これが得意です」と言えるまで。
必要なモノは後から見えてくる
プログラミング学習を続けていると、必要なモノ(フレームワークやテンプレートエンジンなど)は必要な段階でわかってくる。その時・その案件で学習するかどうかを選択すればいいし、自分で必要と感じなければ学習効率が悪い。
いきなり「便利だ」と言われて重いフレームワークを入れるより、基本を押さえたうえで、必要性を感じた時に学習するようにしたい。
今は親切に「これとこれを知っていれば制作の効率が上がる」と初心者には難解なフレームワークやテンプレートエンジンなどを推奨している記事も多い。私も随分そういう情報に踊らされたけど、結局いろいろ捨てた。
効率化は確かに大事だが、最初から取り組むにはちょっと重いかなと思う。プログラミングのベストプラクティスといわれている教材や動画で、フレームワーク等を使わずに基礎的な書き方を教えているのは、やはり「基礎あってのプログラミング」ということなんだろう。
さいごに
プログラミング初心者にとって「言語選び」は一大事だ。
私も言語選びで迷走し、いくつかの言語を中途半端に渡り歩いたからこそ「ひとつの言語に集中することの重要性」がわかった。
言語によって書きやすい読みやすいは差があるものの、「自分はその言語でプログラマーになるんだ!」という強い気持ちで、他の言語に浮気しないようにすれば、周りの雑音もかき消されるんじゃないかな。
友達がGOをやりだしたとか、今キテるのはDartだとか聞くとフラフラ~とそっちに寄って行きたい気持ちをぐっとこらえて、ひとつ自分が勝負できる戦場を持つことが、今必要なことだと思う。
コメント