未経験からエンジニアになるためには、プログラミングを学び、身に付ける必要があります。
そして、プログラミングを学ぶ過程で、様々な困難に直面することになると思います。
私も、実際に未経験の状態から、エンジニア職に配属されたため、事前準備は出来ず、しかし業務において成果を出さなければならない状況であったため、限られた時間の中で色々と試行錯誤して学習を進めました。
その時の経験と共に、人事部で採用担当として、学生や未経験の転職希望者の方の相談に乗った経験も踏まえて、学習する難しさと対策についてシェアしたいと思います。
※個人個人で難しさを感じる部分が異なると思いますので、どれかが参考になれば嬉しいです。
勉強を始めるまで
プログラミングを始める前に、まずはどんな言語や技術を学ぶべきか、どんな教材やサービスを使うべきか、ということに悩む人は多いと思います。
言語については、別の記事で詳しく書いておりますので、もしよければそちらも参考にしてもらえればと思います。
<難しさ>
プログラミングの世界は非常に広く、多様です。
Web開発やアプリ開発、AIやデータ分析など、様々な分野があります。
それぞれに使われる言語やフレームワークも多く、どれが自分に合っているか、どれが将来性があるか、判断するのは難しいです。
また、教材やサービスもたくさんありますが、質や難易度、価格などが異なります。自分のレベルや目的に合ったものを選ぶのも大変です。
<対策>
そもそも何を学び、何を使うかについて迷っている方に向けて、以下を参考にしてみてください。
・まずは、 自分の興味や目的を明確にする。例えば、Webサイトやアプリを作りたいのか、AIやデータ分析に関わりたいのかなど。
もしくは、興味や目的に合った言語や技術を調べる。例えば、Web開発ならHTMLやCSS、JavaScriptなど。AIやデータ分析ならPythonやRなど。
以下の記事で、決め方や考え方について書いてますので、良ければ参考にしてもらえればと思います。
・調べた言語や技術の基礎を学ぶ教材やサービスを探す。例えば、書籍やオンラインコース、動画教材など。
本当にこれから一歩を踏み出す方に関しては、書籍を購入するよりも、一旦まずは動画やオンライン上でのコンテンツを使った学習をお勧めします。
これは私個人の考えですが、そもそもプログラミング自体何もイメージが出来ていない場合に、本当にやりたいことなのか、向き不向きはどうだろうか、分からないと思います。
書籍を購入するよりも、疑似的に教えてもらいながら、実際に動く画面を見ながら学習する方が、イメージが湧きやすいと思います。
まずは、無料で見れるものも沢山ありますし、YouTube上でも沢山の説明動画があると思いますので、そこでとにかく少しでも良いので具体的なイメージを持てるように取り組んでみてください。
少しやってみて、ちょっと面白いかも、もっとやってみたいと思えたのであれば、有料の動画コンテンツや書籍の購入というステップが良いかと思います。
例)
・ドットインストール(無料、有料コンテンツあり)
私もエンジニアなりたての時にお世話になったプログラミング学習サービスです。
動画を見ながら、一緒に手を動かすことが出来ます。
無料でも初歩の講座や見れる講座がありますので、まずはこういうサービスを利用して、体験してみてください。
・教材やサービスの評判や口コミをチェックする。例えば、AmazonやUdemyなどのレビュー、Twitterやブログなどの感想など。
書籍による教材は、無数にあります。
最初に勉強すべきだと思っている内容としては、全体像・仕組みを理解できるような内容だと思っています。
プログラミングの基礎だったり、入門というようなタイトルで評判の良い書籍を探してみてください。
それを読んだら、いよいよ実際の言語の勉強に進むという流れが良いと思います。
・複数の教材やサービスを比較して、自分に合ったものを選ぶ。例えば、内容や難易度、価格や期間など。
しっかりと自分のレベルに合った教材や動画で勉強してください。
そうしないと、難しいと感じてしまい、挫折に繋がる恐れがあります。
いきなり高度な内容を読んでも、基礎知識がある前提で説明されているものがあり、理解ができません。
知らない専門用語が沢山出てきて、読み進められず、最悪の場合モチベーションが下がり諦めてしまうという結果になってしまいます。
動画でも書籍でも、初心者向けであったり、基礎だったりと判断できるキーワードが入っていると思います。
書籍だったり、有料のコンテンツの場合は、出せる金額の範囲内で、自分のレベルに合いそうな内容を選び、ステップアップに繋げて欲しいと思います。
勉強方法について
教材やサービスを選んだら、次は勉強方法について考える必要があります。
プログラミングは理論だけでは身につきません。
実際にコードを書いて動かしてみることが大切です。
<難しさ>
プログラミングは一朝一夕でマスターできるものではありません。
時間と努力が必要です。
しかし、忙しい仕事や家事などで時間が取れない人も多いと思います。
また、勉強しているとわからないことやエラーに遭遇することもあります。
自分で解決できないときは、誰かに助けを求めたいと思うかもしれません。
しかし、周りにプログラミングに詳しい人がいない場合もあるでしょう。
ではどうすれば良いかについて、記載したいと思います。
<対策>
・毎日少しずつでも勉強する。例えば、朝や昼休み、夜などに30分や1時間など。
最悪5分でもよいです。プログラミングやIT業界の事について、毎日何かしらで触れるようにして欲しいと思います。
これは、習慣をつけることが大事です。
通勤通学中に数ページでも読む、家に帰ってお風呂に入った後に、30分勉強するでも何でも良いです。
最悪椅子に座って勉強しなくても良いです。習慣にすることが大事です。
やっぱり、今日は勉強する気にならないという日も当然あります。
そういう時は、IT業界に関わるニュースや情報を読んでみてください。
例えばですが、私がやっていたこととして、はてなブックマークというサービス内に、テクノロジーというカテゴリーがありまして、そこに沢山の記事がまとめられています。
スマホアプリもありますので、スマホでもPCでも、いつでも人気の記事や興味がある記事、今勉強している言語や領域に関する記事を毎朝必ず読むようにしました。
勉強に関しての記事やモチベーションアップにつながる記事が見つかったり、ガジェット系の記事や、今まで知らなかった業界の内情など、色々と知ることができますし、面白い人や新しいサイトに出会う事も出来ます。
ただ読んでいるだけで良いのかと思うかもしれませんが、内容によっては、モチベーションアップに繋がったりします。
プログラミングの勉強は短期決戦ではありません。時間がどうしても掛かります。
なので、モチベーションの浮き沈みもありますから、沈んでいる時はこれをしようと決めておいて、それを実行し、毎日触れ続けるということを頑張って実行してみてください。
・勉強したことをアウトプットする。例えば、ブログやSNSに書く、ポートフォリオやGitHubに作品を公開するなど。
大事なことはアウトプットすることなので、自分の技術力は気にしないでください。
勉強したばかりで、他人に見せられるようなことは書けない、というようなことを考える必要はありません。
まずは自分がインプットした情報を身に付ける為という目的の元、アウトプットする習慣を身に付けてみてください。
いきなりポートフォリオやGitHubを活用するというのは難しいと思いますので、まずはTwitterで学習したことを呟いたり、無料のブログサービスを登録して、そこに勉強記録を付ける。コミュニティを探して、所属してそこで発表する。
アウトプットする方法は、色々とありますが、簡単なもので構いませんのでやってみて欲しいと思います。同じような境遇の仲間と出会えたり、わからないことは現役のエンジニアが教えてくれるかもしれません。
また、ブログのように蓄積されるものは、将来の糧になりますし、選考でも有利に働くかもしれません。
アウトプットするというのは、インプットした情報を身に付けるために、非常に重要な要素になりますので、是非色々と試してやってみてください。
・わからないことやエラーに遭遇したら、自分で調べる。例えば、GoogleやStack Overflowなどで検索する、公式ドキュメントや参考書を読むなど。
学習を進めていくと、思っていた通りにならないことがあります。
そういう時は、当然ですが、ネットで調べたり、ドキュメントを読んでみてください。
初心者の段階で遭遇するエラーやトラブルは、ほぼ検索すれば解決策が出てくる内容だと思います。
大事なことは、エラーだからといって諦めないことです。
頻繁にエラーが起こることもありますので、挫折してしまうパターンもあります。
ただ、その動かない原因を探り、解消するというステップは、現場に入っても避けては通れません。必ずそういう時が来ます。100%です。
そういう時にどうやったら解決策にたどり着けるか、という経験を積むことが大事です。
それぞれのエラーの解決策が大事では無く、
①次はエラーにしないためにどうすれば良いか
②エラーが起きたときにどうすれば解決することが出来るのか
この2つを身に付ける、経験することが大事なことです。
私も幾度となく色々なエラーやトラブルを経験してますが、段々とこういう検索ワードを入れれば良いのか、こういうサイトがあるのか、と少しずつ知見が増えます。
また、何かトラブルがあり、詳細を聞いたときに、過去のエラーの経験から、もしかしたらこれが原因かも、とすぐに思いつく回数が増えます。
そして、開発する際に、こうするとこういうエラーが起きたことがあるし、方法を変えようと事前に回避することが出来るようになります。
(まだまだ私も完璧に出来ている訳ではありませんが、昔と比較すれば雲泥の差です)
自己成長に大きくつながりますので、特に勉強の段階では解決できないから実害がそこまである訳でもないので、色々な手段を使って解消すべく頑張ってみてください。
・自分で調べても解決できないときは、誰かに助けを求める。例えば、オンラインコミュニティやフォーラムに質問する、メンターや先輩に相談するなど。
非常に大事です。
一人で、0から始めて転職活動を全て終える方もいらっしゃると思いますが、やはりそれは難易度が非常に高いと思います。
この内容に限らず、一人でやり切ろうとせずに、誰かに頼ることも本当に大事です。
なので、解決できないときには、質問が出来るサイトの投稿しても良いですし、コミュニティに参加してそのメンバーに聞く、スクールに通っているのであれば、先生に遠慮せず聞く、ココナラ等のプラットフォーム上から相談サービスを利用したり、メンターを付ける。
色々と方法はありますし、何かしらでは回答がもらえると思います。
とにかく一人で全部やろうとしないことです。大体それで挫折する人が多いと思います。
他業種であれば、周りに相談できる人もいらっしゃらないことがほとんどだと思います。
私も、当時の先輩や上司にタイミングを見計らって色々と質問したり、サイトに投稿したりしながら、何とか乗り切っていました。
まずは、勉強なので、自分であれこれ調べて、試してみてください。もうこれ以上見当もつかないという状況になったら、他者に頼って解決に繋げる。
このプロセスも学びになりますので、是非経験してほしいと思います。
勉強を始めてから
教材やサービスを使って勉強していくと、徐々にプログラミングの基礎が身についてきます。
しかし、実際現場では、それだけではエンジニアとして働くのは難しいです。
実務では、チームで開発することが多く、コミュニケーションや協調性が求められます。
また、最新の技術やトレンドにも常にアンテナを張っておく必要があります。
<難しさ>
プログラミングの学習は一人で行うことが多いですが、エンジニアとして働くときは一人ではありません。
他のエンジニアと協力して開発することが多く、コードの品質や可読性、保守性などにも気を配る必要があります。
また、プログラミングの世界は日進月歩で変化しています。
新しい言語やフレームワークが次々と登場し、既存のものもアップデートされています。常に学び続ける姿勢が必要です。
とはいえ、まずは転職を目的としている方がほとんどだと思いますし、そこまで網羅しようとしても初学者の方は無理があると思います。
ある程度学習を進めて、慣れてきた段階で構いませんので、下記の内容を参考にしてもらえればと思います。
<対策>
・同じ志を持つ人と交流をしたり、他のエンジニアと交流する。例えば、勉強会やイベントに参加する、オンラインコミュニティやSNSでつながるなど。
前述している通り、プログラミングの学習においても、実務においても、最初から最後まで一人というのは、中々精神的にも厳しい状況に陥る可能性があります。
では、どうやって知り合えば良いかというと、
例えば、勉強会やハッカソン(ハッカソンはITエンジニアなどが集まり、成果を競い合うイベント)等のイベントが年中開催されており、そういったところに参加してリアルで現役エンジニアや同じ初学者との交流を作るという方法があります。
例えば「connpass」というサイトや「TECHPLAY」というサイトに登録すれば探すことが出来ます。
私も、良く勉強会に足を運んでいました。
人見知りだったので、それなりに緊張しましたが、自分が携わっている言語や技術周りの勉強会に取り敢えず行ってみて、座談会等があれば話をしてみたりしました。
経験豊富なエンジニアの方と話せることもあり、技術について知れることはもちろん、想像以上にモチベーションアップにつながりました。
また、スクールはもちろん、ココナラやMentaといったサービスを活用して、メンターを探すというのも良いと思います。
良し悪しがあるというのは、致し方ないのですが、そういったところで、フォローしてもらえる環境にしておくということも、プログラミングを学ぶ上で、ある程度の期間取り組むには良いことだと思います。
その他、わからないことがあれば、プログラミングの質問が出来るサービスもありますので、そういったところで質問をしてみたりしながら、他のエンジニアの助けを得たり交流しながら進めることがお勧めです。
他のエンジニアのコードを読む。例えば、GitHubやQiitaなどで有名なエンジニアの作品を見る。
中々一人では他人のコードを読むという機会が少ないです。
ただ、他人のコードを読むというのは、とても勉強になります。
ある程度勉強を進めてからで良いと思います。少しずつ慣れてきたら、例に書いてあるようなサービスでコードを読んでみるという経験をしておくと、良いかと思います。
そこからの学びや気付きをブログ等に記載すれば、転職の際にそういった学習も行っているのかとプラス評価に繋がると思います。
・最新の技術やトレンドをキャッチアップする。例えば、技術系のブログやニュースサイトを読む。
これは先ほども述べた通り、技術系のサイトやブログを読んで知識を蓄えるということです。
当然自分自身の知識が増えたり、モチベーションアップに繋がったり、有名な方の記事を読んで、こういうエンジニアになりたいと思えるかもしれません。
また、面接の際にも普段取り組んでいることとして最新のトレンド等を知る為に日常的に読んでいるという話をすれば、成長意欲をアピール出来ます。
読んで気になる記事があれば、感想をブログでもevernoteでもメモ帳でも良いので、感想を書いてみてください。
備忘録になりますし、アウトプットして自分の知識にもなります。
また、面接の場で最近気になった記事は有りますかと聞かれるかもしれませんので、そういった時の準備にも繋げられます。
<まとめ>
以上がプログラミングを学習を諦めてしまう原因と対策になります。
プログラミングの学習には、終わりがありません。
そして、簡単に身に付くものでもないです。
どれだけ最初に楽しくても、幾度となく心が折れそうなタイミングや何のためにやっているんだと、迷ってしまう事もあるかもしれません。
しかし、少しずつ知識が身に付き、手を動かせるようになると、段々と楽しさを感じられるようになります。
転職が成功するまで、そして成功しても学習は続きます。
転職を目指している段階から、学習する習慣や意識付けが出来れば、入社後に現場経験も加わり、飛躍的に成長出来るタイミングが訪れます。
また、一人で全てをやり切ろうとせずに、誰かのサポートも積極的に得ることが重要です。
現場でも一人だけで開発ということは少ないです。
サポートの貰い方を知るという事も大事なことですので、積極的に行動してみてください。
私でも構いませんし、色々な場所で、きっとあなたの助けになってくれる人がいます。
あなたのプログラミング学習において、少しでも参考になれば幸いです。
ありがとうございました。