独学でプログラミング学習をすることについて解説をしていきます。独学でプログラミングは習得できるのだろうか・・・プログラミングの指導や、研修を行っているとこのような質問がよくあります。この記事ではこのような疑問点を解消する為にプログラミングをどのようにすれば独学で習得できるか独学における注意点やアドバイスといった点について詳しく解説していきます。結局はどのようにプログラミングを習得したらいいのかプログラミングの独学での学習は無理?結論から言うとプログラミングの独学での学習は可能です。筆者(現役システムエンジニア)は中学~大学時代に独学で次の言語を習得しました。Talk一般的にプログラミング学習をはじめようとするとプログラマー志望者プログラマは夜中まで仕事して何万行も書いているっていうし、敷居が高いよな・・・と思う人が多いです。実際プログラミングを習得することはそこまで敷居が高くありません。早い人であれば1ヶ月もあれば即戦力レベルまで習得することはできます。エンジニア何万行というプログラムを書くことがあるけど、それは単純に「機能が多いだけ」なんだよ。「一つ一つの機能」は100行程度で終わります。言われる何万行もあるプログラムとは結局「100行~数百行程度」のプログラムが積み重なった結果です。1万行を超えるようなプログラムはこの世に存在しません。エンジニア1万行を書き込むようなプログラミングも結局は「100行程度のプログラムを1つずつ積み重ねたもの」なんだよそう考えると敷居は低くなりませんか?1:プログラムとは似たような構造で作られていて、1つ覚えれば応用がいくらでも利く2:世の中の大きなプログラムは小さなプログラムが集まった結果のものこれらを前提にどのようにプログラミング学習を進めていくのがよいか読み進めて頂ければと思います。スクールに行くべきかプログラミングは独学で習得できると書きましたが、スクールに通うことは推奨します。プログラミング習得するなら=スクールに通うのがおすすめ。独学には限界があります。独学では参考サイトに載っているソースコードをそのまま使ってしまいます。エンジニアソースコードをそのまま使ってしまうと動作はしても「プログラムがなせ動くのか」の仕組みが理解できなくなるんだよ。したがって、応用が利かなくなってしまいます。これを続けていくと原理は解らないけど、取り合えず動いた動かないけど原因が分からないそもそも何が解らないのかが解らないといった事態に陥ります。それに対してスクールは講師が「なぜこのように動作するのか」を教えてくれます。動かない場合はヒントをくれたりもします。何が解らないのかが解らない場合でも質問をすれば丁寧に回答してくれます。すると動かない、解らない苦悩から動く喜びや完成への達成感を得られます。どんな企業でもプログラミング経験者であってもOJTで簡単なプログラムから書かせる理由はここにあります。Training、オン・ザ・ジョブ・トレーニング)とは、職場で実務をさせることで行う従業員の職業教育のことです。プログラミングの独学の効率はよいのか?独学でプログラミンぐ学習は効率が悪いです。独学プログラミング学習=効率が悪いプログラマー志望者スクールに行くのは抵抗があるし、自分のペースで学習したいなぁ・・・というふうに思う人は必ずいます。独学のメリットは・自分のペースで反復しながら学習できる・周りに対して劣等感を感じないといった点です。効率はかなり悪いです。具体的には以下のデメリットがあります。自分がどれほどのスキルを有しているのか、もしくは自分の弱点が解りにくい同様の悩みを抱えている人との課題やノウハウを共有できない独学では自分がどれくらいスキルを身に着けているのかわかりません。自分の弱点を把握しないまま闇雲に学習してしまいます。結果余計な学習時間を費やすことになってしまいます。悩んだら「悩みっぱなし」になる傾向があります。プログラミングを独学で学ぶ人の大半がこの部分で挫折します。独学で学ぶ場合はどれくらいの期間が必要なのでしょうか。その人のポテンシャルとモチベーション次第ではありますが、目安は次の2つです。単純なプログラムというのは数百行程度のプログラムです。数百行程度では、計算機能やメモ機能のような単一的な機能のプログラムが作れます。業務レベルというのは、単純なプログラムを組み合わせた数万行のプログラムのことです。人は独学だと数年かかると思ってください。プログラミングを独学で学習するときのデメリットは?プログラミングを独学で学習すると次3つのデメリットがあります。スパゲッティソース書いたプログラムの性能が悪いチームプレーの意識が薄れる以下で詳しく説明いたします。スパゲッティソースになりやすい独学では、スパゲッティソースという可読性の悪いプログラムしか書けなくなってしまいます。独学のデメリット=スパゲッティソース(可読性が悪いコード)になりやすい。可読性が悪いとは、「繰り返し処理」や「分岐処理」が複雑に絡み合っている他人が読みにくいプログラムコードのことです。エンジニアスパゲッティソースだと、バグがあってもどこを直せば良いのか分からないことが多いし、1行直しただけでプログラム全体の挙動がおかしくなるケースもあるんだよ。スパゲッティソースはまさに独学における一番のデメリットです。独学では、「動けばいい」だけのプログラムしか書けなくなってしまいます。スクールでは、講師から適切な指摘を受けることができます書いたプログラムの性能が悪い独学で書いたプログラムコードは、性能が悪いことがあります。独学のデメリット=プログラムコードの性能が低い我々プログラマはミリ秒単位の世界で仕事をしています。数万件のデータから一つのデータを引っ張ってくるなら、50ミリ秒(0.05秒)以内に処理を完了させないと遅いと言われます。エンジニアビッグデータを扱うなら、数兆個のデータから数億個のデータを抽出するのに1ミリ秒以内に処理を完了させる必要があるよ。独学で開発した場合、プログラムを実行するのが自分一人なので、性能周りの意識が薄くなりがちです。プログラミングの現場で実際にプログラミングをしたときに大きな処理レベルでやり直しを受けることもあります。以下のプログラムがあったとします。true;}}これは参考書的には100点のプログラミングです。参考サイトもこのようなサンプルを書かれています。エンジニアけれど、実際の現場ではこのコードは書き直しを命じられてしまうんだよ。解りますか?例えばデータの総数が100万件あったとして、最初の1万個で条件を満たせたとします。ループは回り続けるので、「99万回の無駄な処理が実行されてしまう」わけです。独学でプログラミングをやっているとこういった細かいけど重要な部分に気が回ることはありません。チームプレーの意識が薄れる独学で学習するとチームでの開発スキルをみがけません。独学のデメリット=チーム開発スキルが身につかない実は仕事としてプログラミングを行う上で、チームプレーは一番重要なポイントになります。実際のプログラミングの現場では、必ず複数人で開発をします。チームで何かを作り、チームでお互いのプログラムを見ながら何が悪いのかを分析します。不具合やそれに準ずる事象についてチーム内で共有します。チームでの開発によって、プログラミングのノウハウが身についたり、効率的なプログラムが理解できます。独学でプログラミングの勉強をした場合、個人プレーになってしまうので、チームで開発する機会がありません。プログラミングを独学で無理なく勉強する方法は?独学で習得するのは確かに大変です。1つのプログラミング言語を習得したら後は独学でも全く問題はありません。いった意味で、1つのプログラミング言語を習得するまではスクールに通うほうが吸収は早くなります。独学で無理なく勉強する方法としてはいくつかあります。これは実際に筆者が若手エンジニアに癖付けさせていることです。以下で詳しく説明します。コメントだけでプログラムを完成させるプログラミングする前の設計をしっかりすると開発が楽になります。独学のコツ=設計をしっかりするプログラマといわれるとプログラムを書いているだけと思われがちです。実際にプログラミングをしている時間はプロジェクト全体で言うなら30%程度の時間です。そのうち、純粋なコードを書いている時間は50%未満です。プログラムには有効ステップ数というのがあり、これは実際にプログラムがプログラムとして動作をする行数のことを指します。仮に1000行のプログラムがあったとしたら、実際の有効ステップ数は400行から精々500行程度です。残りは何かというとコメント行であったり、プログラム全体を見やすくするための空白行です。「何をしたいか」というのを日本語でコメントとして書きます。すると、あとはそれをプログラムに変換するだけです。プログラムに変換するだけなら、参考書でも参考サイトでもサンプルはいくらでもあります。・この処理はあちこちで使うから共通化できないか・ここでこんなに複雑な処理は必要かなど日本語として自分のプログラムを見直すことができます。独学で習得するならこのプログラミング以外の部分をしっかりするとつまずきにくいです。マイルストーンを設けるマイルストーンを設けることでモチベーションを高めることができます。独学のコツ=マイルストーンを設けるエンジニアマイルストーンというのは、『物事の進捗を管理するために途中で設ける節目』のことだよ。要するに「段階的な目標」です。独学で勉強をする場合、ゴールが見えないとモチベーションを保てません。ならないためにもマイルストーンを設けてください。「xx月xx日までにこの処理を作ろう!」など小さなものでも構いません。マイルストーンを設けてそれに向かって勉強を進めてみてください。フローチャートを書いてみるフローチャートを書いて、処理毎に図として噛み砕いてみるのもいい勉強になります。「プロセスの各ステップを箱で表し、流れを矢印で表すことで、プロセスを表現する図」です。通常開発では数万行のプログラムを書きます。エンジニア上手く開発をするコツは「機能を分解して開発する」ということなんだよ。分解がうまくできないとつまずいてしまいます。フローチャートを使えるとタスクを効率よく分解することができます。独学でもつまずきにくいです。実際プログラミングの仕事をするとほぼ100%の確率でフローチャート図を求められます。(筆者は今まで大小含めて1000近くのプログラムを作ってきましたが、フローチャートを書かなかったのは10件にも満たないほどです)結局はどのようにプログラミングを習得したらいいのか最初の1つの言語はスクールに行くか、指導者をつけることをして学ぶことをお勧めします。プログラミング学習おすすめ=最初の言語はスクールで学ぶのがおすすめそこである程度のノウハウが付いたら、後は独学でも十分同じくらいの効率で習得ができるようになります。1つでもプログラミング言語を習得してしまえば、あとはどんな言語であっても応用が利きます。Basic」と文法がほとんど同じです。日本語で言うなら関西弁と標準語(東京弁)程度の違いしかありません。C#は「java」をベースに作られている言語なので、javaでも問題なくプログラミングをすることが可能になります。違いでいうなら、現代の言葉を使っている人が、時代劇を見ている程度の差分です。エンジニア1つの言語を習得しただけで、そこから簡単に3つの言語まで使えるようになるね!なので1つの言語をある程度使えるようになったら、積極的に別の言語に挑戦してみましょう。プログラマー志望者スクールで習ったXXの言語で書かれた課題をYYの言語で書いてみよう!といったものでも問題ありません。すると必然的にYYの言語についても最初に習得したXXの言語と同レベルにプログラミングができるようになります。プログラミングを始めようか迷っていませんか?プログラミングを始めてみようと思っても学習で挫折しないか職業として生計を立てていけるか不安ですよね。プログラミングジャパンでは全くの初心者でも最速で安定した収入を得るプログラマーになる為に必要なステップをLINE@で配信しています。必須サイトコメントプログラミングジャパンとはプログラミングジャパンは日本初の「スマホアプリ開発」専門のプログラミングスクールです。スマホアプリ開発企業と直接提携することによって他のスクールにはない『スマホアプリエンジニア』としてのキャリアを最短2ヶ月で築くことが出来ます。プログラミング学習入門者向けサイト(プログラミングジャパン公式ブログ)—>。