これからプログラマーになりたいと思う人が勉強すべきこと

結論

  • 検索能力
  • 英語
  • プログラミング言語
  • アルゴリズム
  • アプリケーションの作り方

検索能力

まず一つ目にオススメしたいこととしてはGoogle検索をしっかりとマスターすることです
そんなもん、打ち込んだら終わりでしょ?って思う方。

はい、そうです。しかしながらこの仕事をしていて思うことはまずはGoogleを使い倒すことから始まります。
どのようにワードで検索したら自分の欲しい情報が得られるようになるのか?

表示されている一覧でどれが最も信憑性が高いのか?更新日はいつだろうか?など検索する上で、まず検索して情報を見極めることが一番最初に覚えるべきスキルじゃないかと思っています。

情報を制することがプログラマとして大切です。情報の取捨選択を正しくできるようになることがはじめの一歩です。
最初はGoogleと仲良くなりましょう。

英語

これは自分が海外に出てからすごく大切だと痛感した部分です。
そして何よりも自分のエンジニアとしてのスキルを急成長させてくれる大きな要因となりました。

そもそもプログラミングは英語で書かれています。まず英語を最低限読めるようにしましょう。
そして検索するときも英語で検索する癖をつけましょう。

考えてみてください、日本語と英語で書かれた情報量だとどちらが多いと思いますか?
圧倒的に英語で書かれた情報です。日本は俯瞰してみると小さな島国でしかありません。調べ物をしようと思った時に小さな島の情報だけじゃ足りないです。

もっと視野を広げるためにも英語で調べ物をしたり学習サイトも英語のものを使用することをお勧めします。
特にプログラミング初学者は日本語でラーニングサイトを利用することが多いと思いますが、あまりお勧めしません。

エンジニア育成教室のようなプログラミング学習を教えるようなものもありますが、そちらもお勧めしません。高い月謝を払うくらいであればもっと充実したサイトがたくさんあるのでそちらを利用することをお勧めします。

YoutubeでTutorialと検索すると高品質な動画がたくさん出てきます。

プログラミング入門者でコードを書きたいという方にはfreeCodeCampなどあります。こちらは無料ではじめられ、コースの修了時に証明も発行してくれます。発行された証明証は履歴書や自分のポートフォリオなどの実績として載せることもできます。

最初は英語でつまづくかもしれませんが慣れです。最初は単語を拾ってぼんやりとでもよいので読めるくらいになりましょう。

プログラミング言語

自分自身がどのようなエンジニアになりたいかで使用する言語は決まってきますが、Javaを学習するべきだと思います。
かくいう私はJavaが苦手です。Web系の言語からスタートしたためHTML/CSS, JavaScriptそしてPHPとすべて動的型付けの言語ばかりを扱ってきました。実際に仕事をする際に静的型付けを扱うことになりつまづいた経験があります。
これからプログラミングをやりたいという方はJavaで静的型付けを理解することをおすすめしたいです。なによりも型を付ける癖をつけておくと損はないです。

動的型付言語から静的型付言語 => 型を書くのが面倒に感じる
静的型付言語から動的型付言語 => 型がなくて不便に感じる

基本的に静的型付言語を扱う会社が多いのでメリットしかないです。

また、フロントエンドだから関係ないと思っているかもしれませんが、昨今TypeScriptが勢いを増しているため今後仕事において静的型付けで書く機会は増えることでしょう。
またJavaを通してオブジェクト指向も学べるのでプログラミング言語を勉強していきたい方にはおすすめです。

ここでPHPやRubyといった選択肢もありますが、あまりおすすめしません。
その理由として、どちらも言語としては未熟だからです。
需要がなくなることは当面ないでしょうが、プログラミングを長期的な目線で見るならばJavaで損はないです。
(ちなみに筆者はJavaが嫌いです。しかしプログラミング言語として見るならば学習にうってつけです。Javaができれば後々応用が効きます)

ここでライブラリ等を考えるかもしれませんが、初学者はライブラリはまだ触らなくてよいです。
まずは基盤を固めることに集中すべきです。

基礎ができたプログラマーと基礎ができていなプログラマーがライブラリを扱ったとき、基礎ができたプログラマーの方が圧倒的に理解力が早いです。特にこれからフロントエンドに行こうと思う方は絶対に基礎を固めましょう。
フロントエンド界隈はライブラリの入れ替わりが速くどれだけ素早く理解して適切に扱えるかが肝です。
まず基礎を固めることに集中してください。そもそもライブラリ自体流れが早かったりするので基礎を固めてる間にどんどん新しくなっていっています。基礎は新しく勉強し直すこともない部分なので、まずは基盤を作ることからはじめましょう。

アルゴリズム

プログラミングの要と言っても過言ではありません。初学者に取っては少し敷居が高くなるかもしれませんがステップアップとして勉強しましょう。プログラミングをしていく上でアルゴリズムは欠かせないです。
特に海外の教育現場を見ていると優秀なエンジニアを輩出している学校ではアルゴリズムをしっかりとやらされます。

アルゴリズムは筋トレのようなもので頭の体操感覚で毎日少しでもよいので時間を取ってやるとよいでしょう。
まずは簡単な問題から解いていくとよいです。またテトリスなど簡単なゲームを作ることもアルゴリズムを勉強するのに適しています。仕事をしていて複雑なロジックになるとハマることもあります。
そんな時どのように解決すればよいか考えましょう。

Hacker Rank



LeetCode



アプリケーションの作り方

そして最後になりましたがアプリの作り方についてです。基礎が固まったら今度はアウトプット!
ここに関しては自分もまだまだ勉強中の身です。自分の作りたいアプリを作っていきましょう。そうすることでアプリをどのように作ればよいのか実際にアプリを作ってものの作り方を学びます。

これは仕事になったときも必ず必要となる知識です。
アプリの作り方に関しては実践を通してどのようにものを作るか引き出しを増やしていく他ありません。
基礎ができたらアプリを作ることを学んでいきましょう。

画面設計、デザイン、フロント開発、サーバーサイド開発と、一人で多くのことをこなす必要があります。
その中でアプリをどのように設計すべきか、UI/UXはどのように作るべきかを学ぶことができます。
プログラミングとはアプリケーションを作るための道具でしかありません。

プログラミングをすることが仕事ではないのです。
マークザッカーバーグやジョブズだって世の中を便利にするためのサービスを作るためプログラミングという手段を使ったに過ぎないのです。世の中に素晴らしいサービスを提供するのがプログラマの仕事なんではないでしょうか?

まとめ

プログラミングの勉強方法なんて世の中腐る程あります。
もちろんブログ記事を書いてアウトプットするのもよいですし、Githubを活用してOSS開発に貢献する。
他人のコードを読みまくるなど、たくさん方法があります。

僕自身は他人のコードを読みまくりました。
読むことができればそれが扱えるということですから。最初の頃、何千行にも及ぶコードをプリントアウトしてシャーペンで翻訳を書いていました。

一つ一つコードの意味を調べながら、コードの持つ意味を書いたことで他人のコードも読む理解力も上がり、扱えるようになりました。

以前の自分はプログラミングをすることが難しかったですが、今はフリーランスのエンジニアとして働くことができています。
僕自身もも英語やプログラミングはまだまだ勉強が必要そうです。初心を忘れずに精進していきます。

一生仕事していくその覚悟を持ってプログラマーを目指してみてください。

この記事で挙げた方法はあくまで手段の一つに過ぎません、鵜呑みにせず一つの意見として取り入れてみてください。

関連記事