
プログラマー・エンジニアとして働いている、目指している方にとって学習する言語の選定は
とても重要な問題だと思います。
初心者からフリーランスを目指す方にC#をオススメする理由を述べていきます。

最近はPythonだったり、Rubyといった言語が人気ですが、
私はプログラミング初心者にC#をオススメしています。
プログラミングの初心者にC#がオススメな理由

プログラミングの基礎が学べる
私の現場経験から、以下の2点が抑えれていないエンジニアは結構苦労しています。
- 変数の型・スコープの意識
- オブジェクト指向
最近流行りのプログラミング言語はこの2点を簡略化していることが多いです。
簡略化した言語しか学習していないと、なぜプログラムが動いているのかがわからなくなり、
その結果、自分でエラーを解決できないといったことに陥ってしまいます。
この事から、初心者の方には基礎を抑えるためにC#をお勧めしています。
キャリアがまだ固まっていない方は「とりあえずC#」でOK!

そんな方にはC#がオススメです!
業務系、Web系といった専門用語が出てきましたが、簡単に説明すると
業務(お仕事)で使用するシステムを開発するのか、
Web(業務・個人)で使用するシステムを開発するのか、ということです。
最初のうちは特に意識をしていなくても、エンジニアにとってこれはとても重要なことです。
どんな会社でどんな経験をしたかが、今後どんな道を進むかを大きく左右します。
そういったキャリアの選定で迷う方は多くいます。
そんな時は、意外と幅広い分野で活躍するC#を学習することをお勧めします。
C#の活躍現場はこんなにあります。
- ゲーム開発 :WebサービスやUnityで活躍中
- 業務システム :Webシステム、デスクトップアプリケーションが活躍中
- Webシステム :サーバサイドにC#が活躍中(価格.com など)
- スマホアプリ :ios、Android両方の開発が可能
私自身もそうですが、C#で基礎を学び、そこから特定の分野を掘り下げていくといった流れで
自分に合う業界に合わせたキャリアを積んでいけば間違いなく現場で重宝されるエンジニアに
なれます!
JavaとC#の比較
C#とよく比較されるJavaですが、実はどちらもC++という言語から生まれています。
私はJavaを半年学習後、C#の案件に入ったのですが、C#は楽だなという印象でした。
その分Javaの学習にかなり苦労したんですけどね。。。
さて、よく比較される2つの言語ですが、私の経験から
JavaがC#より優れている点・劣っている点を見ていきましょう。
JavaがC#より優れている点
組み込み系の開発ができる
C#の欠点でもあるのですが、
C#は組み込み系システムの開発ができません。逆にJavaはできます。
組み込み系って何?となりますが、
簡単に言うとロボットの制御だと思ってください。
ただ、ロボット制御を行いたいのであれば、C言語の方を私はおすすめしています。
なので、何とも言えない点なんですよね。。。
Linuxでの開発
C#はWindows、Mac環境下での開発環境は簡単に
作れるのですが、Linux環境下での開発環境は
作成するのに時間が掛かります。
ただ、私が経験した現場は基本的にWindows、Mac環境で開発は行うので、
特殊な状況ではJavaに軍配が上がります。
JavaがC#に劣っている点

IDE 開発環境
これがC#の最大のメリットだと思います。
まず、IDEとは何かについてですが、
簡単に言いますとプログラムを開発する用のアプリケーションだと思ってください。
Javaでよく使用されるIDEはEclipseというものがあります。
C#ではよくVisualStudioが使用されます。
私の独断と偏見ですが、プログラミング初心者の方がいきなりEclipseを使用するとまず躓きます。
理由は単純で、入れるプラグインや設定が多いからです。(これがEclipseの魅力でもあるんですが)
プログラミングを始めたばかりの時は、プログラムが動くことや目に見えた進捗があった方が
モチベーションの維持がし易いです。
以上のことから、導入から目に見えるプログラム動作の確認が簡単なVisualStudioが
初心者の方には良いと考えています。
結論
初心者の方にはC#をお勧めします。
しかし、将来的にはどちらもできた方がいいです。
その理由は、C#よりもJavaの方がフリーランス案件が多いからです。
C#の案件が少ないかと言うとそうではなく、単純にJavaの需要が高いです。
C#のお仕事ってあるの?
フリーランス案件

あります!
C#案件が無いということはまず無いと言えます。
習得したいプログラミング言語、したくない言語にあるように、
C#は人気のプログラミング言語です。
フリーランスでは客先常駐型の案件は多数あります。
在宅案件

これは少ないです。
C#は業務系システムで多く使われる言語のため、
客先常駐型の案件がほとんどで、在宅案件は私の体感では少ないです。
C#を学んでフリーランスになるためには?
筆者がC#を学習した流れ
私は専門学校でJavaを学習しました。
その後、入社した会社がC#を主に使用する会社だったので、現場でスキルを身に着けた流れです。
Javaでプログラミングの基礎を学び、C#で実務を経験したといった感じですね。
未経験からC#を学習してフリーランスになるためには?
筆者は、実務経験が無いうちから、フリーランスになることはお勧めしていません。
理由は単純で、未経験のうちは単価が安いからです。
具体的に言うと、20万/月 とかです。
正直、会社に所属して実務経験を積んだ方が効率がいいのです。
そこで、筆者のお勧めする学習からフリーランスになる流れは、
①専門学校、オンラインスクールで学習
②未経験でも入社可能な会社で実務を経験
③3、4年の実務経験を経て、フリーランスに転身
といった感じです。
3,4年も実務を経験すればフリーランスで報酬は会社勤めの倍になります。
そのためにも、最初は会社に所属してスキルを身につけましょう。
C#以外にも初心者にお勧めする言語
結論、Pythonです。
理由は元々学習用に開発された言語なだけあって、学習コストが低いことです。
その特徴から、変数の型を宣言する必要はありません。動的型付けによって、型が自動的に判別されています。
その点が筆者の意見とは外れてしまいますが、機械学習の分野などで今活躍中の言語なので学習するメリットは高いです。
さいごに

プログラミングは学習し始めが一番苦労します。
ただ、一度基礎が出来てしまえば、他の言語の学習はさほど苦労することはありません。
筆者も、専門学校でJavaを学習後、未経験のC#案件にアサインされましたが、
Javaで基礎を学習していたため、苦労なくスキルを習得できました。
一つの言語をある程度習得すれば、スキルの転用は簡単といった感じです。
最初のうちは大変だと思いますが、挫けずに頑張ってください!
C#を使っていると、VBの仕様(ほかの言語と乖離があり過ぎる、クラスが使いにくい、抽象化が弱い、型がはっきりしていない(特に嫌なのがintとstringの連結)等)が嫌になります。静的型付け言語でありながら、var lst = new List(){1,2,4,3}と書けたり、Pythonのようにforeach(var i in Range(0,100))と書ける点もGood。私は、Pythonも使っています。動的型付けでありながら、str型とint型を連結できない仕様はとてもいいですね。PythonはクラスプラットフォームGUIプログラミングをやっていますが、プラットフォームによって処理が変えられる点が良い。C++でPythonが高速になったり、GPUを使った処理等の柔軟性がある点も評価できる。私なら、初心者に「C#」をオススメしますね。私も記事(https://qiita.com/kawaguchi5460/items/d18b11fc572e9c93c932)を書いたのですが、プログラミングはこの部分が難しいので、これさえ分かればできるC#は比較的良いと思いますね。