【駆け出し向け】フリーで仕事するプログラミングのレベルとは

プログラミングを始めようとしている方から駆け出しエンジニア・プログラマに対象とした記事です。

現役エンジニアやプログラミングを生業としている方には、まったく役に立たない記事でもあります。

結論を先に言っておきますと、フリーだろうが企業勤めだろうが お金を稼ぐのに正直プログラミングのレベルはそこまで高くなくても大丈夫です。

なんなら極論を言ってしまえば完全未経験でもGoogleと、 ちょっと詳しいアドバイスくれる人が一人でもいてくれればプログラミングで稼ぐことは可能です。

ITエンジニアの振りをしている某炎上系インフルエンサーみたいなことは フリーランスシステムエンジニアを生業としている立場としては正直言いたくないのですが ぶっちゃけてしまうとインフルエンサーの言うように、 難しい知識はなくても基礎知識とコミュニケーションだけでお金は稼げます。

プログラミングの基本的な仕組みを知ってしまえば あとはGoogleで調べながらでもなんとかなってしまいます。

ただ、それだけでは簡単な仕事しか得られないのでめちゃくちゃ稼ぐっていうのは無理です。

数をこなせばできなくもないですが、プログラミングレベルが低いと 簡単なものをくみ上げるだけでも結構な時間がかかりますし、 お客さんに仕様変更を求められると知識がないので応用が利きません。

Googleでもなんとかならないのは自分で機能を組み立てていくレベルの仕事ぐらいです。

そういった仕事はそもそも駆け出しには振られないと思うので、 とりあえず最低限のプログラミング知識を身に付けて すでにあるものを組み合わせてお金になるものを生み出せるようになるのが最優先事項です。

凄腕エンジニアは自分と同じような立ち位置を目指していると思うので 駆け出し諸君らに厳しいことを言ったりしますが、無視してかまいません。

駆け出しや未経験が目指すべきは凄腕エンジニアではなく、まずはお金の稼げる駆け出しエンジニアです。

ちょっと前書きが長くなってしまいましたが、 今回は駆け出し&未経験者向けにどうやってITエンジニアのスタートラインに立ったらいいかを解説します。

優先して覚えるべき言語

  • JavaScript
  • PHP
  • Ruby

いわゆるWeb系エンジニアを目指すのであれば、 ぶっちゃけるとこの2つを重点的に覚えることです。

なぜなら人気のRailsやLaravelは上記の知識が仕事するうえで必要だったりします。

ツイッターやブログなどで目立っている言語をやりたいと思いますが、 Twitterを見ているとプログラマ&エンジニアを志望している人は 9割ぐらいWeb系プログラミング言語をやりたがっているように感じます。

  • Ruby on Rails
  • Python
  • Laravel

がやりたい!って人が多いのではないでしょうか?

上記の3つをやりたがる人はおそらくエンジニア風インフルエンサーや、 それ系のオンラインサロンで情報を得たりしてる人が大半だと思います。

そもそも「Ruby on Rails」はRailsという言語ではありません。

Rubyという言語で作られているアプリケーションフレームワーク(以下FW)です。

「Laravel」もLaravelという言語ではなくRailsと同じくしてPHPという言語のFWです。

プログラミング言語なにがやりたい?って聴いて「Rails!」っていう人は、 例えば学校で何語を学びたい?って聴かれているのに、言語ではなく言語を使った四字熟語!とか 英語の長文を学びたい!って返してくるのと同じです。

四字熟語は日本語で構成されています。

英語の長文は英単語と文法を組み合わせたもので構成されています。

RailsはRubyで構成されているFw、 LaravelはPHPで構成されているFW、 そしてVue.jsやReactはJavaScriptのFWとなっています。

そして最初に戻ってもう一度言うと、駆け出しが最優先で覚えるべきプログラミング言語は

  • JavaScript
  • PHP
  • Ruby

になります。

熟練プログラマからするとC言語からを学べとかいう人もいますが、 メモリ管理をする言語などは、祝日もつぶしてプログラミングを娯楽としてやりたい人以外はオススメしません。

正直やりたい言語をやるのが一番ですが、何から学んだらいいかわからないという人であれば

今回オススメした最優先で学ぶべきプログラミング言語を入門してみてください。

あ、ちなみにJavaとJavaScriptは完全に別のプログラミング言語なので、 JavaScriptっ知ってる?って聴くと「あぁJavaね!」っていう人がめちゃくちゃ多いです。

英語知ってる?って聴かれて「あぁロシア語ね!」っていうのと同じです。

名前が似てるだけでそれぐらい違う言語なので知ったかぶりをして恥をかかないようにしましょう。

覚えるのは言語ではなく組み方

先ほどはプログラミング言語を覚えろと言いましたが、正直何を覚えてもいいです。

プログラミングは基本的に基礎的な部分は書き方が言語毎に少し違うというだけで 基本的な処理の流れや組み方は言語問わずほとんど同じです。

JavaScriptを極める!PHPを極める!と1つだけやろうとする人もいますが、 私のおすすめの学習法は2~3言語同時に基礎を学んでいくことです。

変数は値を入れる箱という概念はどの言語も同じです。

そして一番効率よく学習できるのは反復です。

例えばJavaScriptで文字を出すやり方を覚えて、 PHPではどうやればいいか、Rubyではどうやればいいか。

1つの言語でやったことと同じことを別の言語でやってみると 1つだけやるよりもかなり上達が早くなります。

なので言語ではなく基本的なプログラミングの組み方を意識して覚えていきましょう。

鍛えるべき最優先のスキルはGoogle力

最初にも言いましたが、Googleで調べる(以下ググる)だけである程度仕事ができてしまいます。

2020年に私はJavaの案件をやったことがないのに 調べながらで2・3案件こなせました。

もちろんJavaの経験はほぼ皆無です。(さすがに10年プログラミングやってたらちょっとは体験してる)

他の言語の知識を活用してGoogleで調べながら組んだだけで意外となんとかなっています。

なので駆け出しエンジニアが一番優先して学ぶスキルは、

「Googleで調べ物をして解決策を見つける」

ことだと思っています。

本屋さんに売ってるプログラミング入門書なんかは 調べたらほとんど同じことが載っていてわざわざお金を出して買わなくても学べます。

熟練のプログラマに知り合いがいたら、プログラミングの仕事をするうえで Googleで調べものするのって大切かどうかを聞いてみてください。

100%大切と帰ってきます。

大切じゃないと帰ってきた人は、その人はプログラマじゃありません(笑)

それぐらいググる力というのは大切なのです。

英語を読めるようになろう

入門資料なんかは日本語で書いてくれている人が多いのですが、 ある程度組めるようになってきたら英語の資料がない場合が結構出てきます。

英語アレルギーにかかっている人は、せめて英語を読めるようになっておきましょう。

日本語とプログラミングの相性はすごく悪いので、 英語をできる人はそれだけで他の人よりもアドバンテージをとれています。

私もろくに学業を修めていないので英語は苦手ですが、 読むに至っては全く抵抗なくなりました。

逆に英語じゃないと意味が伝わらなかったりすることもあります。

Googleの翻訳機能は優秀ですが、信じると痛い目にあうこともあるので気を付けてください。

開発環境はVSCodeでOK

プログラミングをする上でコードを書くためのソフトは必須になってきます。

Windowsならメモ帳というものがあるのですが、それはプログラミングには向いていません。

プログラミングに適したエディタアプリケーションを使うのがいいでしょう。

識者に聞くと、Vim一択!Emacs一択!なんて言ってくるかもしれませんが、 笑顔で無視してて大丈夫です。

初心者には関係ありません。(気になる人はVimとかでググってみてください)

初心者の人は最近ではWindowsでもMacでも「VSCode」というアプリケーションをオススメします。

私もメインで使っているエディタです。

初心者から上級者まで気に入られているのでとりあえずはVSCodeを導入してみてください。

「VSCode 入門」でググると解説してるページもたくさんあります。

そのうち私も解説したいと思います。

もし貴方が中級者になってきたら「んんwwVim以外ありえないww」っていう状況になるかもしれません。

その時はプログラミングがかなり上達した証になります(笑)

番外編:MacOSは別にいらない

プログラミングを始めよう!って人で初期投資としてAppleのMac(Macbook)を買う人が結構います。

確かにWindowsよりプログラミングがやりやすく、解説もMacでの解説が多かったりしますが、 無理に買わなくても大丈夫です。安い2~3万のWindowsが入ったノートパソコンでも十分プログラミングは学べます。

ただ、案件をもらった時デザインがMacで作られていたりすると フォントがWindowsにはなかったりして結構やりとりが大変になるので 余裕があればMacも買っておいたほうがいいでしょう。