エンジニアとしてスタートを切るにはどうしたらよいか?
最近はドットインストールやProgateなど、低価格でプログラミングを始められる環境がが整っていることもあって「まずは学習サイトで勉強して手を動かしてみよう」といういう風に言われることが多いです。
HTMLとCSSからスタートして、 PHPやJavascriptに進むのが定番の始め方のようですね。
ただ、プログラミングの学習サイトはよくできているものの、ここで勉強ばかりしていてはエンジニアとしてのスタートはいつまでも切れません。
ノウハウコレクターに陥りがち
プログラミングを覚えて仕事に生かすことが目的だったのに、いつのまにか履修することが目的になってしまう。
たとえば、Progateでは課題をクリアしていくごとにレベルがアップしていくので、まるでゲーム感覚でプログラミングが”学習”できてしまう。ユーザー間での順位も表示されるので、課題をクリアして上位に食い込むと、ついできるようになったような気がする。
ただ、ここでプログラミング言語の文法を覚えたり、サンプルプログラムを真似するということ自体が目的になってしまわないようにしたい。
プログラミング学習で重要なのは、学んだ知識を生かして仕事をしたり、実際にホームページやwebサービスを立ち上げたりして実践で使うことで自分の体に定着させることだ。
勉強段階だと分からないことがあっても、「どうせ勉強だからいいや」、と最後まで解決するプレッシャーはかからない。
私も今だに独学で新しい言語に挑戦はしてみるものの、普段使っていない言語はほとんど定着しない。だから仕事で使うだろうという状況になるまで、単なる勉強はしなくなった。
新しく勉強した言語のほうが難しい、というわけではない。むしろ言語をいくつか覚えることで、後々新たにプログラミング言語を習得するバードルは下がるはず。だが、月日が流れ、気が付けば具体的なことはおおよそ忘れてしまっている。
ここで知識を定着させようと思ったら、実際に仕事で使ったり、アプリやサービスをリリースする必要がある。
元大リーガーのイチロー選手が以前テレビのインタビューでこう言っていたのを思い出す。
「練習で何千打席立ったとしても、実際に試合で立った1打席のほうがはるかに自分の成長になる」
実際の試合では、投手が右投げか左投げか、球は速いのか、変化球のコントロールがいいのか、試合状況にも応じてバッティングの難しさは変わってくるはずである。確かに練習よりも試合のほうがためになるというのもうなずける。
プログラミングもこれと似たようなところがあるのではないか。
勉強でプログラミングをしているというのは、野球でいうと練習で素振りをしているというか、良くてピッチングマシーンを相手に一定の球を打ち返しているようなものです。野球の例えばっかりですが…。
”やらなければならない”状況が人を成長させる
当たり前のことを言うようですが、仕事としてプログラミングをやるのは、勉強でやるのとは全然違います。
実際にはホームページでもカレンダーを入れたくなったりとか、ユーザーの登録フォームを作って会員制のサイトにしたいとか、アプリケーションによってやりたいことも、納期や予算などの条件も変わってくる。もしかしたら、今の全力を注いだとしても実力不足で、さらに技術力や知識のアップデートを求められるかもしれない。
だが、限られた時間やリソースの中でもがき苦しみ、解決した確かな手ごたえがエンジニアを成長させる。
プログラミングの知識が定着する過程のなかで、こういう試行錯誤は不可欠だと言っていい。
やはり、まずは「やらなければならない状況」に飛び込んでみるのが重要である。
とは言っても何の準備もなしには雇ってくれるところもないだろうし、雇われて会社に入ってみたら体育会系で人間関係がすごく合わなかったとか、エンジニアとして本質的な成長につながらない苦労をしても仕方がないので、事前にある程度の知識とノウハウは必要だと思います。
ITエンジニアと言っても職種は様々ですので、色々情報収集をしてみてください。
では~。