27歳未経験でエンジニア転職した元営業マン

アルバイトで半年間をドブに捨てた後、2ヶ月でエンジニア転職した記録

プログラミン初心者のときに苦しかったこと

f:id:h2meo:20181004005056p:plain

 

こんにちは、あだちマンです。

今朝、 Twitterを見ていたら下記の記事が非常に良記事だなーと思いました。

参考になった良記事

自分も上記記事の新人エンジニアの方と同じような状況なことが今でも多々あるので、エンジニアとしてまだまだなーと思いながら読んだのですが、ふと自分がプログラミングを勉強し始めた時に躓いていたことや、苦しかったことを思い出しました

今、エンジニアを目指してプログラミングを勉強している人で、なかなか思うように行かない人もいると思いますが、僕が勉強し始めたときは本当に酷い状態でした。今日は、今プログラミングを勉強して、ぐじけそうになっている人に向けて、「大丈夫ですよ!」というエールを送る気持ちで、僕がプログラミングを勉強しはじめた時、どれだけ酷い状態だったか、何が苦しいと思っていたか、をご紹介したいと思います。

プログラミン初心者のときに苦しかったこと

①何が分からないか、が分からない&何を質問したら良いのかが分からない

僕は最初、独学でエンジニアを目指していましたが、「何をどのくらいまで勉強したら良いか分からない... 」と途方に暮れ、結局はTECH::EXPERTを受講して、完全未経験からエンジニアに転職しました。ただ、スクール受講中もプログラミングの勉強にはかなり苦しみました。何となく、HTML/CSSは理解できるものの、 Ruby/Railsの学習になってくると、途端に「自分が何をやっているのかが分からない」状態に陥っていきました。TECH::EXPERTでは、いつでも・何回でも自由に質問できる”メンター”がいるので、分からなければ質問できる環境だったのですが、「せっかく質問するなら、有意義な質問にしたい...!もうちょっと自分で頑張ってみてから質問しよう!」「こんなことも分からなかったら恥かしいから質問しずらいな、、」と思うことが何度もあり、なかなか質問できない時がありました。(※もちろん何回も質問させてもらいました。)その時強く感じたのは、(例.引数、インスタンス変数 etc)「自分が何が分からないのか」が"分からない" ということでした。早くエラーを解決させたいので、メンターに質問したいのは山々なんですが、質問すべき内容以前の基礎的なことが十分に身についていなかったために、質問できない、と感じていました。今思えば「今、このようなエラーになっているのですが、何を調べたり確認したりすべきなのかが分かりません」と正直に「何が分からないかが分からない」という状況を伝える、という質問すればよかったと思います。今もエンジニアとして業務をするなかで分からないことだらけなのですが、何が分からないかが説明できる状態なので、ある程度は自分でググって解決ようになりましたし、どうしても分からない場合は先輩エンジニアの方に質問すれば、大体のことは理解できて解決できるようになりました。僕の感覚的には「何がわからないかが自分で分かっていて、人に質問できる」という状態は、”プログラミング完全ド素人”の域は抜けていると思っています。なので、スクールに通い始めた最初の1ヶ月くらいは、「何が分からないかが分からない」状態が普通だと思うので、怖がったり、遠慮したりせず、「こういうエラーが出たのですが、何を確認すべきか教えてください!」と正直にガンガン質問すべきだと僕は思います。何度も質問していると、何となく、見るべき箇所やパターンがつかめてくると思うので、そうなったら、少しずつ自分で解決しようとする時間を長めにとったりして、徐々に質問する回数や頻度を減らせるようにしていったら良いと思います。

②エラーが怖い&エラー文を読める気がしない

プログラミングの勉強を始めた当初の僕にエラーコードを読む実力はなく、「うわ、エラー出た、、何が悪かったんや、、ちゃんとコピペしたのに...」状態でした。エラー文が出ると、エラー文を読むことなく、すぐに自分がコピペしたコードを見直していました(当然解決には至らないことがほとんどです。。)よくメンターの方に質問すると「原因はエラー文に書いてるから読めよ」的なことを強めに言われることもありますが、勉強始めたばかりの僕は「エラー出た、コワイ。。」「エラー文の読み方がそもそも分からない。。」という状態なこともあり、エラー文を読もうという気持ちになりませんでした。今はエラーが出ても何も感じませんし、むしろ「お、さっきと違うエラーになった、よしよし」といった感じで、エラーが怖くなくなりました。もし、今これを読んでいるあなたがエラーで躓いていて、なかなか人に質問できずにいるなら「頑張ってエラー文を読んでみよう!」「エラー文を読んでも分からなければ、エラー文の読み方やどこを確認すべきか質問しよう」と伝えたいです。エラーを直す方法は結局エラー文を読んでいくしかありません。エラーの意味が分かりだすと、どんどん自分で解決できることが増えてくるので、最初はエラーがおこると怖いですが、どんな優秀なエンジニアでも、コードを書いていてエラーが1つもおきない人はほぼ0%なので、頑張ってエラーと向き合いましょう。必ずプログラミングの上達に繋がります。

③ググっても、どの記事が解決に繋がるかの判断がつかない

先ほどのエラーが読めないことと似ているのですが、エラーを読んで分からずに、とりあえずググるのですが、そもそもエラーの内容を理解できていないので、ググったところで、どの記事を参考にすべきかが分からない状態でした。1個1個試してみて、「あーでもない、こーでもない」という時間を過ごすことになりますが、それもプログラミングを勉強する上では避けて通れないので、ググる中で少しでも分かることが増えてくると「どの記事だと解決できそうか」や「そもそものググり方」のコツが掴めてきたりします。少しずつで良いので、”分かること”を地道に増やしていくことが大事だと思います。ただ、どうしても分からない場合で、メンターなどの質問できる方が近くにいる場合は、「どうやってググったら良いですか?」と質問してみると良いと思います。それを繰り返してくるうちにだんだんパターンが掴めてきてエラーの解決が上手になると思います。あと、すぐに質問できる人がおらず、何時間かけてもエラーが解決できない場合は「一旦放置して寝る!」というのも意外に有効手段です。「朝起きて再度やってみたらすぐ解決できた」みたいなこともザラにあるので、プログラミング始めたばかりの頃は、1つのエラーに固執しすぎないことも大事だったりすると思います。

④コピペでなんか動いた!けど、よく分からん...

プログラミングを始めたばかりの僕は文字通り「コピペ マン」でした。学習カリキュラムのコードをコピーして貼り付ける男と化していました。最初はコピペでどんどん進めて全体像を掴むことも重要ですが、コピペばかりしていると、よく理解しないでも動いてしまうこともあり、プログラミングが身につかない原因にもなってしまいます。「カリキュラムの1周目はコピペで進めてみて、2周目はちょっとづつ自分でコードを書いてみよう!」といった具合に、書きながら”理解する”というのはかなり大事だと思います。僕はコピペを続けまくって、理解したつもりになって、基礎がなかなか身につかなかったと反省しているので、初心者の方はコピペと自分でコードを書いて理解するのを両方をバランスよく使い分けて学習を進めてみてほしいなと思います。全部を0から書くのはあまりにも不効率すぎる場合も多いので、自分で書くところコピペするところのメリハリをつけられれば理想ですね。

基礎を大事に、できること・分かることを少しずつ増やそう!

今振り返ると、①〜④の状況になっていたのは、結局のところ「基礎が身についていなかったから」だと今振り返って思います。 例えば、引数やインスタンス変数やRailsのMVCの理解が20~30%くらいしかできていない状態(※あくまで例です)で、どんどん学習を進めても、エラーの解決を自分でやろうとするのは、かなり難しいと思います。1回で理解するのはもちろん無理なので、何周かする前提でとりあえず進めるのは良いですが、最低でも60~70%くらいは理解した、と思えるくらいには、カリキュラムの基礎的なところをやることが大事だと思います。僕はこれを疎かにして、どんどん進むばかりしてしまったので、なかなか実力が伸びませんでした。逆に基本的なことがある程度理解できていれば、多くのことはそれの派生や応用になってくるので、自分で調べて解決できたり、人に質問ができるようになると思います。完璧な理解を目指す必要は全くありませんが、基本的な文法等に関しては「人にちょっとだけ説明できる」状態になってから、次に進むことをオススメします。かなり雑なまとめになってしまいますが、要は「基礎・基本が大事!」というのが僕の伝えたかったことです。できること、分かることがちょっと増えるだけで自分で解決できることが、いっきに広がってくるので、焦らずに目の前の分からないことをちょっとづつ解決していきましょう!諦めずに続ければ、絶対にエンジニアになれますよ