お金が無くてもプログラミング初心者が独学でモチベ維持する方法

独学法

プログラミング モチベ維持

こんにちは。継続の錬金術士なおキーヌです。

ブログ毎日更新は162日目になります。

プログラミングを殆どお金をかけずに独学してきてはや10年ぐらい経ちました。

しかし10年も費やしてまだこんなレベルなのかと絶望しますね。

真面目にサボらず10年しっかり勉強すればたぶんメチャ強プログラマになれたと思いますが、
過去の私は貧乏で才能も継続力もまったくありませんでした。

それでも10年は独学でプログラミングをして、IT企業ではありませんが
仕事でプログラミングその他IT知識を活用してなんとかシステム管理者の地位に立てています。

2019年になってからモチベーション維持の方法を身に付けて、
本気でゲームプログラミングをしたらモチベを維持しつつ完成させられました。

今回はそんなプログラミング初心者が極力お金をかけずにモチベ維持する方法と、
お金をかけずにプログラミングを効率よく勉強する方法を公開します。

前半はプログラミングを独学するためのモチベーション維持方法について。

後半はお金をかけずにプログラミング独学を進める方法です。

各項完結で書いていますので、お好きな所から読んでもらって結構です。
だいぶ長くなってしまったので興味ないところは読まなくても大丈夫です。

興味が出たら再び訪れてもらって、読んでいただけると喜びます。

  1. モチベ維持にはゴール設定が必須
  2. コメントを日本語で書くと中断しても再開しやすい
  3. 完成後はしょぼくてもプライドを捨てて作品をアピールすべき
  4. ネット環境さえあればプログラミングは無料で学べる
  5. 初心者がプログラミング入門書籍は買ってはいけない理由
  6. チーム開発をしたいならプログラミングスクールを利用する手もあり

モチベ維持にはゴール設定が必須

プログラミング 目標設定

タイトルで結論を言ってしまったようなものですが、詳しく説明します。

ざっくばらんにプログラミングを独学するといっても大体の人が挫折します。

私も累計10回ぐらいは挫折してますね。

これの原因はとてもシンプルで明確な目標(ゴール)が設定されていないからです。

プログラミングを勉強したいと思った理由は転職やら将来性があるやら様々な理由があると思いますが、
それだけだと確実に挫折します。

逆にもうこれしか生き残る方法はない!と人生が追いつめられると成長します。

大抵の人は今の職に飽きたりとか将来性が無さ過ぎて絶望したとかなんとなくとかで
保険がある状態でのプログラミングを覚えようとするので覚悟が弱いため続きません。

私もIT系関連の仕事以外はもうできそうにない精神状態だったため、
浅く広くIT技術(8割が検索力のたまもの)を身に付けたのでなんとか中小企業のシステム管理者になれました。

しかし全員が全員追い詰められる状況にあるわけではないので、
そういった人たちはどうやってモチベを保つのかというと、最初にも言いましたが明確なゴール設定です。

プログラミング初心者にオススメのゴール設定とは

目標を作るにも何をしたらいいのかわからないというのはプログラミング初心者で独学者にありがちです。

何か作りたいものがあればそれを目指して勉強すればいいですがそもそも論プログラミングの方法が分からないので、
どうやって目標にたどり着けばいいかわからないという状況に陥ることも多いです。

インターネットや映像系ソフトで動くWebプログラミング(JavaScript・Ruby・Python等)をやりたいのか、
機械を動かすための組込みプログラミング(アセンブリ・C言語)をやりたいのか、
コンシューマー機で動くゲームを作るAppプログラミング(C++・Unity(C#))をやりたいのかで目標設定は変わってきます。

組込みをやるような人はそもそもこのブログにたどり着かないとは思います。

そもそも私が組込みプログラミングを全く知らないしやったこともないので……

なのでゴール設定はWebプログラミングとAppプログラミングの2つに分けて解説します。

Webプログラミングのゴール設定の仕方

結論から言うとWebプログラミングの最もオススメのゴール設定としてはPHPを使った入力フォームを作ることです。

なぜ入力フォームが良いかというと、Webプログラミングの最低条件として
通信するというところにあります。

PHPと言いましたが、JavaScriptだけでも今は作ることができますし
RubyやPythonでもフレームワークを使えばできないことはないです。

PHPを除くとHTMLを操作するように作られたJavaScriptがおすすめですが
覚えることが多すぎて初心者にはややハードルが高いかと思われます。

なぜ入力フォームを作るといいのかというと

  • HTMLの基礎を知ることができる
  • クライアントとサーバーの通信の基礎を覚えられる
  • GET/POSTの概念を知ることができる
  • 視覚的にどうなったかがわかりやすい(※重要)

Webプログラミング入門本にも、詰まらない基本構文の学習が終わったら大体入力フォームを作るという流れになっています。

ぶっちゃけそういった入門本を買うよりもググるだけで入門本よりも詳し事が載っていたり
やり方は1つじゃないということを学べます。

本は確かに1つにまとまっているので混乱することはないですが、
意外と誤植が多かったりしてそこでつまづいて挫折するという人も少なくはありません。

プログラミング初心者の場合、それが誤植なのかどうなのかの判断がつかないからです。

話を戻すとゴールとしては入力フォームを作るですが、それを達成するために何をすればいいかを考えるのが
ある意味プログラミングの本体と言っても過言ではありません。

コードを打つことをするのはキーボードを打つことができれば誰でもできます。

本当は自分で考えてほしいのですが、初心者向けの記事なので
入力フォームを作るためのネタバレすると

  • PHPを動かすためのサーバーや環境を用意する
  • HTMLを組んでPHPを埋め込む
  • サーバーと通信するときにGETなのかPOSTを選ぶ
  • 返ってきたデータをどう処理するか(最初は気にしなくていいかも)

と、このような感じに入力フォームという完成品にたどり着くまでの部品や手順を洗い出せるわけです。

部品や手順に分解出来たら後はググれば一瞬で解決します。

プログラミング初心者としては多分これが一番楽だと思います。

というか、プロでもやっている手法なので恥じる必要もないですし
検索すればお金もかかりませんからコスパ最強です。

Appプログラミングのゴール設定の仕方

先にネタバレするとアプリケーションを実行してエラーもなく「Hello World」を出すことです。

私は専門がWebプログラミングなのであまり大それたことは言えませんが、
ある程度作ってリリースしたことはあるので初心者の方にアドバイスぐらいはできます。

パソコンであれば、コンパイルして1つのソフトに出力して実行して画面に「Hello World」が出たら完成です。

スマホアプリの場合はコンパイルしてアプリを実行して同じく画面に「Hello World」が出たら完成です。

環境作りさえしてしまえば、あとはコードを打ち込んでいくだけなので
まずは書いたコードをエラーなく画面に表示できるのが一番最初に設定するゴールです。

そこから先はWebプログラミングと大して変わりません。

アプリケーション開発で一番面倒なのはこの開発環境の準備ですね。

入門書籍を買ってやってもバージョン問題で動かなかったりします。

なので入門本に沿ってやる場合は必ず本に記載されているバージョンのものを使用しましょう。

……といってもプログラミング初心者だとバージョン?なにそれおいしいの?状態だと思うので
正直なところハードルが高いと思います。

実際私もある程度できるようになって入門本にそってやろうともったら意味不明なエラーがでたりで何度も挫折したことがあります。

正直入門本を使うよりも例えばアンドロイドアプリを作りたい場合「Android アプリ 作り方 環境構築」

と検索したほうが最新の情報や安定した情報が出てきます。

検索すれば実質タダなので貧乏でも問題なくプログラミングができますね。

コメントを日本語で書くと中断しても再開しやすい

プログラミング コメント

コメントを書くことでコンティニューがしやすくなり、
余計な思考を働かせずにプログラミングを再開できるのでモチベが下がるのを防げます。

仕事しているとプログラミングができない日が続くこともあります。

プログラミングしていない期間が続くと、このコードって何してたっけ…
という状態に陥ることが多くのプログラミング入門者は経験してきたでしょう。

思い出すまでに時間を無駄に消費され全然進まなかったし、
結局なんでこんなコード書いてたのかわからないので面倒臭くなって挫折。

私もこの現象はなんども味わってきました。

この現象を回避するにはコメントを書いておくことです。

基本的に初心者のコードは自分しか見ないので自分がわかるようにかけば問題ありません。

コメントを書く行為は実はプログラミングの中でもかなり重要な行為です。

コメントを書くことで書いたコードの復習にもなりますし、
最初にも言った通りに後から見た時に何をしていたのかが1発でわかります。

天才であればコードを見ればなにして1発で理解できますが、
我々凡人には後からみると意味不明な呪文にしか見えません。

プログラミング力が上がってじっくり読み解けば解読はできますが、
コメントがあったほうがすぐに次の作業に取りかかれるのでコメントの有無が生産性を大きく変化させるということです。

凄腕プログラマに話を聞いたりすると、
コメント書かないプログラマは三流ですらないと言われたことがあります。

むしろコードよりもコメントがプログラミングとしてのメインの部分だともいう人もいました。

完成後はしょぼくてもプライドを捨てて作品をアピールすべき

プライド 捨てる

苦労して完成したプログラムは、必ず自分のWebページやブログ、もしくはツイッターでもいいのでどこかに公開して作った!という実績を残しましょう。

もちろん、それは企業に見せる必要はありません。

プライベートとしてのブログに自分の作った実績を載せていくとそれだけで自信につながります。

こんなしょぼいプログラム公開しても恥ずかしいだけだろと言いながら全くアウトプットせずにいると
私みたいに10年以上プログラミングをしていてもある程度はできるけど自慢できる作品が一切ない。

という状態に陥ります。

私のブログを見てもらうとわかるのですが、2019年に至るまでは作品らしい作品はなにも公開していませんでした。

それは先ほどにも書いたように「こんなしょぼいプログラム見せても恥ずかしいだけ」という無駄なプライドのせいで
作った作品はほとんど公開していません。

というのも、企業に見せるためにはちゃんとしたポートフォリオを載せないと
逆効果だというしょうもないメディアの吹き込みのせいで洗脳されていました。

確かに、面接の時に入力フォームを作りました!なんて自信ありげにポートフォリオを見せても
企業からするとバカにしてんのかって思われてお祈りされる確率は上がるでしょう。

あれですね、今でもあるかわかりませんが履歴書に英検3級やらしょぼい誰でも取れる資格を書かない方が逆にいい。

みたいな感じです。

今思うと正直馬鹿らしい考えですね。

個人的にはしょぼくても何もしてない人より自信を持っていいと思います。

私が面接官なら何もポートフォリオがない人間よりしょぼいプログラムでもいっぱい作ってきてくれた方が嬉しいです。

変に立派なプログラム(コピペで作ったようなやつ)を見せられても本当にこいつが作ったのか?と思います。

しかし現代社会に文句を言っても仕方ないし時間の無駄ですね。

なので練習で作った作品は別に企業に見せる必要は一切ありません。

もう一度言いますが作った作品はしょぼくてもプライドを捨て去って、
自分のプライベートエリアで公開してください。

その時に

  • 何日かけて作ったのか
  • 使った言語は何か
  • 何を思って作ったか
  • 時間がかかった部分はどこか
  • こうしてたらもっと効率よく作れた

とか自分の作品をレビューしてみるといいです。

1週間1作品でも1年で最低月4つ作品作ったとして、
48作品生み出したことになります。

貴方が面接官だったとして、例え作品が低レベルであっても48作品持ってきた人と
1年かけて完成度の高いが面白みのないコピペ作品を1作品持ってきた人、どっちを採用したいと思いますか?

環境によってはコピペでもすごい作品を仕上げられる後者を選ぶかもしれません。

将来性を見ると前者の方がいいでしょう。

作品を生み出す場数を踏んでいるのでプログラミング的発想も自然と鍛えられているからです。

コピペプログラマは悪いとは言いません(私も似たようなタイプなので)が、将来性には乏しいです。

実際現代ではネットにあげられているソースをコピペして組み合わせたらそれなりのものが完成します。

最強は作品もいっぱい作ってコピペで速攻すごいものが作れるプログラマでしょうか(笑)

なので作品を作ったら必ず公開しましょう。

しょぼくてもいいんです。

それがあなたの資産になり実績でもあるのですから。

ネット環境さえあればプログラミングは無料で学べる

無料 プログラミング学習

プログラミングは「言語名 やりたいこと(もしくは入門)」 でググると大抵詳しい解説が出てきます。

確かにお金をかけたら「やらなきゃいけない」という感情を湧き起こしてブーストするのも1つの手ですが
大抵そういう人は教科書をなぞって満足するのである程度のところまで行ったら辞めています。

100%とは言い切れませんがそもそも「やらなきゃいけない」という状況に持ち込まないとやれない人は、
最初からやる気がないので成長しません。

私も入門書を無駄にたくさん買いましたが、8割方使わずにほったらかし(買ったら満足する一番ダメなタイプ)になって
気付いたら入門書のバージョンが古くなっていたり、そもそも時代遅れで別の上位互換が出ていたりで
結局ググって最初から最後まで講座記事に頼っていました。

入門程度であれば大抵誰かがやっていてノウハウを無料で公開してくれていますし
つまづいたところやバージョンによってのバグも書いてくれていたりします。

なので入門書を買う前にまずネットで検索してみてください。

ほぼ100%出てくるので入門書を買う必要がなくなります。

何冊も本を買うぐらいなら1万円ぐらいのキーボードを買ってコーディングを快適にしたほうが良いですね。

初心者がプログラミング入門書籍は買ってはいけない理由

プログラミング 入門書

「ネット環境さえあればプログラミングは無料で学べる」でも同じようなことを言ったのですが、
プログラミング入門書は買ってはいけません。

なぜかというと、大抵情報が古かったりどうでもいい情報が6割だったりします。

本なら1つに情報がまとまっているので探す必要がなくなる等の反論はあると思いますが、
私が買った入門書は大抵バージョンが古すぎて使い物にならなかったり、
肝心なところで誤字脱字が多すぎたりで意味不明になって放置することが多かったからです。

ソースコード自体が間違っている入門書もありました。

確かに分厚い本なのでチェック漏れが出るのは仕方ないことなのですが、
数千円払っているのに動かない入門書をつかまされたらたまったもんじゃありません。

コチラとしても買う前に気付ければいいのですが、
そんな分厚い本を立ち読みで誤字発見なんてそもそもしたくないです。

公式に問い合わせたらサポートはしてくれると思いますが、
レスポンスを待っている時間がもったいないですしググったほうが早いです。

しかしある程度自己解決できる人であれば誤字脱字があっても自力で解決できるので
入門書は再勉強としての効果は抜群に発揮してくれます。

我流でやってたけどこんな書き方もできるのか!という発見があるからですね。

しかしプログラミング初心者の場合はそれすらも判断がつかないレベルなので、
入門書は買うべきではないということです。

買うならある程度その入門をネットで無料で体験してから買うべきでしょう。

何も知らない状態で入門って書いてるから買ったろ!というと大抵の人は途中でやめてしまいます。

そして自信がなくなりプログラミングが嫌いになります。

なのでプログラミング入門者はプログラミング入門本を買うのをやめましょう。

欲しいなら初級者になってからにしましょう。

チーム開発をしたいならプログラミングスクールを利用する手もあり

プログラミングスクール

最後にチーム開発についてお話します。

何度も言っていますが私自身がチームでの開発なんてしたことはありません。

しかしプログラミングを仕事の一部として現実で働いています。

今からチーム開発しろって言われたら確実にうつ病発症して辞めそうですね。

周りがしょぼすぎるかすごすぎるかの2択になるのは目に見えているので
結局一人でやった方が効率いいじゃんってなります。

しかし会社に務めるまでチーム開発の経験なんて積めないだろっていのも現実。

情報系の大学やら高専であればそういったカリキュラムもありそうですね。

もしくはインターンで経験するのでしょう。

私みたいに高卒でなおかつ情報の学校に行ってなかったけどプログラミングを仕事にしたいという人は
チーム開発を経験するのはかなり難易度が高いと思います。

私は知りませんが、プログラミングスクールにそういったカリキュラムを組んでいるところもあるのではないでしょうか。

書いておいてなんですが、私はプログラミングスクール否定派です。

累計n十万の大金払って勉強するなら良い椅子と机とキーボードとPCを買ったほうが良いです。

しかし転職組がチーム開発を経験するのであれば、
プログラミングスクールぐらいしか今のところ選択肢はないんじゃないかと思います。

軽くチーム開発ができそうなプログラミングスクールを調べてみたところ
「DMM WEBCAMP」がチーム開発の実務訓練ができそうです。

DMM WEBCAMPについて

簡単に言うと就職斡旋型のプログラミングスクールといったところでしょうか。

ある意味職業訓練校ですね。

元々は東京だけにしかなかったようですが、最近大阪の難波でもスクールを開いたようです。

エンジニアになりたいコースとプログラミングを学びたいコースがあります。

DMM WEBCAMP:エンジニアコースについて

調べてみるとエンジニアになりたいコースではチーム開発を取り入れた実務に近い感じでエンジニアを目指して学べるとのこと。

プログラミングスクールってオンラインで受講みたいな感じを想像してたのですが
学生塾のように実際にスクールに通うタイプなんですね。

これなら確かにカリキュラム次第ではチーム開発も学べてよさそうです。

英会話塾みたいに仕事帰りに寄って学んで帰るといった感じでしょうか。

一番のメリットは「受講完了後、3ヶ月以内に転職・就職できない場合は全額返金

というところでしょうか。

プログラミング未経験からのエンジニアとして転職したいのであれば最高の環境ですね。

なぜ最高なのかというと、DMM側もお金を返したくないわけですよ。

なのでどんな手を使ってでも確実に就職させようとするはずです。

就職率は高いですが果たしてまともな会社はどれだけあるのか……

一見最高のように見えても超絶ブラックの会社を斡旋してくる可能性も0ではないということです。

斡旋されたらまずその会社の評判を検索したほうがいいでしょう。

DMM WEBCAMP:プログラミングコースについて

コチラも実際にあるスクールに通うか、オンラインでの受講ができるようです。

個人的にまずエンジニアコースにいくよりプログラミングコースである程度身に付けた方がよいと思います。

実際にやってみて転職しようとしたのに前職より辛いってなってしまったらお金の無駄になるだけです。

学ぶことは基本的なプログラミング方法やGITの使い方等だと思います。

しかしいきなり未経験でプログラミングコースを選ぶ前にまずは自力で勉強してみることをオススメします。

順序としては

  • 1.ある程度独学してみる
  • 2.独学では厳しいと感じたらプログラミングスクールに通う
  • 3.ある程度身に付いたらエンジニアコースに切り替えて就職しやすくする

といった感じでしょうか。

じっくり独学で学んでいる余裕がない!という人にはプログラミングスクールはかなり優良だと思います。

個人的には退職する前に独学でじっくりとお金を稼ぎつつプログラミングスキルを付けて
スクールに通わず転職してしまうといったほうがいいでしょう。

30代前半であればスクールに通った方がまともな企業に就職できると思います。

正直なところ独学でそのへんの求人に応募して受かるのは難しいですね。

30代でプログラム未経験でエンジニアに転職したい人はプログラミングスクールの
転職率97%の実績を利用したほうが安全に就職できるかと思います。

もう一度言いますが、見切り発車で就職を決めるのはやめましょう。

IT企業や非IT企業でエンジニアを求めている中では超絶ドブラックな会社も存在します。

確かに成長はしますが、心身ともにやられる可能性があるので
転職する前はかならず前評判は必ずチェックしましょう。