はじめまして。
私は、日系大手企業のソフトウェアエンジニアとして10年働いていました。
突然ですが、あなたはこんなことを考えたことはないでしょうか?
プログラミングで副業してみたいなぁ~
プロマネーでは、そんなあなたの願望を願望を叶えるため、「プログラミングで稼ぐ」方法を分かりやすく解説します。
まず簡単に自己紹介ですが、私は10年ほどソフトウェアエンジニアをしていた30代です。
理系の高校、工学部の大学、大学院を卒業後、大手企業のソフトウェアの設計開発に従事していました。
ざっくり業務内容は以下のようなことをしていました。
- 仕様書を書く
- プログラミングをする
- テストをする
- リリース
平たく言えば、ソフトウェア開発を一通りしていました。
また、副業でスマホのアプリ、ゲーム開発をした経験があります。
そんな私が、
・できる限り分かりやすく
・就職、転職、副業のどのケースも対応して
・プログラミングで稼ぐ方法を紹介していきます
同時にプログラミング初心者の方の良くある疑問
こんな疑問も、「全て」解説していきます。
【STEP0】「プログラミングで稼ぐ」って何?
昨今、小学校でプログラミング学習をするなど、プログラミングが話題になっています。
今までは、エンジニアがプログラミングをするケースがほとんどでした。
しかし、今後はエンジニア以外の方もプログラミングすることも増えてくるでしょう。
つまり、プログラミング自体を職としてお金を稼ぐ方もいれば、補助的なスキルとしてプログラミングを活用する方も増えてくるのではないでしょうか。
プログラミングは稼ぐ以外でも役に立ったりします。
しかし、実際に「プログラミングで収入を得たい」という方が多いので解説していきます。
そもそも初心者でもプログラミングで稼げるの →稼げます
結論としては「稼げます」
IT分野は恒久的に人手が足りていないので、プログラミング学習をすれば仕事にありつける可能性が高いです。
ただ、就職・転職をしてプログラミングをメインの業務とする場合、純粋にプログラミング言語だけを学習するだけだと厳しいです。
いわゆるコーダーと呼ばれるような、仕様書(どのようなプログラムを作るのか記載されたドキュメント)に基づいてプログラミングをするだけだと、収入は大きくならない可能性が高いです。
このブログでは、プログラミングだけでなく実務で求められるような、周辺知識についても解説していきます。
「プログラミングで稼ぐ」は職業としていなくてもOK
プログラミングでお金を稼ぐ仕組みについて解説していきます。
ほとんどの人は以下のどれかでお金を稼いでいます。
- 開発に従事
- プロダクト設計開発&納品
- プロダクト販売
- 広告収入
- プログラミング関連事業をしている(プログラミング学習の支援など)
「開発に従事」というのは、何かしらの組織に所属して賃金を貰う方法です。
主に会社員が当てはまりますので、報酬は以下のいずれかになることが多いでしょう。
- 時給
- 月俸
- 年俸
「プロダクト設計開発&納品」というのは、顧客が要求するプロダクトを作って、それを納めてお金を貰う方法です。
主にBtoBかフリーランスの方が対象になることが多いです。
「プロダクト販売」はプロダクトを作って、第三者に販売してお金を稼ぐ方法です。
事業として行う場合もあれば、個人で作るケースもあります。
報酬は売上になるので、当たり外れが激しいです。
「広告収入」はアプリなどを作って、第三者に利用してもらい広告を見てもらうことで収入を得る方法です。
報酬は広告収入の単価と参照数になるので、「プロダクト販売」と同様に当たり外れが激しいです。
「プログラミング関連事業をしている」というのは、プログラミングに関わっているけど開発以外の仕事です。
プログラミングと言っても、様々なお金の稼ぎ方があります。
特性を理解して、自分にとってどれが良いのか選択していく必要があります。
プログラミングで得られるのはお金だけではない
プログラミングで得られるのは、お金だけではありません。
- スキルが得られる
- 職業の選択肢が増える
- 知り合いが増える
【STEP1】プログラミングの学習方法
プログラミングの学習の方法は以下になります。
・独学
・大学・大学院に通う
・会社で働く、研修を受ける(OJTなど)
などなど
自分の状況とやりたいことによって、選択する必要があります。
学生の場合、「大学・大学院に通う」のが現実的な解でしょう。
ソフトウェアエンジニアとして就職できる可能性が最も高いです。
就職活動中の方は、
IT系の会社に入社することで、プログラミングスキルを身につけることもできるでしょう。
既に社会人であれば、
大学院に通ったり(大卒のケース)、プログラミングスクールに通ったり、独学したりするのが良いです。
何から始めれば良いのか
プログラミング学習であるあるなのが
です。
ネタバレすると、直近の目標は「ポートフォリオを作る」のが良いでしょう。
詳細は後半で解説します。
プログラミング学習は誰かに頼れれば良いのですが、独学だと何をすれば良いのか分からないことが多いです。
また、独学以外の場合でも
こういったケースは非常に多いです。
プログラミング学習の初期は、科目的には数学みたいなイメージかなと思います。
学生の時、テスト前に方程式やsin、cos、tanを暗記して、問題を解いたりしたことはないでしょうか?
その時、これって何に役に立つのだろう?
こういった疑問を抱いたことがあるのではないでしょうか。
アドバイスとしては社会人であれば、基礎ができたら直球に「役に立つもの」を作った方が良いです。
時間も限られているので、役に立たない学習をするのは時間の無駄です。
役に立つものというと「ポートフォリオ」が一例です。
ポートフォリオとは成果物で、第三者に見てもらうことで実力を把握してもらえます。
勉強しながら実績も作れるのでオススメです。
プログラミングではじめに作ると良いプロダクト
完全初心者の場合は、本の例題からスタートが良いでしょう。
ただ、作りたいものをイメージしておく必要があります。
プログラミングはプログラミング言語を選択して、コーディング(制御する命令をテキストで書く)する作業です。
プログラミング言語の学習は、1つ目は学習コストが高いですが、2つ目以降は応用が効くケースが多いです。
注意したいのは、
作りたいものが大きく違うと、求められるスキルが変わってきてしまいます。
例えば、スマホのアプリであればAndroid、iOSに関する知識、Windowsアプリを作るのであれば、WindowsのAPI(Windowsを制御するための命令)の知識が必要になります。
この、プログラミング言語以外の周辺知識の学習コストが高い傾向があります。
作りたいものがブレブレだと、いつまで経ってもプロダクトが完成しないです。
オススメのプロダクトは以下です。
- Webサービス
- 何かを解決するスクリプト
どれも、役に立つ傾向があるのでオススメです。
初心者が始めるのにオススメしないこと
避けておいたほうが良いことを解説します。
- 0からフルスクラッチ開発する
- ゲーム開発
- スマホアプリ
初心者がやりがちなのは、「0からフルスクラッチ開発する」ことです。
まっさらなエディタから、ソースコードを1行ずつ書いていきがちです。
実際の開発現場では、全く無の状態からコードを書き始めることはほぼないです。
仕様書があるか、母体やテスト用のプログラムがあるのでそれベースで開発を始めます。
良くあるのは、
- 過去開発してきたコードの流用
- 母体の購入
- オープンソース
のいずれかを利用することが多いかなと思います。
大抵、サンプルのプログラムがあるケースも多いので、テスト用のプログラムを動かすことから始めましょう。
その後、作りたい機能を作っていくことになります。
また、プログラミングで「ゲームを作りたい」と思う方は多いかなと思います。
ですが、ゲーム開発の難易度は高いです。
ゲーム会社に就職や転職したい方で、ポートフォリオを作りたい方であれば良いです。
ただ、副業でゲーム開発したいのであれば、一旦考え直したほうが良いです。
理由は以下
- プログラミングの難易度が高い
- ゲームエンジンの知識、理解が必要(学習コストが高い)
- プログラミング以外の素質が必要(UI、音楽、絵、3Dモデリングなど)
- 終わりがない(いくらでもボリュームを増やせる傾向がある)
特に、プログラミングスキルだけで完結しないので、おすすめできないです。
プログラミングの他に、音楽・絵を作る(購入する)必要が出てくるので、プログラミング以外の時間 or 費用がかかります。
「スマホアプリ」はAndroidとiOSで仕様が異なるのですが、Android、iOSの仕様の理解も難しく、初心者にはおすすめしにくいです。
また、目標が決まっていない段階でAndroidとiOSのどちらにするのか、両方学ぶのかという判断はつかないので学習が進んでから挑戦したほうが良いでしょう。
プログラミング言語の学習
プロダクトを作るのが良いのですが、完全初心者で基礎から学びたい方は教科書的なところから始めたほうが良いのは事実です。
プログラミング言語でオススメなものは以下
- C(C++)
- Python
Cは基本です。
メモリの理解が必要であったりするので、学んでおく必要があります。
ただ、分かりにくい部分があるのは事実です。
また、書籍にある例題は意味不明なことをしているので、
こんな感じになりがちです。
完全初心者の方にとって、苦痛の時間になる可能性は否めないです。
Pythonから始めるのも良いと思います。
身近なことを処理できるので、理解しやすいと思います。
【STEP2】プログラミングスキルのマネタイズ
プログラミング学習して得たスキルを実際にマネタイズしていきましょう。
主なマネタイズ方法は以下
- 会社員
- フリーランス
- 副業
会社員とフリーランスはいわゆる本職です。
就職、転職や案件を取ってくることになります。
一方で、副業は自前でプロダクトを開発したり、案件を取ってくることになります。
【STEP3】プログラマ・エンジニアになる方法
職業としてプログラマやソフトウェアエンジニアになりたい方に向けて、なり方を解説します。
現実的なのは以下です。
- 大学・大学院を卒業して就職
- プログラミングスクールに通って就職
- 現在の職から転職
「大学・大学院を卒業して就職」が王道で、主に高校生から大学生が対象です。
社会人であれば、大学院に通うケースはあるかなと思います。
理由としては、プログラマやソフトウェアエンジニアは、情報系の学部(コンピュータ・サイエンス)、数学専攻の方が多いです。
ソフトウェア設計開発の専門性が高い職になるにつれて、学歴主義の傾向は強くなります。
学部卒は少なく、修士・博士の割合が多いです。
なぜ、学歴が求められるのかというと、幅広いコンピュータの知識、アルゴリズムなどを学んできたことの証明になっているためです。
例えば、プログラミングが得意でも、コンピュータの知識があるかどうかは判断つかないので学歴が求められます。
特に学歴+職歴がない場合(新卒など)、面接で「たまたま知っていたから答えられただけ」という疑念が残ることもあります。
なお、コンピュータにあまり関係ない学部・専攻に通っているケースでも同じことが起こります。
ですので、先端のソフトウェア設計開発したいという方は、大学・大学院で情報系の学部に通うのが良いでしょう。
「プログラミングスクールに通って就職」は、主に社会人の方が対象です。
プログラマ、SEなどIT系の職種に就職することになるが多いです。
業務の内容は職業によってまちまちで、仕様書に沿ってコードを書いたり、システムの保守をしたりというのが多いです。
「大学・大学院を卒業して就職」と比べると、質の高い仕事を選べないこともあります。
経験を積んで昇進するか、転職して成り上がっていく形になるでしょう。
求められるスキル
プログラミングスキル
中途採用であれば、開発するのに必要なプログラミング言語は習得しておく必要があります。
新卒なら学生のときにコードを書いた経験があると、面接時に説明しやすいでしょう。
ソフトウェア設計開発スキル
あまり意識されていないケースが多いのですが、実務で求められるスキルです。
- 大学、大学院で学ぶ
- OJT
- 研修
- 書籍
大学、大学院の情報系の学部だと、ソフトウェア設計に関する講義があるケースがあります。
それ以外だと、会社でのOJTが一般的かなと思います。
また、開発者向けの本はいくつか出版されています。
読んでおくと現場のイメージをかなり掴めると思います。
【STEP4】プログラマ・エンジニアの仕事をチェック!
プログラマの仕事の内容を以下の記事で解説しています。
大企業の研修ってどんな感じなのか解説しています。
【Q&A】プログラミングでお金を稼ぐことに関する良くある疑問・質問まとめ
良くある質問を「Q&A」という形で記事にしています。
疑問に思うことがあれば、まずはここをチェックしてみてください!
Q:学ぶならどのプログラミング言語がオススメ?
やりたいことに沿うプログラミング言語を学ぶのが近道ですが、どうしてもトレンドの言語があったり、流行り廃りがあったりします。
基礎を学ぶことを重視するなら、トレンドに左右されにくい普遍的な言語から学ぶのが良いと考えています。
長い目で見るとコスパが良いです。
C言語かPythonあたりが良いと思います。
Q:C言語って学ぶ必要ある?
組み込みソフトウェア開発職につきたいなら必須です。
Web、アプリケーションなら学ばなくても良いでしょう。
ただ、ソフトウェア開発を本職としている方で、C/C++を書けない人は見たことないです。
希望する職種の中途採用の募集要項を見てみると良いでしょう。
要件にC/C++がなければ必要ないと思います。
大抵、いずれかの言語での開発経験と書かれているので、それができれば問題ないです。
Q:プロダクト作り始めたけど分からなさすぎて困っている
まっさらな状態から作るのは効率悪すぎるので、サンプルプログラムを動かしてみるところから始めます。
動かないものは理解しにくいので、予め動くものを用意します。
その後、サンプルプログラムに機能を足して作っていきます。
一通りやりたいことができると分かってきたところで、リリース向けのプロダクトを作っていくという形です。
Q:パソコンを購入しようと思うのですが、WindowsとMacはどっちがオススメ?
一応、Linuxという選択肢も加えるのと、1台しか購入しない場合だと、
- 商用ソフトウェアを使用するなら、Windows or Macはマスト
- ゲーム開発(PC)ならWindows
- スマホアプリでiOSが絡むならMacはマスト
PCのゲーム開発をするのかどうか、iOSが絡むのかどうかで選択すれば良いでしょう。
Linuxは商用ソフトウェアがNGのケースが大半なので、メインPCとしてはオススメしにくいです。
PCゲーム開発のケースはあまりないので、Macを購入するほうが無難かなと思います。
Q:プログラミングでの副業は専門職の人以外は止めたほうが良いと言っている方がいますが、実際はどうなのでしょうか?
良くあるのが、「自分のメインの職のスキルを伸ばすのが最も儲かる」という言い分です。
言いたいことは分かるのですが、あくまでエンジニアがエンジニアしかいない環境から見た結果であることが多い印象です。
非エンジニア目線が足りていないケースなのかなと考えています。
専門職でなくてもプログラミングのスキルや理解があると、業務がスムーズに進むことは多いです。
メインの職と関連付いた副業をできると問題ないです。
一方で、学習コストは高くハードルが高いのは事実でしょう。
特にプロダクトを1人で開発するのは、学習コストを考慮すると効率が良くないです。
1人で3ヶ月かかる案件があったとして、
- 1人で3ヶ月かけて1件消化する
- 3人で1ヶ月かけて1件消化する
どっちが良いのかというと、3人で1ヶ月かけて1件消化するの方が良いです。
3ヶ月で3件消化できるので以下の感じになります。
- 収入的には同じ(3人で割るので)
- 経験的には3倍(3つ案件できているので)
もちろん、業務は分担するので経験値は3倍では無いとは思いますが、チーム共有できたりします。
この辺が、専門職でなければ辞めたほうが良いと言われるところかなと思います。
純粋なプロダクト開発はオススメしにくいです。
Q:プログラムを自力で書くのに自信が無いのですが、ソースコードはコピペでも問題ないでしょうか?コピペしてしまったのですが、バレないでしょうか?
商用ソフトウェアでリリースするプログラムの場合は、大炎上する可能性があるので、絶対にやめましょう。
例えば、GPLライセンスのソースコードは公開する必要があるので、非公開部分に混入してしまうと大問題に発展します。
どういう経緯でバレるのかというと、
- 明らかにコピペしましたというケースは、レビューで指摘されると思います。
- コピペ元のソースコードにライセンスがある場合は、コンタミネーション(混入、汚染)のチェックツールをかけると指摘されます。
以前からリリース前に、コンタミチェックを必ずかけるのであれば良いのですが、急にコンタミチェックをすることになったみたいなケースがかなりやばいです。
既にリリースしているので、ソースコードを公開しないとならないみたいな話に発展します。
犯人探しも容易(ソフトウェア管理ツールがあるので)なので、コピペは止めましょう。
Q:プログラミングで何を作れば良いのか分からない
これは良くある質問です。
人それぞれなので、難しいところですが
- 目標が無いのが原因の1つ
- 何でもは時間的に無理なので、やりたいことを絞る
- 特になければWebサービスかルーティンを効率化するプログラム
何を作れば良いか良く分からないタイミングで、以下は止めたほうが良いでしょう。
- ゲーム開発
- スマホアプリ
ゲーム開発はプログラミング以外の要素が強いです。
スマホアプリはAndroidとiOSがあり、将来的に両方をサポートする必要が出てくることが多いです。
どちらかだけでも大丈夫なケースはあるのですが、片方だけで完結しないときもあるので、注意が必要です。
Q:プログラミングスクールって通ったほうが良い?
完全未経験で就職・転職したい場合や独学でモチベーションが上がらないなら、ありかなと思います。
事実として、プログラミングスクールに行かなくてもプログラミングを仕事にできるので、独学できるなら通う必要はないでしょう。
ただ、完全未経験で仕事にしたいなら、プログラミングを学ぶきっかけとしてはありだと思います。
また、就職・転職した後に職場で経験積めるので(研修とか機会があればなおさら)、長期的にみれば費用対効果はかなり高いかなと思います。
なお、おすすめのスクールは以下の記事にまとめています。無料プランとかもあるので、独学とともに検討するのが良いかなと思います。