ポエム プログラミング初心者に言いたいこと
zennではポエムOKらしいので… ポエムを試しに書いてみます。
「プログラミング初心者」はどこにもいない
まず (規格化された)プログラミング初心者はどこにもいない ということを言いたい。
下記のいずれも、プログラミング初心者だけど、条件が同様に思えるだろうか?
- 趣味でプログラミングを学ぶ人
- 小学校・中学校で初めてプログラミングを学ぶ子
- 大学で初めてプログラミングを学ぶ人
- 社会人をやっていて、副業の足がかりとしてプログラミングを学ぶ人
- 会社で初めてプログラミングを学ぶ人
全員、知識などのバックグラウンド・利害・条件・目指している像が異なる。(後者になるにつれ、即物的な学習結果が欲しいという利害が生まれがちで、かつ、教育に金を使える裁量も増える気がする。)
そもそも、上記の分類以上に人にはそれぞれ性格や個性がある。いや、むしろこっちのほうが大きい。
そう考えると、「プログラミング初心者の王道はこれです!」なんてのは無く、そう言っている人がいたとしても、 学習者の個性やバックグラウンド、学習条件に暗黙の条件をつけているに過ぎない。
たとえば、私は会社勤めのサラリーマンとして、新人に技術的なことをたびたび教える機会があるのだけれども、会社には一定以上の現代的な知的水準の人しかおらず、そこには、文字の認識が苦手という人、英語が一切ダメという人、数学的な要素・抽象的な要素が一切駄目という人、昨今のITに触る機会すらない人、家にPCネット環境がない人というのはおそらくほぼいない。学習目的も「業務を円滑に遂行できるようにする」という目的に揃っている。
だから、学習方法も考えやすいし、効率的なものになる。結局、万人に通用する教育なんてものがあったとして、あなたがその教育方法に合わせないと成立しない。
要するに、プログラミング初心者に対して言いたいのは、プログラミングの学習を始めるにあたって王道なんてものは無いし、その学習方法がフィットしているかは、あなたの感覚以上に信じられるものは無い、ということを言いたい。
コスパや効率を無闇矢鱈に求めるなかれ
プログラミングスクールが客寄せしたいのかわからないけれど、そういう人たちが無闇に発する「コスパ」や「効率」、「正しい・間違い」「絶対にやってはいけない」というワードを鵜呑みにしないでほしい。こんなものはYouTubeやブログで客引きのためにゲスいワードを並べているだけで、さして意味はない。
そもそも、学習に決まった形や最適解があるなんて勘違いしないでほしい。義務教育だって、文科省が勝手に指導要領を作っているだけで、それが正解なんて保証は無い。
私の経験としては、なんか体系だったものを血肉にするのって、効率という軸を度外視した作業を繰り返した上に得られているという実感があるので、コスパや効率を求めれば求めるほど血肉になる度合いからは離れていくと考えている。
自分で考えて、手を動かして、感情が動く(ここ大事)と一番脳に残りやすい。 手を動かして物を作っていちいち感動したりしているやつは、努力している自覚がないが、どんどん伸びていく。
勘違いしないでほしいのだが、非効率や無理な勤勉をしろといっているわけではない。上記のような体験を短時間で積むという意味での効率は大事だが、何故か効率の神様は効率を一心に追い求めてると微笑んでくれない経験しかない。(そういうレベル上げ作業がとてつもなく上手な人がいて悔しいのは否定しない)
私の体験としては、コスパや効率を最初に求めていたはずなんだけど、最終的には結局試行錯誤するしかなかったという思い出しか無い。結局モノになったかどうかは最後まで意地で食らいつくかどうかという差だったように感じる。
誰も何が正解なんて知らない。 効率よく人生を生きてしまったら、おそらくすぐ死ぬことになるから、学習も思い出もないだろうとは思う。
金をかけないとプログラミング学習できないなんてのは間違ってる
プログラミングってのは世界で有数の、金がかからない趣味だと思う。パソコン一つあれば始められる。
それを証明するように、スタートアップはイニシャルコストを抑えてWebサービスをリリースするし、中小のITシステムベンダーも固定資産をあまり持っていない。
私は貧乏人だったけど、パソコンを操作するのが好きで多いに助かった。本当に金がかからない。ネットに親切な教材はたくさん落ちていたし、プログラミング初心者にとっては十分すぎる質の高いものばかりだと感じた。
プログラミングを学習したいけどお金がない人について、有料教材を買えとか高い本を買えとかは一切思わない。金があっても本当に買うべきかはよく考えたほうがいい。中古の本や、無料の教材を使って学習できるなら、それでいい。いっそゼロ円を基準になんとか済ませるというのをベースで考えたほうがいい。
ITは貧乏人にも割と平等で本当に惚れ惚れする。ただ、間違いなく金があれば、選択肢は増えるのは事実だ。(選択肢が多いほうがいいかは別)
プログラミングは難しい
これは私の持論なんだけれども、プログラミングを始めるにあたって、プログラミングから始めるのは、割と難しいと思っている。
そもそもプログラミング初心者というのは、基礎的な内容が頭に一切ないのが普通で、「バイト(byte)って何?」「ブラウザって何?」「ファイルって何?」「フォルダって何?」「プロトコルって何?」「URLって何?」という有様だと思う。概念の重要度の区別すらつかない。
そこに環境構築・プログラミングの概念・文法・意味論・ツールの使い方・ベストプラクティスを全て放り込むと、挫折者が出来上がるだけだと思っている。
不幸なことに、中級者以上になると初心者の気持ちはかけらも覚えていないのが普通で、初心者がアドバイスを求めても中級者以上はハードな入門コースを本気で薦めてくる。脳の中の伽藍(メンタルモデル)を作るのは長い期間と根気が必要ということを忘れてしまう。
もちろん人それぞれなので、プログラミングをいきなり学習して挫折しない人もいるけれども、私は初心者に「プログラミングが難しい」と言われても、まずもってその感想は正しいというほかないし、「プログラミングってそういうもんですよ我慢してください」と言うしかない。(ただ、怖がる必要はない)
だから、もしプログラミングを始めたいなら、
- 手取り足取り教えてくれる講師(教室)をセットにするか、
- プログラミングよりもっと簡単な題材を選ぶべき
…と思っている。
私は基本的にお金をかけるべきではないと思っているので、講師(教室)は無しとして、プログラミングより簡単な題材として、メモ帳でファイルを作ってブラウザで表示するだけのHTML(+CSS)でウェブサイトを作ることを薦めている。
HTMLでウェブサイトを作る間に、コンピュータやインターネットの基本的な概念がわかるし、そしてその上で、デジタルなものづくりをするにあたって、コンピュータが理解する規則に沿って制作すること、そうすればコンピュータがそれを処理すること、こういう基本的な概念を体得できると信じている。
なにしろ初心者は「文法」という概念すら知らないのだから、それをブラウザの画面で一発で脳に叩き込んでくれるHTMLはなんと偉大だろうと思う。
…ただ、これは私がHTMLからプログラミングを始めた体験によって非常にバイアスがかかっている意見で、まあ最終的には人によるだろうな、ということしか言えない。
いきなりRailsでブログを作って学習できる人もいれば、そういう一連の作業を形だけで覚えて業界に入ってしまって、あとあと、それを形作る技術の一つ一つの意味が掬い取れたという人もいることだろう。
どのみち、学習への道は決してきれいなものじゃなくて、正確に知識を積んで進んでいくという王道を夢見ているなら、それは間違いだということは確信して言える。
ソムリエになるのは最後でいい
初心者のあなたが気に入った本、気に入ったサイトがあったとして、その本のレビューやサイトのコメントに、「内容が不正確で学習に適さない」「古い」「必要な範囲がカバーされていない」などというものがあっても、気にしなくていい。
学習に適するかどうかはあなたの感覚が決めることであって、他人がとやかく言う権利はないし、初心者に正確な知識が必要な確率は限りなく低い。わかりやすさ重視でいい。
物事の細かい違いなど、詳しくなってから知ればいい。
(もちろん、初心者だということを偽って仕事を請けて、セキュリティに関する不正確な知識でとんでもない成果物を作って、誰かに損害を与えろという話ではない。)
…ただ、とんでもないマニアックなことを今知りたいなら知ろうとしても大いに結構と思う。自分にとっては面白いんだから。他人に否定されることはない。
最終的に
プログラミング初心者は、自分をいろんな意味で信じてほしいという気持ち
(ポエム終了)
Discussion
記事を読んでいて、自分も今まで綺麗なやり方を求め過ぎていたと気が付きました。
学習方法に王道は無いということを肝に銘じて、泥臭くコツコツ努力していきたいと思います。
なんだかすごく励まされました。ありがとうございます。