プログラミングを本気で習得したいなら独学でも十分可能です。
なぜなら答えは全てインターネット上にあるからです。探せば答えを見つけることが誰にでもできます。
ただ、プログラミングは一つの答えを探して終わりではありません。全体的な概念を理解し、具体的な技術と方法を習得する必要があります。覚えることはたくさんあります。身につけるべき技術や考え方もたくさんあります。
何から手を付けていいかわからない状態でモチベーションが継続しなかったり、自己管理が苦手だったりで、学校やオンラインレッスンで誰かに教えてもらいたいって人は多いと思います。
かくいう私もそうでした。
今回の学習内容
鍛冶屋からプログラマーへ
23歳まで私は現場で鍛冶工として働いていました。鉄を切って叩いて溶接するような仕事です。
現在とは真逆の職業です。ある時プログラミングへの興味を持ったことをきっかけに、専門学校に入ることを決意します。
入学したのは24歳の時で、専門学校ではシステム工学について3年間学びました。もちろん仕事も辞める必要があったし、学生の頃は学費のためにバイトをする必要もありました。
専門学校というのは就職率をとても気にします。プログラミングを生徒に教えるより国家試験に合格した生徒を増やすほうが就職率を上げることができるようで、ほとんどが国家試験対策の授業でした。
そのおかげもあってか国家試験に2つ合格した私は、27歳でシステム受託開発企業に就職します。ここで働いていたのは1年半程でしたが、ちょっとしたプロジェクトのプチリーダーを任されたりもしました。
28歳で退職した私はフリーランスとして活動しながら自分のサービスを開発しようとしていました。私自身が設計、制作するサービスです。ワクワクしないわけがありませんでした。
しかし、いざ制作開始!となった時にあることに気付きます。
「何から始めたらいいのかわからん!」
4年半真剣に学習しても活かせなかった経験
ここで皆さんに伝えておきたいのは、決して私がサボっていたわけではないということです。
専門学生時代はクラスメートの誰よりも勉強した自信があるし、Androidアプリをクラスメートと一緒に制作したりもしました。実際に入学した頃はプログラミングなんか一つもわからないし、サーバーって何?のような状態だったのが、半年で国家試験を取得するまでに至っていました。
その後に勤めた会社の始業時間は朝8時半でしたが毎日7時には出社して勉強をしました。この習慣は、残業で0時を回った次の日もやめることはありませんでした。
つまり、4年半もの歳月をかけて本気で学習しても、自走でサービスを開発できるレベルには全然達していなかったんです。
サービスを開発できるようになると
ちなみに、サービスを開発できるようになると、どのような変化があるかをお話します。
収益化できる自分のサービスを運用することが可能
他の企業やプログラマーに頼んだら数百万や数千万するようなサービスであっても、自分で制作することができます。開発に掛かるコストは自分の生活費だけです。
サービスが軌道に乗ろうが乗らまいが、自分で生み出していくことができます。
サービスが流行らなかったとしても、反省し学ぶことができます。この知識や経験は非常に大きいです。
収益化できるサービスというのは難しく聞こえるかもしれませんが、月に1,000円でも大丈夫です。単純に毎月1,000円利益を出してくれるものを300作れば十分生活できます。
収益が大幅にアップ
自分でサービスを制作できるようになるということは、それだけで開発に関わる人的コストを削減することができます。つまり、自分自身が数人分の役割を果たせるようになるということです。
これは、その人数分働く必要があるかと言うとそうではありません。むしろ、無駄な時間がなくなり効率良く開発できることの方が多いです。
自分のサービスで培った経験や知識、コードを再利用することもできます。そうすれば、時間を削減して開発を行うことが可能になり、一本あたりの仕事に費やす時間を減らすことができます。
企業や顧客には予算があり納期があります。魅力的でなければ請けなければいいし、交渉することができます。
自分の好きな時間に好きな場所で自由に力を発揮できる
パソコンとインターネットがあればいつどこで仕事をするのも自分の自由になります。
やりたくない仕事は断ればいいし、ワクワクする仕事であれば無料同然で乗っかってみることもあります。
これまでで身につけた知識、経験、知恵、技術、すべては自分自身のものです。いつどこで発揮させるも自分次第です。
正しいプログラミング学習方法
頑張って4年半勉強したにもかかわらず、ゼロからサービスを作ろうとして全く作れなかったんです。
なんにも分からなかった。作り方が(笑)
そこで気付いたんです。今までは既にあるものの中でコーディングして、ただ「できる気になっていただけ」ということに。
つまり、専門学校に行って企業に就職しても、自分でサービスを作れるだけの技術や知識は全然身に付いてなかったということです。
独学でプログラミングを学習しようとすると、90%の人が挫折すると言われます。どうやって算出した数字なのかは定かではないですが、これに納得できるくらい決して簡単なことではありません。挫折もするし、滅入ることも多々あります。
ただ、これからお伝えすることを実践して習慣化してしまえば、誰でも独学でプログラミングを覚えることができると思います。
元鍛冶屋の私にできたんですから大丈夫です。
自分のパソコンで実行する
参考書を読んで満足してる人、Web上の学習用サイトでコードを打ち込んで満足している人、すぐに変えてください。
もし本気でプログラミングを身に付けたいのであれば、絶対に自分のパソコンで「ファイルを作成」して、そのファイルに「コードを書いて」ください。
コーディングには IntellijIDEAやVSCodeなどのIDE(統合開発環境)を使用し、その使い方に慣れてください。
デベロッパーツールの使い方や、デバッグ方法についても学ぶ必要があります。
ローカルサーバーやGitの使い方も覚えてください。
必ず必要になります。絶対に実践して必ず身に付けてください。
答えを検索できるようにする
答えはインターネットにたくさんあります。正解は一つだけではありません。
分からないところは、ググって調べる習慣を付けてください。もしメンターがいるのであれば、メンターに分からないところを聞くだけではなくて「検索の仕方」も聞いてください。
一番は公式のドキュメントを読むことですが、それだけでは理解できないこともあります。
Stack Overflow では色々な解答を見たり質問することができます。しかし、ここにある解答が全て正解だと結論付けないでください。その答えが誤っている場合もあります。コメントの方が正しいことを書いている場合があるので、コメントも必ず読んでください。
Qiita は日本語で書かれているので読みやすく、参考になる記事も多くあります。しかしそれだけが正解ではありません。こちらも誤っている場合もあれば、古い記事などは参考にならない場合もあります。
Chromeの日本語翻訳を使用して英語の記事を読む習慣を付けてください。英語記事のほうが答えが出るのも早く、また多いです。検索ワードに「How to 〜」や「Why is 〜」と英語で検索することで簡単に検索することができます。
検索ツールの「期間指定」を指定すれば、新しい記事に絞って検索することができます。
答えを簡単に探せるようになると、独学は苦ではなくなります。
自分のサービスを立ち上げる
もし既に「こんなサービス作ってみたいな」と考えているものがあるなら、実際に作り始めてみてください。
目標があれば、その作り方をロジックで考えることができます。何が必要で、何を学習するべきかを理解できます。この目標は、モチベーションを継続することに大いに役立ちます。
サービスを実際にインターネットで配信することで、ドメインやサーバー、セキュリティ、画像の圧縮など多くのことを学ぶことができます。
もし目標がないなら、フロントエンド開発なら本の検索サービスはオススメです。どんなサービスなのかは、この RAKUMAのカリキュラム を参考にしてください。
バックエンドを学ぶならボットを作成してもいいし、両方なら自分のブログを作成してみましょう。
何れの場合も最初から完璧である必要はないし、最初から完璧に作ることは無理だと思っていてください。
その代わり、何回も作り直してみてください。
孤独と不安には仲間とメンターが必要
それでもやっぱり誰かに教えてもらいたいと思うことも絶対あります。自分がやっていることが本当に正しいことなのか不安になるからです。
孤独は人をネガティブにします。学習仲間やメンターが欲しいと感じることもあると思います。
その場合は、オンラインスクールに入るのも一つの手段です。私がやっているオンラインサロンRAKUMAもその一つです。
RAKUMAは プログラミング未経験から自分のサービスをローンチするまでを目標に、みんなで楽しく学んでいこうぜ!という理念があります。
生徒同士で教えあってもいいし、私が教えることもあります。将来的には生徒同士で新規サービスを立ち上げたりできたら楽しそうだなとも思っています。
まだカリキュラムは少ないですが、何をどう学べば良いのかを教えることができます。いつでもコメントやビデオチャットの予約をすることができます。
もし興味があれば一度ホームから問い合わせてみてください。