【エンジニアが実践】あなたのレベル別・プログラミング上達のコツ

【エンジニアが実践】あなたのレベル別・プログラミング上達のコツ プログラミング
【エンジニアが実践】あなたのレベル別・プログラミング上達のコツ

こんにちは。

この記事を読んでいるあなたは、

「プログラミングがなかなか上達しない・・・どうやったら効率よく上達できるんだろう?
「『エンジニアになる』目的を達成するために、効率よくプログラミングができるようになりたいけど、どうしたらいいんだろう? 」

このように迷っているのではないでしょうか?

プログラミングって、最初のハードルがメチャクチャ高いですよね。
その上、始めた後はエラーばかり起こって、なかなか思ったように進みません。
さらに、やってもあまり上達している実感が得られなかったりします。

そこでこの記事では、そんなプログラミングの上達方法のコツを、僕自身がどうやって乗り越えてきたか?をエンジニアの目線で具体的に紹介したいと思います。

僕自身の失敗談や、やってよかった体験談も入れてあるので、「これをやるとよさそうだ」「これはやっちゃダメなんだ」なんてポイントも知ることができます。

よくある抽象的な「目的を持ちましょう」という話ではなく、一歩、二歩踏み込んだ具体的なアドバイスになっているので、「上達するために何をやったらいいか知りたい!」という要望に答えることができるかと思います。

この記事をしっかり読んで、プログラミング上達のコツをしっかりと理解してくださいね!

  1. この記事のまとめ
  2. この記事の信頼性: 僕はプログラミングの学習で誰よりも苦しんだ自信がある。
  3. 【前提】プログラミング学習の段階ごとに上達すべきポイントは異なる
  4. 「プログラミングをやってみたい!」でも、何をやったらいいかが分からない
    1. 「プログラミングをやってみたい!」段階のプログラミング上達方法: とにかく早く学習を始める
  5. 学習を始めたけど、プログラムを書けない&エラーが意味不明すぎる
    1. 学習を始めた直後の、プログラミング上達方法: 文法を理解する (何となくでOK)
  6. 完全に理解した!(という勘違い)と思える。簡単な文法を理解し、より本格的な内容を学習する段階
    1. 完全に理解した!と思えてきた頃のプログラミング上達方法: 重要な点に狙いを絞り、しっかり抑える
  7. オリジナルなサービスやアプリを作ろうと思うものの、作りたいものを作れない事実に気づく
    1. 「作りたいものを作れない!」と思った段階からの、プログラミング上達方法: サンプルアプリを改変して作りたいものを作る
  8. Webサービスやアプリなど、好きなものを作れるようになった段階
    1. Webサービスやアプリを作れるようになったタイミングでの、プログラミング上達方法: 英語に慣れる+実践開発の疑似体験をする
      1. そのプロジェクトでしか発生せず、原因が分かりづらい不具合を解消する
      2. APIや非同期処理など、より実践的なプログラミングをする
  9. エンジニア就職や転職、フリーランスの案件獲得をする段階
    1. プログラマーデビュー間近の段階における、プログラミング上達方法: セミナーに参加して世の中のトレンドを知る
  10. その他、プログラミングが上達するために意識すべき5つのこと
    1. 暗記をしようとしない
    2. 期限を決める
    3. プログラミングを学習する目標を事前に定める
    4. 「次に何をやったらいいか」をガイドしてくれる手段を見つける
  11. 効率よく、プログラミングを上達するための秘訣
    1. Related Posts:

この記事のまとめ

詳細な内容に入る目に、まずはこの記事のまとめです。

プログラミングはあなたの現在の状況に応じて、6つの段階に分けられます。

その段階ごとにかかえる問題と上達するためのコツは以下の通りです。

プログラミング学習の段階状態や症状上達のコツ
プログラミングをやってみたい!プログラミングやりたい!
でも何をやったらいいか分からない
とにかく早く学習を始める
学習を始めたプログラムを書けない&エラーが意味不明すぎる文法を理解する (何となくでOK)
完全に理解した!(という勘違い)簡単な文法を理解し、できるようになってきた!と思う。
この段階から、本格的な内容を学習する
重要な点に狙いを絞り、しっかり抑える
作りたいものを作れない事実に気づくオリジナルなWebサービスはまだ作れないサンプルアプリを改変して作りたいものを作る
好きなものを作れるようになったWebサービスやアプリなど、好きなものを作れるようになった段階プログラミング上達方法: 英語に慣れる+実践開発の疑似体験をする
プログラマーデビュー!エンジニア就職や転職、フリーランスの案件獲得をする段階セミナーに参加して世の中のトレンドを知る

この記事の信頼性: 僕はプログラミングの学習で誰よりも苦しんだ自信がある。

この記事の信頼性

僕は大学の頃、独学でプログラミングをはじめました。

それまでは授業でやるような、C言語の初歩の初歩だけしかやったことがありませんでした。

プログラミングをやり始めた直後、真っ先に思ったのが、

「プログラミングにもいろいろな種類があるみたいだけど、どんな言語を使ったらいいんだろう?」
「どの言語でプログラミングをると、どんなものが作れるんだろう」
「どんな環境を使えばいいんだろう」

・・・ということでした。

こういった、プログラミング言語を勉強する以前の、「そもそも何を勉強するといいんだろう?」ということが全く分かっていなかったのです。

「プログラミング」と一言で言っても、そのときの僕が思っていたよりもプログラミングの範囲が広かったのです。

また、当時は今のようにネット上にいろいろな情報があるわけでもないですし、プログラミングスクールなどのように、何から始めるべきなのか?を教えてくれる人もいませんでした。

当時の僕は、いろいろな記事を読み、かなり四苦八苦した記憶があります。

プログラミングを始めた後でも、「エラーが解決できない・・・!」という、初心者が確実にハマるであろう壁にもぶつかりました。

1つのエラー解決に丸一日ハマることなんて当然のようにあります。

日本語で該当する記事は全て読み漁り、苦手だった英語のサイトまで手を出してエラー解決方法を模索していました。

今思うと、「もう少し効率がいい方法があるよね」と思います。

この記事は、そんな僕自身の経験を元にして書いています。

今まさにプログラミング学習をはじめようとしている方、はじめた方には参考になると思いますし、何より信頼性はあると思っていただいてよいかと思います。

【前提】プログラミング学習の段階ごとに上達すべきポイントは異なる

上達のコツをお伝えする前に、まずはプログラミング学習の段階をまとめましょう。

一言で「上達」と言っても、あなたが、どういった段階にいるのか?によって内容が変わってくるからです。

例えば、「基本的な文法を学習している段階」と「エンジニア転職に向けて行動している段階」では身につけるべきスキルも知っておくべき知識も違いますよね?

この記事では、学習の段階を以下の6つに分類して説明します。

プログラミング学習の6段階
・1: プログラミングをやってみたい!
・2: 学習を始めた
・3: 完全に理解した!(という勘違い)
・4: 作りたいものを作れない事実に気づく
・5: 好きなものを作れるようになった
・6: プログラマーデビュー!

「プログラミングをやってみたい!」でも、何をやったらいいかが分からない

学習開始前: 「何をやったらいいかが分からない」状態

一番最初は、

「プログラミングをやりたい!」
「エンジニアになりたい!」

という思った状態です。

まだ「プログラミングとは何か?」「エンジニアって具体的にどんな仕事なの?」こういったものを理解できていない状態でもあります。

この段階では、開始したばかりということもあり、「何から始めたらいいか分からない」状態でしょう。

具体的な状況・症状
・プログラミングに興味を持っている
・何が分からないかが分からない (プログラミングって何?プログラミングの学習はどうしたらいい?エンジニアって何?)
・その結果、ウェブをいろいろと調べるばかりで、なかなか一歩目を踏み出せない

僕が大学のときにプログラミングをやったいた頃は、まさにこんな感じでした。

「作りたいものはあるんだけど、どうやったら作れるんだろう?」
「パソコンはMac?Windows?」
「プログラミング言語は何使ったらいいの?」
「フレームワークとかライブラリって何?」

こんなことで悩んでいた記憶があります。

このタイミングでの悩み
・プログラミングを学習するのに、何をしたらいいかが分からない
・どうやったら自分の目標を達成できるのかが分からない
・とりあえずC言語をやっておけばいいの?

「プログラミングをやってみたい!」段階のプログラミング上達方法: とにかく早く学習を始める

この段階の特徴は、「何がわからないか分からない」という状態です。

ですので、解決方法はシンプルで、「とにかく早く学習を始めてみる」ことです。

人によっては、

「プログラミングってどうなんだろう?」
「エンジニアになれるのかな?」
「どのくらいのレベルになったらエンジニアになれるんだろう?」
「エンジニアの年収っていくらくらいなんだろう?」

などの情報をずーーっと調べるばかりで、なかなかプログラミングの勉強を始めない人もいます。

もちろん事前調査は大事ですが、調査ばかりしていてもあなたの目標を達成できることは絶対にありません。

もしエンジニアという職業やプログラミングに興味があるのであれば、一度実際にプログラミングをやってみましょう。

プログラミングに必要なものは、パソコンとインターネット環境です。
特に最初はそれほど複雑なプログラミングではないと思うので、ご自宅にあるパソコンを使えばOKです。

最初にやる言語は、まずはHTML/CSSがよいでしょう。

HTML/CSSであれば、比較的簡単に学習を開始することができ、見た目の変化もあるので楽しく学習をすることができます。
また、多くの人が使っている技術でもあるので、何かエラーがあったとしてもそのエラーの内容を調べやすいメリットもあります。

「とりあえずお金をかけずにトライしてみたい」という場合は、ご自宅にパソコンに最初からインストールされているテキストエディタとブラウザさえあれば、HTMLやCSSを試してみることができます。

一度やってみて、それが「楽しそうだな」と思えるのであれば、JavaScriptなど他のプログラミング言語の勉強をしたり、手を広げてみるのがよいでしょう。

プログラミング初心者のあなたにオススメのプログラミング言語は、初心者におすすめのプログラム言語【いろいろな観点踏まえてTop3発表】の記事にまとめてあります。
「どのプログラミング言語がいいのかな?」と思う場合はこの記事を読んでみるとよいでしょう。

あるいは、「一度体系的に勉強してみたい」という場合は、初心者向けのコースがあるプログラミングスクールに通ってみることをオススメします。

あなたの目的に合わせたプログラミングスクールは、【オススメコースも解説】目的別おすすめプログラミングスクール9選の記事にまとめてあります。

・とりあえずプログラミングがどんなものか知りたい
・エンジニア転職をして、どこかの企業で働きたい
・フリーランスエンジニアとして案件を獲得したい 

など、いろいろな目的別にオススメのプログラミングスクールとコースを紹介しています。

「人に教わった方が手っ取り早いし楽だな」と思う場合、プログラミングスクールを見てみるとよいでしょう。

学習を始めたけど、プログラムを書けない&エラーが意味不明すぎる

基礎学習期(混迷フェーズ): プログラムを書けない&エラーが意味不明すぎる段階

プログラミングを始めた直後の段階で、文法をしっかりと理解していない状態です。

プログラミングを始めたものの、「何故か分からないけど動かない!」に、なりがちなのもこの段階の特徴でしょう。

プログラムを少し変更するだけでも大量のエラーが起こったり、その内容が意味不明だったりします。
エラーが起こっても、何が原因か全然分からない。その修正方法も分からない、なんて事態も発生します。

具体的な状況・症状
最初のヤマはこの段階でしょう。ここを乗り越えられるか?は1つのターニングポイントです。
以下で紹介するようなエラーが出ます。もちろん過去の僕も、全て体験済みです(笑)
・プログラムの中に(コメントアウトすることなく)全角で文字を入力してしまい、それに気づけずエラーになる
・HTMLであればimg src=””をimg scr=””と書いてしまい、画像が表示されない
・セミコロン(;)とコロン(:)を打ち間違って、エラー (しかも似ているからなかなか気づかない)

エラーが起こったりうまくプログラムが動作しなかったとしても、「どうすればいいか?」が分からないのがこの段階での悩みです。
また、エラーの文言も「何か赤い文字の英語で文章が書いてある・・・」というように見えてしまうため、内容を把握できない状態です。

このタイミングでの悩み
・エラーが出ると、すぐにお手上げになってしまう。
・プログラムの意味や文法が分かっていないので、写経しかできない。しかもその内容が理解できない。
・ここから先のステップがとてつもなく遠く感じてしまう (人によってはモチベーションが下がる)

学習を始めた直後の、プログラミング上達方法: 文法を理解する (何となくでOK)

「何となくこんな感じなんだ」ということが理解できるレベルで文法を学習するのがオススメです。
プログラミングは非常に奥が深いため、一度に完璧に理解しようとすると、確実に挫折します。

特に真面目な人ほど完璧に理解しようとする傾向にありますが、プログラミングの学習を始めた直後に関しては、完璧を求めないでください。

どの言語を学習するか?にもよりますが、この段階ではひとまず以下のような内容が書けるようになれば、最低限はクリアかと思います。

最低限この段階で覚えておきたい文法
・変数の種類と定義方法、利用方法 (代入、参照方法など)
・関数の定義方法と利用方法
・if文(簡単なもの)、for文、while文、switch文

これらの文法は最低限知っておかないと、プログラミングの学習中に、毎回以下のようにハマって調べることになります。

「あれ、変数って何だっけ?どうやって定義するんだっけ?」
「関数って何だっけ?」
「ifって・・・何?」

今後の効率を上げるためにも、こういった基本的な文法は覚えてしまいましょう。

逆にいうと、これ以外の

・if文の三項演算子
・アロー演算子
・promiseによる非同期処理
・ポインタ、アドレス

こういったものはこのあとの段階で少しずつ覚えていけば大丈夫です。
この段階で重要なのは、

・ひとまずプログラミングの基本的な部分を理解すること。
・「完全に理解した」という状態は目指さない (目指してはならない)
・少しずつ、プログラミングが分かってきている自分を褒める

ということです。

正直、プログラミングを「完全に理解した」なんて状態になることはありません。
現役のエンジニアでも「完全に理解した」という状態でありません。

あくまで「基本的な文法を理解して、今後の学習を効率化する」という範囲に留めるようにしましょう。

また、この段階に限らないですが、「プログラミングを学習してどうなりたいか?」という目標を持つのも大事です。

そうしないと、エラーばかりが発生してうまくいかないときに心が折れてしまいます。

例えばエンジニアになった自分を想像して妄想するのも大事でしょう。
オシャレなオフィスでカタカタと仕事をする(実際の業務はそれほどオシャレではなかったりしますが)姿を目標にするのもよいでしょう。

何でも大丈夫ですので、「プログラミングを勉強して、こんな風になりたいなー」という姿を妄想しながら、学習を進めるのがオススメです。

また、エラーが解決したときはあなた自身をしっかりと褒めてあげましょう。
この段階は、とにかくモチベーションの管理が重要だったりします。

ちなみに僕のケースでは・・・
僕はプログラミングを使って大学ではアート作品を作っていました (一般に、メディアアートと呼ばれる領域のアート表現です)
毎日エラーとの格闘でしたが、「展示会に選出されて、自分の作品を展示したい」という目標を持って頑張っていました。
今考えても、あの目標がなかったら、毎日大量に出るエラーで心が折れてしまっていただろうな・・・と思います。

完全に理解した!(という勘違い)と思える。簡単な文法を理解し、より本格的な内容を学習する段階

基礎学習期(理解フェーズ): 簡単な文法を理解し、より本格的な内容を学習する段階

少しずつプログラミングの学習にも慣れていて、少しずつ学習速度が加速しはじめる時期です。

具体的には、以下のような上達が見られる段階です。

・簡単な文法エラーならすぐに修正できる
・発生するエラーは、だいたい見たことがあるものばかりになってきた
・プログラミングの基本的な構造は理解してきた

このタイミングでは、クラスの継承だったり、オブジェクト指向だったり、より本格的なプログラミングの学習がメインとなります。
一方で、学習は写経が中心だったり、複雑な文法はまだ理解できていない状態です。

「ようやく文法が分かるようになってきたのに、まだ他にもいろいろな書き方があるのか・・・」

とウンザリしてしまうのもこのタイミングでしょう。

しかも内容がどんどん難しくなっていくので、基礎部分で分かっていないポイントがあると、雪だるま式に不明点が膨らんでいってしまいます。
また、まだ何か自分の作りたいものを作ることはできないので、少しずつ学習の難易度を上げつつ、学習を続ける必要があります。

具体的な状況・症状
学習にも大分慣れてきたな・・・という達成感と同時に、プログラミングの奥深さを本当に理解し始めるのがこのタイミングです。
簡単なサンプルプログラムであれば、パッと見ただけで何をやっているか分かりますし、処理の内容も理解できています。
・文法エラーは比較的簡単に修正できるようになる
・簡単な文法は何も見ずに書けるようになるものの、ちょっと複雑な書き方になると手が止まる
・クラスやオブジェクト、継承などの概念を頭では理解するものの、どう役立つのか分かっていない

この段階は、「基礎学習→本格的なプログラミングの習得」の過渡期にあたり、以下のような悩みを持つことがあります。

このタイミングでの悩み
・クラスやオブジェクトなど、プログラミングの応用的な内容が難しくて理解できない
・写経が中心なので、簡単な文法でも何も見ずに書けと言われると不安が残る
・基本的な文法であっても、一部分かっていない点がある。

完全に理解した!と思えてきた頃のプログラミング上達方法: 重要な点に狙いを絞り、しっかり抑える

この段階でプログラミングを上達させるには、今後プログラミングをしていく上で重要な点をしっかり抑えるのが重要です。

具体的には (もちろんプログラミング言語によってこれに追加される場合もありますが)、

・オブジェクト指向 (クラスや継承など含む)
・非同期処理

こういった、プログラミングとして重要、かつ理解していることが必須の要素をしっかりと身につけることが重要です。

上記の2つは、これまであなたが勉強してきた内容から一気にレベルが上がりますが、頻繁に使われる要素でもあります。
「こんな感じかな?」くらいの理解度でWebサービスやアプリを作り始めると、確実に混乱してしまいます。

プログラミング学習の中で大きな山場となりますが、しっかりと理解するようにしましょう。

ちなみに、この重要な部分は、言語によって追加で学習が必要になる場合もあります。

例えばJavaScriptでは変数の定義や、無名関数などについてもしっかり理解しておく必要があります。
そうしないと、これ以降の段階で、「あれ、この表記は何だ・・・?」となってしまいます。

逆に言うと、「全てを完璧に理解しすぎないこと」も大事です。
ここで紹介している大事なポイントはしっかりと理解する必要がありますが、全ての文法を理解する必要はありません。
特にプログラミング学習を始めたばかりの頃は、完璧を目指すと挫折します。
さじ加減が難しいかもしれませんが、多少は、「何か分からないけど動いてるから良し!」とする気持ちも大事です。

もしあなたが特定の言語で、「何をしっかり勉強すべきか?」が気になる場合は、現役のエンジニアが講師をやっているプログラミングスクールで教わるのが最短です。

現役のエンジニアであれば現場で必要とされている技術や要素を熟知しているので、

・具体的にどの要素をしっかりと理解する必要があるのか?
・その要素は、現場でどのように使われているのか?

など、リアルなコメントを聞くことができるでしょう。

僕のオススメのプログラミングスクールはこの記事にまとめてあります
目的別でまとめているので、あなたにピッタリなプログラミングスクールを簡単に探すことができます。

オリジナルなサービスやアプリを作ろうと思うものの、作りたいものを作れない事実に気づく

応用学習期(混迷フェーズ): オリジナルなWebサービスはまだ作れない段階

この段階は、あなたの目標に向けて動き始める段階です。

例えばWebエンジニアになりたい人であれば、エンジニア就職やフリーランスエンジニアへ向けて、オリジナルなWebサービスの開発をスタートするのはこのタイミングになるでしょう。

このタイミングで初めて「本格的に自分の作りたいものを作る」ということになるケースも多いかと思います。

そこで多くの人が、自分の作りたいものを作ろうとして、

「あれ、どうやって作ったらいいんだろう?作り方が分からない・・・」

という悩みにぶち当たります。

これまではテキストに書いてある内容や、簡単なサンプルプログラミングを中心に勉強してきていると思います。
それが、オリジナルなWebサービスやアプリを作ろうとした瞬間、そういった補助がなくなります。

これまで補助輪付きの自転車に乗っていたのが、このタイミングで急に補助輪がなくなった状態で走り始めるようなものです。

自分の力で走り始めると、改めて自分がプログラミングを理解していないことに気づきます。
オリジナルなWebサービスやアプリなど、作りたいもののイメージはあるけど、何をしたらいいか分からない状態になるのです。

また、プログラミングをしようとすると、「実は基本的な文法が一部理解できていなかった」と思うのも、このタイミングの特徴です。
そして、作りたいものがWEBサービスやアプリなど、フロントエンド+バックエンドの知識が必要であることが多いため、必要となる知識が一気に増えます。

もし基礎部分への理解を曖昧にしたままだと、いつまで経ってもWebサービスが作れない・・・という状態になることもあります。
その場合は、前のステップに戻って再度基礎を固めるところから学習しなおしになる可能性があります。

具体的な状況と症状
基本的なところは一通り理解できた・・・と思った直後にくる壁です。
「さて、オリジナルなWebサービスを作ろうかな」と思ってまっさらなプロジェクトを作るものの全く手が動かず、プログラミングがまだ本当に自分のものになっていないことを痛感します。
・プログラミングに関するテキストは最後まで終わらせることができた
・プログラミングの文法や考え方は、(全てではないものの)ある程度身についた
・これまでテキストに沿って勉強してきたのもあり、いざ自分で何かを作ろうとすると手が動かない
・サービスの作り方が全く分からなくて愕然とする

一般的には、ここまでくるのに3ヶ月〜4ヶ月くらいかかっているかと思います。
1日2時間勉強している場合、200時間くらいの勉強時間になるかと思います。

200時間の勉強時間は一人前にプログラミングができるようになるにはまだまだ足りないのですが、実際に勉強している側とすると、「200時間も勉強したのに・・・!」と思うでしょう。

少なくとも僕は「こんなに勉強したのに、まだ何も作れないのか・・・」と愕然としました。

これまでかけてきた時間に対して、「できるようになったことが少ない」と、一番感じるタイミングかもしれません。
そういう意味では、モチベーション管理が非常に重要になります。

このタイミングでうまく気持ちやモチベーションが管理できなかった場合、

「これ以上やってもプログラミングできるようになる気がしないな・・・」

と思い、離脱してしまう人もいます。

このタイミングでの悩み
・手が動かない。作りたいもののイメージはあるけど、何をしたらいいか分からない
・自分の作りたいものをどうやって作ったらいいかが分からないことに気づき、愕然とする
・学ぶものが一気に増えてくるので、学習のモチベーションが下がる

「作りたいものを作れない!」と思った段階からの、プログラミング上達方法: サンプルアプリを改変して作りたいものを作る

一番のオススメは、ウェブ上などのサンプルアプリを少しずつ改変していく方法です。

何故なら、Webサービスやアプリを作るときに一番難しいのが、ゼロから何かを作るタイミングだからです。

何もないところからプロジェクトを作ってプログラミングするのって、とっかかりがなくて大変ですよね?
そこで、その難しい部分がすでに完了しているサンプルアプリをコピーして、それを改変していく手法をオススメします。

改変は、あなたの目指す方向に向けて、具体的に以下のような内容をやってみるとよいです。

・最初は表示する文字列だけを変えてみる
・UI(表示する内容)を、プルダウンからリスト形式に変えてみる
・forループの回数を、10回から5回に変えてみる

これらのようにサンプルアプリを少しずつ変更していくことで、Webサービスやアプリの全体像を把握しつつ、あなたの作りたいものを作ることができます。

このやり方をやると、変数名やクラス名が元々のサンプルアプリのもので残ってしまったり、プログラムの作りとしてもあまりキレイなものにはならないはずです。

ただ、最初はプログラムのキレイさよりも、以下のような目的でプログラミングをしてしまうことをオススメします。

・自分が作りたいものを作ること
・サンプルアプリの全体像を把握して、次はあなた自身がゼロから作れるようになること 

もちろん最終的にはキレイなプログラムを書けるようになる必要があります。
ただ、そこを気にしすぎた結果手を動かせなくなってしまうのは本末転倒です。

焦る気持ちはあると思いますが、一つずつ、丁寧に進めていきましょう。

もしあなたが、「適切なサンプルアプリがない!」と思う場合は、プログラミングスクールに通うことで、そういったサンプルを提供してくれます。

そういう意味でもプログラミングスクールに通うメリットはありますね。

Webサービスやアプリなど、好きなものを作れるようになった段階

応用学習期(理解フェーズ): Webサービスやアプリなど、好きなものを作れるようになった段階

本格的なWebサービスやアプリの制作にトライしはじめてしばらくすると、少しずつWebサービスを作るとはどういうことか?アプリを作るとはどういうことか?を実感を伴って理解しはじめます。

これが、あなたの目標に向けてポートフォリオやWebサービスを作れるようになる段階です。

より本格的な開発になるので、これまで以上に実践的なスキルを身につける必要があります。

例えばWebサービスでフロントエンド・バックエンドが分かれているのであれば、フロントエンド・バックエンド間で通信をするためにAPIの設計や構築、呼び出しなどが必要になります。

この段階までこれれば、フロントエンド・バックエンドである程度のレベルのプログラミングが可能となり、エンジニアになる下準備が整った状態だと言えるでしょう。

これまで学習してきた内容の点と点がつながり、線となり、面となっている感じが「楽しい」と思えるでしょう。
ただ、実践的な経験がないため、API通信やネットワーク呼び出し時の非同期処理、セキュリティなど必要な知識が欠けているのもこのタイミングになります。

また、ここまではサンプルプログラムを拡張したりして、あまりメンテンナンス性を考えずに1つのファイルに全てのプログラムを書いている・・・なんてこともあるかもしれません。

一方、エンジニアの現場では他の人と共同開発になるため、メンテナンス性や可読性 (読みやすいプログラム)は非常に重要です。

この段階では、そんな「より実践的なプログラミング技術や手法」を勉強していくことになります。

具体的な状況と症状
いよいよエンジニアに向かって本格的な開発を行う段階です。
「ここまでやってきた」という達成感と同時に、「実はまだまだ分からないことばかり」という事実に焦りが生まれたりします。
・フロントエンド・バックエンドのそれぞれでプログラミングをすることはできるものの、その結合がうまくいかない
・APIや非同期処理など、必要な技術を身につける必要性に気づく
・プログラミングが、「プログラムがかけるだけだとダメだ」ということに気づく

このタイミングでの悩み
・開発の環境やそのプロジェクトに特化したエラーが発生して、調べても答えがない・答えが少ない問題が増えてくる
・APIや非同期処理など、「プログラムは書けるけど、それがエンジニアとして現場で使えるレベルなのか?」が分からない
・実践的な内容になるので、独学で勉強するには限界がある。

ちなみに僕は、大学のときにこのレベルまで到達しませんでした。
プログラムの可読性などは二の次で好きなものを作っていたので、実際にエンジニアとして働き始めた後、エンジニアとして求められるスキルと自分の現状のレベルの差に衝撃を受けました。

特にプログラミング初心者の人は「プログラムは動けばいいよね」と思っている人も多そうですが、複数人での開発が前提となるエンジニアの世界は、「きれいなプログラム・不具合の起きにくいプログラム」を書けるスキルも重要です。

そしてこのレベルはプログラミングを始める前や始めたばかりの人からは見えづらい領域かもしれませんが、実はかなり深く広い知識が必要になる部分となります。

Webサービスやアプリを作れるようになったタイミングでの、プログラミング上達方法: 英語に慣れる+実践開発の疑似体験をする

この段階の上達方法はいくつかに分かれます。

そのプロジェクトでしか発生せず、原因が分かりづらい不具合を解消する

これまで日本語のサイトでエラーの原因を特定したり修正方法を確認してきた場合、「そのプロジェクトでしか発生しないエラー」でハマります。

「日本語のサイトはいくら探しても答えが見つからない」なんてことがあるからです。

もしハマってしまったら、英語のサイトを検索するようにしましょう。

日本よりも海外の方がプログラミングをやっている人の数が圧倒的に多く、そういったエラーの解決方法も見つけやすかったりします。

しかも、プログラミングの最新情報は海外→日本に流れてくるので、海外のサイトを確認できるスキルをつけることで、プログラミングの最新情報にもアクセスできます。
結果的に、エンジニアとして他の人よりも一歩リードできる存在になります。

最初は英語の壁が辛いかもしれませんが、この段階まできたら英語の文章を読むのを頑張っていきましょう。

エンジニアになった後も、確実に英語の文章を読むケースは発生します。

APIや非同期処理など、より実践的なプログラミングをする

APIの呼び出しや定義は、「とりあえず動くもの」というレベルであれば簡単です。
これは非同期処理に関しても同様です。

ただ、これらは「動くだけ」ではエンジニアとしては半人前です。

特にAPIは他の人やチームから使ってもらうことが前提になるため、

・今後の拡張性がどうか?
・そのAPIが使いやすいか?
・不具合がないか?

など、事前にいろいろな観点で考えておく必要があります。

プログラミングを独学で勉強してきた人も、「どのような書き方をすると一番いいのか?」が分かりづらいため、独学がしづらいという特徴があります。

そこでオススメするのが、「エンジニアへ向けて実践的な経験やスキルが身につくプログラミングスクールやコースを取得すること」です。

APIや非同期処理に限らず、要件定義やセキュリティ、テストなど、エンジニアとして身につけるべきものはたくさんあります。

それらを一人で全てカバーするのは正直、かなり大変だと思われます。

そこで、プログラミングスクールに通って体系的に学ぶことで、エンジニア未経験でも、必要なスキルを最短で身につけることができるわけです。

「エンジニアになることを前提としたプログラミングスクールやコース」は【オススメコースも解説】目的別おすすめプログラミングスクール9選の記事にまとめています。

「確かに独学だとこういう知識を身につけるのは大変そうだな・・・」

と思う場合は、プログラミングスクールに通うことを検討してみましょう。

個人的には、独学でこういう実践的なスキルを身につけたり経験をするのはかなり厳しいと思っています。
ですので、未経験からエンジニアになりたい人は、この段階にきたらプログラミングスクールで一気に必要な知識を吸収することをオススメしています。

エンジニア就職や転職、フリーランスの案件獲得をする段階

目標達成期: エンジニア就職や転職、フリーランスの案件獲得をする段階

この段階では、これまで学習してきたことをベースにして、エンジニアとしての転職活動をやったり、フリーランスとしての案件獲得を行ったりします。

状況としては、あなたのスキルレベルに応じて大きく2つに分かれます。

1: エンジニアとして十分なスキルが備わっている場合
2: エンジニアとしてのスキルがまだ十分ではない場合

1の「エンジニアとしての十分なスキルが備わっている場合」は、これまでやってきた内容をまとめて就職活動や案件獲得をすることですんなりと内定が決まることもあります。

一方、2の「エンジニアとしてのスキルが十分ではない場合」は、就職活動をしてもなかなか結果が出ずに苦しむケースもあります。

時折見かける、「未経験からエンジニアになろうとしたけど200社からお祈りメールをもらいました」は、まさに2のケースが該当するでしょう。
2の場合は、もう一度前の段階に戻って、基礎からやり直したり、ポートフォリオを作ったりする必要があります。

プログラマーデビュー間近の段階における、プログラミング上達方法: セミナーに参加して世の中のトレンドを知る

この段階になると、自分一人で把握できる情報量に限界が出てきます。

エンジニアとして転職する場合やフリーランスエンジニアとして活動する場合、最新技術の動向を知っていたりする必要があります。

そこで、エンジニア系のセミナーなどに参加してみるとよいでしょう

そこでは最新の技術を知ることができますし、運がよければ他の人とつながることもできます
エンジニアへの就職やフリーランスエンジニアとして案件を獲得する場合、人との繋がりも非常に重要になってきます。

この段階まできたら、勉強ばかりではなく、そういった人脈を広げるところにも時間を使ってみるとよいでしょう。

もちろん、エンジニアとして技術が足りない場合は、セミナーへの参加よりもプログラミングスキルやエンジニアとして最低限必要なスキルの習得を優先してくださいね。
これらのスキルがない状態でセミナーに参加しても、頭でっかちになってしまい、エンジニアとして就職の内定をとったり、フリーランスエンジニアとして案件を獲得することはできません。

その他、プログラミングが上達するために意識すべき5つのこと

最後に、ここまでで説明できていない、その他、プログラミングが上達するために意識すべきことをご説明します。

暗記をしようとしない

「プログラミングの学習を開始した段階」のパートで説明した通りですが、最低限の文法は覚えておいた方がよいです。

毎回調べながらプログラムを書く・・・というやり方でもいいのですが、それだと時間がかかりすぎるためです。

とはいえ、「プログラミングは丸暗記をすること」が目標ではありません。

最終的にプログラムが書ければいいので、必要な情報にどうやって到達したらいいか?がわかっていれば大丈夫です。

現役で働いているプログラマーでも、仕事中に「あれ、ここの文法どうなってたっけ?」という感じで、よくウェブで調べています。

「分からなことがあればその都度調べてもいい」というのが英会話と大きく異なる点でしょう。
英会話はリアルタイムに返答をする必要がありますが、プログラミングは「分からないことがあったらその都度調べる」というスタンスで大丈夫です。

期限を決める

期限を決める

これはプログラミングに関わらず、何か新しい知識やスキルを習得するときに共通の内容になると思います。

「何となくプログラミング勉強してエンジニアになりたいなぁ・・・」

という、期限を設けない学習はオススメしません。

プログラミングは身につけるべきスキルや知識が大量にあるため、その全てを完璧にすることは不可能です。

よく受験の場合にも、以下のように言われますよね。

「どんなに不格好でも、墜落しそうでも、目標となる空港まで飛べれば(=合格できれば)それでいい。時間は限られているので、必要最低限やるべきことだけやって目標まで向かうべき」

受験においても、勉強すべきことはたくさんあります。
一方、高校や大学受験という日(期限)は決まっているので、そこに向けて合格に向けて必要最低限やるべきことは何か?に集中して勉強するべき、ということです。

プログラミングに関しても同じことが言えます。

例えば半年なら半年の期限と目標を設定し、そこに向けて必要最低限やるべきことから学習を進めていくようにしましょう。

そうしないと、いつまで経ってもあなたの目標は達成できませんよ?

プログラミングを学習する目標を事前に定める

1つ前の話と似た内容ですが、プログラミングを学習する目標を設定しておくようにしましょう。

あなたは何故プログラミングを学習するのでしょうか?

・エンジニア転職したい
・フリーランスエンジニアになりたい
・ITの教養を身につけたい

などなど、いろいろな目的があると思います。

そのどれでも問題ないので、プログラミングを学習する前に、「何故プログラミングの学習をするのか?」を明確にしておきましょう。

そうしないと、

「あのプログラミング言語も勉強しよう、このスキルも勉強しよう」

というように、必要のないスキルや知識ばかり習得して、いつまで経ってもあなたの目的が達成できない可能性があります。

「次に何をやったらいいか」をガイドしてくれる手段を見つける

プログラミング未経験の人は、「どのタイミングで何を勉強したらいいか」が分からないかと思います。

このポイントばかりは、独学ではどうにもならないところなので、他の人に教えてもらうことをオススメします。

もしあなたにエンジニアとして働いている友達がいる場合は、そういった人に

・何から始めるといいか?
・どのような勉強をするといいか?

などを教えてもらうのがいいでしょう。

一方、「周りにそんな友達がいない!」という場合は、プログラミングスクールに通ってみることをオススメします。

プログラミングスクールでは、プログラミングの技術だけを習得する場ではありません。
「エンジニアに必要な技術や経験を全部経験したり習得することができる」ポイントが最大のメリットです。

チーム開発の経験など、エンジニアになるために必要な経験をすることができますし、
フロントエンドエンジニアやバックエンドエンジニアなど、それぞれ専用のカリキュラムが用意されており、それに従って学習をすることができます。

特に、あなたが「早くエンジニアになって活躍したい」と思っている場合、プログラミングスクールは特にオススメです。
体系的に全体を学ぶことで、エンジニアになるための時間を一気に短縮することができるからです。

あなたの目的別のプログラミングスクールは、こちらの記事にまとめました。
「どんなプログラミングスクールがあるのかな?」と気になる場合、是非読んでみてください。

ここにまとめているプログラミングスクールは、僕がエンジニアの観点で厳選したものばかりです。「料金ばかり高くで中身がないもの」は全て省いてあります。

効率よく、プログラミングを上達するための秘訣

効率よく、プログラミングを上達するための秘訣

ここまで、プログラミングを上達するためのコツを、あなたの段階にあわせて説明してきました。

まとめると、プログラミングを上達するために必要なものは、以下の3つとなります。

プログラミングを上達する3つのコツ
・明確な目的を持つ
・(この記事で説明した内容)あなたの状況に応じた上達のコツを実践
・友達に聞いたり、プログラミングスクールに通って独学では学べない内容を学んだり、経験をする

2つ目のポイントは僕自身の経験を踏まえてしっかりとまとめているので、この記事の内容を実践いただければよいかと思います。

一方、3つ目の内容に関しては、あなたの目標や状況に大きく左右されるところなので、友達に聞いたりプログラミングスクールに通うことをオススメします。

目的別・おすすめプログラミングスクールをまとめていますので、

「周りにこういうことを聞ける人がいないよ!」

という場合、一度確認してみていただければと思います。

プログラミングスクールは料金がかかってしまいますが、独学だけだと「どうしたらいいか分からない」というように迷ってしまう時間を大幅に短縮することができます。

この記事を読んで、あなたのプログラミング学習の効率が上がり、目的を達成できることを心より祈っております。

この記事は以上です。
ここまで読んでくださり、ありがとうございました!

コメント

タイトルとURLをコピーしました