文系新卒Webエンジニアが入社2ヶ月で必要だと感じたこの先生きのこるための勉強

 

新卒社会人の皆さん、息してますか?

早いもので4月に入社してからもう1ヶ月以上が過ぎましたね。

私は文系学部からIT業界を目指し就活するも失敗し、留年して2回目の就活でWeb系企業から無事内定を貰い、現在社内のシステムを改修するいわゆるバックエンドエンジニアとして仕事をしています。

留年期間中にプログラミングを勉強したとはいえ、同期は理系ばかり、業務も教科書でやったこととはだいぶ違います。

そんな環境の中でもがくうちに少しずつ今後の方向性が分かってきました。

内定獲得後インターンとして働いていたので実際に働いている期間はもっと長いですが、入社約2ヶ月で感じた今後私が生き残るために勉強しなければならないと感じたことを備忘録的に残しておこうと思います。

 

優先して取り組むべきこと
IT業界にはすごい人が多く、こんな風にバックエンドエンジニアのためのロードマップを作ってしまう人もいるのです。
 
 
 
明確にキャリアが示されなおかつ世界中の人々に共有される、なんてことはIT業界特有ではないでしょうか?
せっかく素晴らしいものがあるので、これに則って今後のステップアップを考えていこうと思います。
 
2018年の最先端バックエンドエンジニアになろう - Qiita
( / (

・Linux(LPIC取得)

バックエンドエンジニアはPHPなどのサーバーに命令を送るプログラミング言語を使ってシステムを作ります。
そしてそのサーバーはLinuxというOSで動いていることが多いです。
つまり、PHPを使ってシステムを作ることになった場合、PHPを動かすためにLinuxに触れることも多くなります。

バックエンドエンジニアは別名サーバーサイドエンジニアと言う(厳密に言うと別物らしいですが)くらいなので、Linuxの知識は働く上で大前提でありロードマップにも記載されていません。

 

LinuxはWindowsのようなOSとは異なり、文字だけの画面(CUI)にコマンドを打ち込むことで操作します。

そのため、コマンドの使用法や独特なテキスト編集方法など、専門知識が必要となります。

PHPが動く環境を構築するために後述するdockerを使用したり、ライブラリ(便利な機能をパッケージ化したもの)をインストールしたりするのにもこのLinuxコマンドを使います。

まさに最優先で勉強する必要があるモノと言えるでしょう。

Linuxにはその知識を証明するための資格があり、LPICと呼ばれるものが世界標準となっているのでこの資格の取得が目下の目標です。

 

・Docker

せっかく作ったシステムもそれを動かす環境がなければ実際の動作も確認できずバグを発見することも出来ません。
そこでDockerというソフトウェアを使うことによって簡単に、しかも従来の環境よりも高速で動かすことができるのです。

Dockerについては下記のページで分かりやすく解説されています。

Docker入門(第一回)~Dockerとは何か、何が良いのか~ | さくらのナレッジ
みなさん、こんにちは。Acroquest Technology (アクロクエストテクノロジー) の横山 仁(よこやま じん)と申します。 主に仕事ではインフラ関係やDevOps推進に向けた活動などに携わっています。最近では、今回の記事の内容でもあるDocker(ドッカー)を使うこともかなり増えてきて、他にもAnsibl...

現在多くの企業でDockerが採用されており、私の会社もそのうちの一つです。
ロードマップ上ではStep19で学ぶことになっていますが、実務に直結するので学習の優先度は高いでしょう。

また、ここでもLinuxの知識が非常に重要になってきます。

 

・MVC、フレームワーク

プログラミング言語の勉強をしても、それだけでは実際の現場では足りないです。

チームでシステム開発をする時は言語を使って0から作り上げていくのではなく、開発に必要な機能が初めから揃っているフレームワーク(枠組み)というものを使用します。

そしてWeb開発で使われるフレームワークにはMVCモデルという概念が採用されています。

MVCモデルとはModel(M)、View(V)、Controller(C)の3つに機能を分けて可読性を上げ、作業の分担も容易にするというものです。

Modelはデータベースに接続してデータをやり取りする機能、Viewはクライアント側の機能、ControllerはModelとViewの橋渡し…とここで素人の説明をするよりもググれば分かりやすいページが出てくるので、詳しく知りたい方はそちらでお願いします。

私もこれまではピュアPHPを書くことが多かったのですが、徐々にフレームワークを使った案件が増え始めたのでMVCを理解し、フレームワークの使い方を覚える必要に迫られています。

 

・英語

もはや言わずもがなですが、今後さらにステップアップしていくためには英語は必須です。

プログラミングはエラーとの戦いです。
最初から完璧なものは作れないので、何か機能を実装しようとすれば必ずと言っていいほどエラーが出現します。

↑こんな風にどこがおかしいのか丁寧に教えてくれますが全て英文です。

また、分からないことがあったときにはもちろんググることが必要ですが、欲しい情報が英語であることもままあります。

日本でメジャーなQ&AサイトのQiitateratailに答えがあれば良いのですが、場合によってはstackoverflowを見る必要があったり使っている技術の公式マニュアルが日本語訳されてなかったりといったことがあります。

よって、抵抗なく英文を読めるReadingの力が必要になってきます。

TOEICで800点くらいは早く取りたいですね。(現在630点…)

 

・AWS

Amazon Web Services、Amazonが提供する超有名な世界最大のクラウドサービスです。

社内のサーバーやらなにやらがクラウド化している現代において、WebエンジニアにとってこのAWSは避けては通れないものです。

Web上でやりたいことはAWSを使えばなんでもできるはずです。
機能が多すぎてAWS認定ソリューションアーキテクトなる専門の資格までできるほどです。

AWSについては何も知らないので全然語れないのですが、必要性だけはひしひしと感じます。
社内でも遠回しに勉強しておくように言われています。

なので、上記の資格をとる必要があるなぁ…と思っています。
あとは実際に使って見る必要もありますね。

 

優先度は高くないが、やるべきこと

・関数型言語

プログラミング言語にもカテゴリーがあり、例えば私がメインで使っているPHPはスクリプト言語と呼ばれています。

一つのカテゴリーの言語しか触っていないと、その言語が使えない案件が出てきたときに何もできなくなくなってしまいます。

生き残るためには選択肢を増やす必要があります。
そこで、ロードマップ上の一番最初の言語選択にあるFunctional Languagesのうちどれかは今後触れないといけないなと思っています。(Scalaはよく聞きますね)

 

・C言語

プログラミング言語といえば真っ先に名前が挙がるでしょう。

PHPは自由度が高くて感覚的にコードを書いても動いてしまうのですが、C言語は制約が多く、きちんとコンピューターの仕組みを把握してないと書けない…らしいです。
(触れたことがないので真相は分からないです…)

そのため、エンジニアとしてスキルアップするならC言語を勉強してきちんとしたコードを他言語でも書けるようになる必要があるのかなと思います。

 

その他にもJavaScript等のフロント側の知識とか、数学とか、基本情報技術者試験とか、必要そうな知識はまだまだあるのですが、とりあえず上記のことを勉強すれば生き残れそうな感じはあります。

同じように文系からIT業界にきた人たち、一緒に頑張りましょうね。

 

コメント