こんにちは。もんしょー(@sima199407)です。
という疑問があるかと思います。
以前に以下のようなツイートをしました。
エンジニアになりたいと言う人は多いけど、ポートフォリオまでたどりつく人は意外と少ない。
やめてしまう人は、時間が取れない。モチベーションが続かない。Progateを回しすぎた。が多い。
作るものをさっさと決めて、逆算して必要な知識を勉強するのがいい。
全部やらなくていい。
— もんしょー@リモートエンジニア|YouTube登録者1800人突破 (@sima199407) May 31, 2020
エンジニアになりたいと言う人は多いけど、ポートフォリオまでたどりつく人は意外と少ない。
やめてしまう人は、時間が取れない。モチベーションが続かない。Progateを回しすぎた。が多い。
作るものをさっさと決めて、逆算して必要な知識を勉強するのがいい。
全部やらなくていい。
これについてもう少し詳しく解説していきます!
動画でも解説してます
キーワードから申しますと、「トップダウン」です。
本記事は
「どうしても学習が進みません!」
「基礎をやらないと不安なんです!」
という方向けに解説します。
学習に失敗するケース
結論から言えば、
基礎を固めすぎることはするな。
です。
文法をしっかり覚えてクラスの付け方や用語をしっかり全部覚えることは大事なことなんですが、僕個人の意見としてはみんな真面目にやりすぎです。
「土台がしっかりしていないと後でつまずいてしまう。。。」
という思いからかもしれません。
確かに土台はあった方がいいんですけども、やりすぎてはいけないということです。
重要なのは、
あなたが今エンジニアに転職するためにプロダクトを新しく作成する能力があるかどうかなので、それを達成するために最短で行動を行うことです。
[box03 title="かんたんな流れ"]具体的には、基礎を一通りやってからポートフォリオの作成、面接の対策、プロダクトの作成をやってほしいと思っています。[/box03]
基礎を詰めすぎないのが大事なポイントです。
基礎って無意味なの?
という考えの人も出てくると思います。
結論、基礎は基礎で必要です。
例えば
「CSSを使っている時にクラスとIDの区別がわかりません!」
「プログラミングの言語でif文って何ですか?」
というレベルだったら一旦基礎学習をおすすめします。
ただ、思っている以上にやる部分は少ないというところなのです。
難しい処理をあえて勉強してからプロダクトを作るということをやるよりも作っている時に難しい処理をするという考えなのです。
常に応用問題は実践の中でやっていくということがポイントです。
という感じで時間があればいいです。
プログラミングはスラスラできなくてもいい
実際には忙しくそんな時間ありませんよね。
しかし全部できないと不安と思うかもしれません。
すらすらコードを書けてどんなWebサービスも簡単に立ち上げられる人ってかっこいいですよね。
ただ、そこを目指すっていうところではなくて自分に必要なことだけをやっていく、これがまず大事なことです。
プログラミングできる→すらすら書けるではない
ことを覚えてください。
エンジニアは調べることがメイン
大体のエンジニアとかプログラマの作業は8割調べる作業なんです。
頭を使ってクリエイティブに考えるとかはなくて、
基本的に作業で失敗して、トライ&エラーを繰り返して、分からなければGoogleで調べるという地道な作業です。
すんなりWebサービスが立ち上がるというところは、なかなか現実的に厳しいところが現場には存在します。
僕らは英語を話すことができる
突然ですが、あなたは今英語話せますか?
言うかもしれません。
確かにペラペラにしゃべるのは難しいかもしれません。
ただ、やることを絞ればできたりしません?
海外旅行にあなたがいくという時にホテルで過ごすための英語とレストランで注文できるための英語、これだけ喋れれば何とか出来そうと思いませんか?
話を戻すと、自分に必要のないことは、とりあえず後回しでいいのです。
プログラミングも全部やろうとしなくてよくて、
ログイン機能が分かる、メールの送信がわかる。
今回必要なところがそれだけだったらそれだけ分かればいいんです。
他のところは必要ありません。
分からない時は必要な分だけ、また覚えればいいので全部覚える必要はないんです。
言い換えれば、完璧を求めなくてもいいということです。
これだけやれば8割いける
プログラミングで挫折する時っていくつかパターンがあると思ってて、
その中で一番挫折するときってゴールが見えない時というのが理由です。
「一つ一つ積み上げてやっていく」
「そうやっていくのがかっこいい」
これが普通だと思っている人が多いです。
こういう人ほど、この挫折に陥りがちです。
他のモノゴトそうである
特に部活とか受験とか、やっぱり基礎が大事だとか、最初が肝心なんだって言われてきた人ほどつまずいてしまうというケースがありがちです。
もう少し考え方を変えてみましょう。
この方法であれば8割行けるというのは、この方法であれば8割ぐらい挫折を回避できるということです。
方法とは、逆算して行うということです。
目標を決めてから行動する
つまりトップを決めてからやるということです。
なんだそんなことかと思われるかもしれませんが、メリットとしては目標が見えやすいことです。
何故なら先にやることを決めるので、例えば無駄な積み木を積み上げていくことはせず、必要なことだけを積み上げればいいということですからね。
プログラミングにおいて文法、例えば暗記してとか完璧にライブラリを使いこなせるようになって一つ一つ積み上げることはないのです。
やれることをやればいいんですよ。
富士山のルートは複数ある
例えば富士山がありますよね。富士山を登るためのルートがいくつかあるのを知っていますか?
実は4つあるのですが、それぞれ難易度っていうのが違うんですよ。
「富士山登った」という話を聞いたら、
・全部のルートを制覇した
・全部のコースのことを知ってる
というわけじゃなくて、1つのコースだけを登ったということです。
全部のルートを知っている必要はありませんよね。
さらに自分がどのルートが合っているのかをまず調べますよね?
どのルートなら自分はできるかどうかっていうのを逆算するわけです。
・これは初心者には難しそうだ
・距離が長そうだ
とかとゴールまでのイメージを作ります。
自分の登りやすいルートを見つける
これはプログラミングも同じでプロダクトの作成とかエンジニアの転職までというゴールまでいけばいいので、自分がやりやすい、いきやすい道をとりあえず選べばいいのです。
実際には大変かもしれません。
僕も何度も挫折して、何度も諦めてはやって、また諦めて、はやってということを繰り返して、さらに現場入ってからもいろんな人に迷惑をかけながら何とかやってきました。
しかし少しはエンジニアになるための道のりというのはイメージできたと思います。
そんな感じでもいいんじゃないでしょうか?