どうも、高妻です。私は理系の大学院まで出てますがプログラミングはしたことがなくて、社会人になってからプログラミングを学び始めました。
この経験から最速でエンジニアになる方法を紹介したいと思います。
先に下記に結論を書いておきます。これについて深掘りします。
- なんのエンジニアになるか具体的に決める(サーバ、クライアント、AIエンジニアなど)
- 経験者から学ぶ
- オリジナルサービスを作る
プログラミング未経験の方へ
これからプログラミングを学びたいと思っている人はどうやったら効率的に学べるのだろうと不安になってしまう方がほとんどだと思います。
自分もはじめは同じ気持ちで何から始めていいのか全くわかりませんでした。Javaの本を買って読んだり、写経してみたりと雰囲気で学んでいました。
会社に入るまで未経験
自分がちゃんとプログラミングを習得でき始めたのは会社に入った後の新卒研修からです。それまでの独学で勉強していたときよりも研修の方がはるかに効率よく学習することができました。
研修では講師の方と同期に質問しまくりながら基礎を学んで、そこからはひたすら自分でサービス作ったりして、独学で学習できるレベルになりました。
この経験を経て、私が未経験の方にオススメする最速でプログラミングを学ぶ方法をアドバイスしたいと思います。
もし自分がプログラミング未経験だったら
エンジニアとして5年以上バリバリ働いてきた私が、もし未経験から学ぶとしたらどうやったら効率よく学べるのか、これまでの経験を踏まえてアドバイスします。
これからプログラミングを学びだいと考えている人が最速でエンジニアとして活躍できる方法を伝授したいと思います。
1. 何エンジニアになりたいのか具体的に決めて目標を作る
プログラミングを学ぶなら何かやりたいと思った動機があるはずですよね?
自分でWEBサービスを作りたい、スマホゲームを作りたい、AIを作りたい、フリーランスエンジニアになって時間と場所に縛られずに働きたい、給料を上げたいなどいろいろあると思います。
何をやるにしても目的が大事です。ただ単にプログラミングを学びたいという人はそもそも長続きしません。
それはなぜかというとプログラミングは範囲が広すぎて学ぶべきことが多すぎるからです!私の場合は、みんなが幸せになれる世界一のサービスを作る!という目標をたてました!ちょっと恥ずかしいですがこれが本当に目標でした笑
なので、私の場合は一般消費者が触るスマホゲームやアプリ、WEBサービスをメインに作っています。いつか作ったサービスが大ヒットするように願っています!
もう一度言いますが、プログラミングを学ぶ上で挫折しそうになった時にその目標を思い出してまた頑張れるくらい自分がモチベーション高く保てる目標を考えましょう!
1-1. 何を目指すかで学ぶべきことが変わる
まずはこの目標をしっかり決めることが大事ですね。ここにあげた目標だけでも学ぶべきことが変わってきます。
なので、なんとなくエンジニになりたいな〜と思っている人はまずは何を目標にエンジニアになるのかしっかり決めましょう!
目標は途中で変わらないほうが最短コースで達成できるのでじっくり考えてみてください。特にすぐにでもエンジニアになって働きたい人はこの目標を強く持ってくださいね!
とりあえず稼ぎまくるでも大丈夫だと思います。
ちなみに自分は、エンジニア職は少人数でサービス作りができることが魅力に見えたので、インフラからサーバサイド、フロントエンドまで全てできるエンジニアになることを目指しました。
2. 目標別学ぶべきこと
目標が決まったらあとは学習するのみです。プログラミングには大きく分けて下記のものがあります。
- WEBエンジニア(サーバ、フロント、インフラ)
- ネイティブエンジニア
- ゲームエンジニア
- AIエンジニア
より詳しく知りたい人は下の記事も読んでみてください。
>>ITエンジニア|プログラマの職種別で学ぶべきことと必要なスキル
2-1. WEBエンジニア
WEBエンジニアは大きく分けてフロントエンドとサーバサイドに分かれますが最初は未経験者にとってはどちらも最低限学ぶべきことがあるので最初はあまり意識しなくてもいいかと思います。
まず、HTML、CSS、Javascriptを使った見た目を作ることができる言語を学びましょう!いきなりサーバサイドの言語を学ぶよりも比較的簡単に成果物を作ることができるのでおすすめです。
ある程度フロントエンドのことが理解できたらサーバサイドを実装する言語(Java, PHP, Rubyなど)とデータベースについて学習をするといいです。
2-2. ネイティブエンジニア
ネイティブエンジニアはiOSとAndroidのアプリを作るエンジニアです。iOSはObjective-CかSwift、AndroidはJavaかKotlinを覚えることになります。
ネイティブエンジニアの場合、HTMLもJavascriptもサーバサイドの知識も必要ないので、一つのことに集中して学習を進めることができます。
iOSとAndroidで学ぶ言語が違うので最初はどちらか一つをしっかりマスターすることになります。どちらも作りが全く違うので両方できるエンジニアは非常に重宝されます。
2-3. ゲームエンジニア
最近のスマホゲーム開発では3Dのものが多いのでUnityまたはUnreal Engineという開発フレームワークを使ってゲームを作ることがほとんどです。
特にUnityは非常に使われており、ゲームだけでなく、VRのアプリを作るときにも使われているので今後大きく伸びる可能性があります。
UnityはC#、Unreal EngineはC++ で実装することになります。スマホゲーム開発ではプログラミング言語だけでなく、3Dに関する知識も必要になりますね。
ゲームが好きでこれからゲーム開発に携わりたい人は開発フレームワークの使い方、プログラミング言語、3Dについて学習する必要があります。
2-4. AIエンジニア
AIは今もっとも注目されている分野ですね。AIと言っても自然言語処理、画像診断、機械学習など多くの分野があります。
まだまだ人材が不足しているといった状況のため非常に高収入な職種となっています。言語はPythonを使うことがほとんどです。
3. 目標が決まったらどう学ぶか
上記を踏まえて目標に対して自分がどのエンジニアになりたいか決めることができたでしょうか?目標を決めてどのエンジニアになるか決めることが一番最初の重要なポイントです。
ここを間違うと、目標と関係ないものを学習してしまったり、学習していてもモチベーションが維持できずに挫折してしまいます。
目標が決まった人は後は実行に移すだけですが、未経験からプログラミングの学習を始めるときの最大の挫折ポイントにどうやって学習したらいいのか分からないということがあります。
ここから、自分がこれまでプログラミングを学んできた経験で確実に効率のいい方法を紹介していきます!
3-1. 経験者に学べ
まずはこれですね。何事も経験者に教わるのが一番です。未経験者が一人で学んでもかなりの確率で失敗するか、もしくはものすごく時間がかかってしまいモチベーションの維持が難しくなります。
私は会社の研修で3ヶ月ほどじっくり時間をかけることで基礎を学びましたね。
研修は講義形式で受講生100人に対して講師が4、5人と少なめでしたが、研修に参加している同期にはプログラミング経験者がほとんどで、分からないことがあればすぐ聞ける環境でした。
この環境こそがプログラミングを効率的に修得できるポイントです。
初めの頃は分からないことをググって検索してもなかなか答えを見つけることができなかったり、そもそも何が問題なのか分からないので調べようがない状況になったりします。
こういう時に近くにプログラミングを理解していてすぐに聞ける環境で学んでいると効率がグッと上がって、密度の高い学習することができます。なので、未経験者が最速で学ぶには会社にどうにかして潜り込むか、ちゃんとしたプログラミングスクールに通った方がいいです。
独学でプログラミングをマスターしてしまう人もいますがほとんどの人はできないのと、できてもかなり時間がかかってしまいます。
3-2. 習うより慣れろ
学び始める中でなかなか理解できないことがたくさん出てきていると思います。クラス、インスタンス、型、オブジェクト指向、データベース、サーバなどなど。
プログラミングを学び始めた初期は知らない単語だらけで何のことを言ってるのか分からないと不安になってモチベーションは下がってしまいますよね。
けど、分からないことだらけだからと言ってプログラミングができないわけじゃないので安心してください。
今現在エンジニアとしてバリバリ働いている人でも自分が普段携わらない分野の言葉は知らない単語ばかりなのです。だから、学び始めたばかりの人が理解できないのは当たり前だし、全く気にする必要は全くありません。
最初から全てを理解する必要はありませんし、分からないことはそういうものなのねという感じで飛ばしてしまって問題ないです。
学習を続ける中でそういうことか!と理解できるタイミングが段階的に訪れます。
3-3. プログラミングに没頭しろ
最後は圧倒的に没頭するのみです。学び始めた初期にどれだけ没頭して成長できるかがプログラミングの習得スピードに影響します。プログラミングスクールに通ったり、会社の研修だけでなくそれ以外の時間もプログラミングの勉強に没頭しましょう!
私ももれなくこれを実践してました。起きている時間のほとんどをプログラミングに費やしましょう。プログラミングに特別な才能は何も必要ないですが、唯一あるとすれば熱中できるのが一番の才能です!
けど、プログラミングを学び始めて1年経ったとしても一人前かと言われると全くそんなことはありませんし、やればやるだけ奥が深いなと思う仕事です。
よく言われますが、日々勉強が必要ななので没頭できると習得が早いです!
3-4. オリジナルサービスを作れ
最後に圧倒的成長する方法としてオリジナルのサービスを作ることを強くお勧めします。
プログラミングを勉強してるだけだといつまで経ってもエンジニアにはなれません。学んだことを実践してこそ自分の知識がしっかりとスキルとして身につきます。
しっかり勉強していればプログラミングを学び始めて2ヶ月目くらいからサービスが作れるようになります。
1つサービスが作れればあとは同じ仕組みでいろんなサービスが作れるようになるので自信に繋がるし、採用にも強力なアピールポイントになります。
採用する側からしても、プログラミング歴が短くてもオリジナルサービスの開発経験がある人を採用するというのはよくあることです。さらにチーム開発も経験できるとなおいいですね。
チームメンバーで得意不得意なことを補いながらサービスを開発するのは非常に楽しいですし、自分のスキルが他の人と比べてどのくらいなのか客観的に見ることもできます。
まとめ
もし自分が未経験からプログラミングを学ぶなら下記のことを実践します!
- まずは明確な目標を決める
- 経験者に学ぶ
- 習うより慣れろ
- プログラミングに没頭する
- オリジナルサービスを作る
これをしっかり実践することで確実にエンジニアとしてキャリアを進めることができます。あとは実行あるのみです!
質問がある場合はTwitterかこの記事へコメントしていただければすぐに返します!最後まで読んでいただきありがとうございました。
ブロックチェーンエンジニアに興味のある方
仮想通貨、ブロックチェーンは技術的に非常に面白く、今後の大きなトレンドになる可能性を秘めています。しかし、ブロックチェーンに理解のあるエンジニアが足りていないのが現状です。
今後この分野への需要が高くなってくるので今のうちから学んでおくと重宝される人材になれると思います。
ブロックチェーンエンジニアになりたいと思っている方は下の記事も読んでみてください。
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す