学習マップ
私が、今から知識ゼロの初心者の段階で、Web系のプログラマーになるとしたら、以下の順で行動します。
- HTML、CSS、javaScriptを学ぶ(1~2か月)
- ホームページを作成する(1か月)
- 派遣登録して、Web開発案件に参画する -> この時点でプログラマーであり、以降はスキルアップ
- Pythonを学習する(PHP, Rubyでも可)
- Webフレームワーク(Django)を学習する
- PostgreSQLを学習する(MySQLでも可)
- Linuxを学習する
- Networkを学習する
- Dockerを学習する
- 学習してきた知識が役立つ案件を探す(派遣可)
- Go言語を学習する
- AWSを学習する
- Kotlinを学習する
ちなみに私は、現在、12のステージまできています。
プログラム学習の注意点
これは、私自身に言えることなのですが、「ノウハウコレクター」にならないことに注意しましょう。
「ノウハウコレクター」とは、「仕事に不必要な技術を得に深堀りすることもなく、基礎だけさらっと学習して満足している状態」のことを指します。
私は、これまで数多くの技術を勉強してきました。
<学んだ技術>
・ Java -> HTML -> CSS -> javaScript -> PHP -> jQuery -> PowerShell -> C# -> MongoDB -> PostgreSQL -> MySQL -> Python -> C++ -> Angularjs -> Vuejs -> React …etc
これらの技術を浅い理解のまま基礎的な部分だけ学習してきました。
技術者として成長するためには、たくさんの知識が必要と考えて色々と手を出していたわけですが、実際は「実務でもあまり使えない中途半端な知識」が若干身についただけでした。
エンジニアとして成長するには、自分でプロダクトを作ったほうが何倍も成長します。加えて、プライベートよりも実務で開発したほうがより成長しやすいです。
補足しておきますが、「業務で必要のない知識は勉強するべきではない」というわけではありません。
次の案件に参画する種を育てるために、仕事で使っている技術とは違う技術を勉強するのはありです。しかし、「仕事に活かせそうのない技術を基礎的な部分だけ学び続ける」ことは時間の無駄です。
ベストなのは、自分が仕事を通じて習得してきた技術に「関連する技術」を学ぶことです。
その方が次に繋がりやすいです。
プロダクトを作ろう
学習マップの最初に挙げた、HTML, CSS, javaScript は、3つの利点があります。
- 学習しやすく、挫折しにくい
- ホームページ(プロダクト)を作れる
- 案件数が多い
目的によって、学習すべきプログラム言語は異なってきます。加えて、開発経験有・無によっても学ぶべき言語は違ってきます。
HTML, CSS, javaScriptは、学習しやすく、挫折しにくい言語なので私は最初にこれらの技術を学ぶべきだと考えます。
※HTML, CSSは、正確にはマークアップ言語なので、プログラム言語とは異なります
また、これらの言語を覚えると「ホームページ」を作成するのに必要な知識が身に付きます。
かっこいいデザインは、Webデザインを学ばないといけませんが、素人感あふれるサイトでもいいと思います。Topページでも作ってみてください。
それに、これらの言語はWebブラウザ上で動作するので、サーバーに設置する必要がなく、自分のパソコン上で動作確認できます。
案件数が多いのも魅力です。特にjavaScriptができれば開発案件に参画できるチャンスが広がります。
※ここでの案件数は、派遣の案件数を指しています
案件数ならJavaやPHPも多いのですが、これらはサーバーサイド(サーバーに設置する)側のプログラミング言語であり、開発難易度の問題により、未経験者では案件に参画することが難しいです。
※言語によって、開発案件に参画できやすい言語、しにくい言語があります
まずは、開発案件に参画し、最短でプログラマーになりましょう^^
ここまで、2 ~ 3か月でこなせるとベストです。
効率的なキャリア形成
プログラマーには大きく分けて、フロントエンド / サーバーサイドの2つの開発領域があります。
フロントエンドはWeb画面側の開発を指し、HTML/CSS/javaScriptは、フロントエンド開発時に主に使用される言語になります。
サーバーサイドは、サーバー内で動作するアプリケーションの開発で、アプリケーションの核を作成するポジションになります。主に使用されている言語は、Java、PHP、Ruby、Python、Goなどです。
最終的に、アプリケーション開発をやりたいのであれば、サーバーサイドの開発も経験するべきなので、Pythonの学習をお勧めしています。
案件数的には、PHPやRubyも多いので、こちらでもOKです。
この段階では Javaをお勧めしていません。
サーバーサイド側の言語でも、動的型付け言語、静的型付け言語の2種類あり、Python,PHP,Rubyは前者、JavaやGo言語、kotlinは、後者になります。
動的型付け言語でのサーバーサイド開発の方が、経験が少なくても案件に入りやすい傾向にあります。
※両者の違いについては、また別の機会に解説したいと思います
一年ほど動的型付け言語の開発経験を積めれば、静的型付け言語の開発案件にも入れると思うので、JavaよりもPythonを先に学んだほうが合理的です。
さらにスキルアップ
Pythonを学んだ後は、Webフレームワーク、PostgreSQL(DB)、Linux、Networkについても学びましょう。
Djangoであれば、データベースではPostgreSQLでの開発がしやすいので、PostgreSQLを推しています。
Linuxは、Web系の開発案件なら必ずといっていいほど使用されるOSなので、基本コマンドとVimの使い方くらいは学習しておきましょう。また、LPICを学習すると基本的な知識は習得できます。
Networkは、Webフレームワークを学習すると、TCP/IPなどのネットワーク知識が求められるようになるので、基本は抑えておいたほうがいいでしょう。CCNAを学習すると基本的な知識は習得できます。
更に余裕があれば、Dockerを学ぶのもいいです。Dockerは、アプリケーションが動作する環境をコード化することができるツールで、Web系開発案件で徐々に使用されるようになってきました。
アプリケーション開発からインフラまでフルスタックに頑張りたい人は、Dockerを学ぶ価値は十分あります。
知識を経験に変える
ここまで積み上げてきたら、学習した知識を活かせる案件を全力で探してください。派遣でも可です^^
IT業界は学習経験よりも「実務経験」を求めてきます。
学んだだけで終わらせずに、学んだ知識を経験に変えられる仕事を探してください。そして、それらの知識を活かせる案件に参画できたら一年間、頑張ってください。
ハイレベルエンジニアへ
私は、現在はGo言語とAWSを学習しています。
技術力身につけ、高い給料をもらえる「最先端の開発案件」に参画したいからです。
現在、モダンな開発を行っている企業様は、「AWS」や「Go言語」を採用している企業が多いです。メルカリやDeNAなどそうですね^^
また、Go言語は、Googleの開発した静的型付け言語であり、DockerもGo言語で作られています。APIサーバーの開発にもよく使用されているので、AWSとの相性も抜群のはずです。
最後にKotlinですが、これはAndoridの開発に用いられる言語です。Andorid開発には、Javaがよく用いられたそうですが、GoogleがAndoridの開発言語にKotlinの採用を決めたことで、シェアが広がっています。
Javaの案件数に比べれば、Kotlinの案件数は非常に少ないのですが、「モダンな環境での開発」を行いたいのであれば、Kotlinの学習をお勧めします。
Javaの案件数は確かに多いのですが、レガシーシステムの運用保守、機能追加、などの案件もあったりしますので、経験が詰めるかどうかは、正直運任せです^^;
おわりに
学習マップについては、参考程度にしておいてください。
キャリアを決めるのは皆様自身ですが、キャリア形成の手助けになれたらうれしいです^^
頑張って充実した毎日を過ごしましょう!

コメントを残す
コメントを投稿するにはログインしてください。