IT

【IT未経験 × 文系出身】元営業マンがWebエンジニアとして現場デビューするまでに勉強したこと全て

エンジニアに転職したい人
エンジニアに転職したい人
未経験だけど、伸びしろのあるIT業界にエンジニアとして転職したいな。でも、プログラミングをしっかり勉強したことなんてないし、ちゃんとやれるか自信がない…。実際にIT未経験の人が、どんな勉強をどれくらいやったか具体的に知りたいな。

こういった疑問にお答えします。

ざっくりこの記事の内容

・未経験でも「3〜6ヶ月」くらい勉強すれば仕事は出来る

・実際に僕が学習した事を時系列順に全公開

・「全てを理解するまで次に進めない」という考え方が挫折の原因。プログラミング学習のコツは「完璧主義」ではなく「完了主義」

僕はいまWebエンジニアとしてプログラミングをお仕事にしておりますが、IT業界に来る前はタッチタイピングすらまともに出来ませんでした。

今回は僕がWebエンジニアとして現場デビューするまでに独学で勉強した事を、時系列順に全てご紹介します。

基本的には学習したことを有りのまま書いていくので、本記事を参考に学習計画を建てると効率が良いかと聞かれると… 正直微妙ですね笑 効率よく学習するためのロードマップは、また別の記事でがっつり書きます。

ちょこちょこ解説を挟んだり、「今から勉強する人はこうするといいよ」的なTipsも入れていくので、一般的なPCスキルしか持っていない人間がエンジニアとして現場デビューするまでのリアルな道のりにご興味があれば、ぜひ最後までお付き合いください。

独学期間(3ヶ月)

会社員をしながら、土日や平日の夜の時間などを利用して学習をしました。エディタは最初AtomやTerapadを使っていて、最終的にEclipse(統合開発環境)に落ち着きました。

① HTML/CSS

学習時間 10時間程度
学習スタイル 参考書、Progate、dotinstal
難易度

最初の入り口はここでした。
フロントエンド、バックエンド問わず、Webエンジニアを目指すならまずはHTML/CSSをざっくり勉強するといいでしょう。

まずはdotinstalでさっと全体の内容のイメージを自分にインストールしてから、Progateなり市販の教科書なりで手を動かして学習をしました。

学習するバージョンは、その時にメジャーなものを選択しましょう。理由はもちろん、仕事で使うことになる可能性が高いからです。2018-06-09現在であれば、HTML5、CSS3でOKです。

CSSなどは特に深く学習しようとすると時間がかかるので、

① まずはdotinstalで感覚を少しでも掴む

② Progateや市販の教科書で手を動かす

こんな感じで、わからなくてもどんどん進めていくと良いです。10分悩んでわからない事があればGoogle検索、それでもわからなければ、とりあえずはスルーしておいて大丈夫です。

いきなり全部理解しようとして時間だけが過ぎていくのが一番まずいです。

HTML/CSSは言語の学習(Javascriptなど)でも必ず出てくるので、その時にまた悩みましょう。言語の勉強を進めていく中で、プログラミングの視野が広がってくるとHTML/CSSも理解しやすくなるというか恐れがなくなるというか、副次的に理解が深まっている事が多いです。

② 基本情報処理

学習時間 5時間程度
学習スタイル 参考書
難易度

HTML/CSSの次はこれ。

本当はJavaを学習したかったのですが… 1時間程度で挫折してしまいました。笑 わからない事が多すぎたのだと思います。プログラム的なことはもちろんですが、IT全般の知識がなさ過ぎました

ブログ管理人 yuu
ブログ管理人 yuu
ITのことを体系的にざっくり学べて、プログラミング学習にもなる勉強方法はないかな…

そんな想いで見つけたのが「基本情報技術者試験」という国家資格。「IT技術者の登竜門」と言われる事もあります。試験内容をいくつか挙げると、

・アルゴリズムとプログラミング

・コンピュータ/システム構成要素

・ネットワーク

・システム開発技術

まさにプログラミング初心者にはオススメな内容になっています。

僕もこのタイミングで、この内容を学べたことは後々の学習にとても活きました。実際に試験を受けなくても、この資格の教材をひと通りやることでエンジニアとして必要な土台が作れると思います。アルゴリズムとデータ構造なんかは特に、プログラミングにも直結する考え方です。

③ Java

学習時間 10時間程度
学習スタイル 参考書
難易度

PHPと迷ったのですがJavaを選択。理由は、ネットで「初心者 Java PHP 比較」みたいにググッた結果、僅かにJavaを推す記事が多いように見えたので。笑

結果、最初はJavaにして良かったと思っています。クセのないコーディング仕様なので、一度習得すれば他の言語に乗り換える時にも応用が利きます。

学習するバージョンは「Java8」かな。最新ではありませんが、メジャーな所を最初は学習すると良いです。

難易度が上がりますが、とりあえず市販の参考書で書いてある内容の理解が50%を超えたら充分過ぎるかなと思います。もしオブジェクト指向がこのタイミングで理解出来たら、きっとエンジニアに適性があります(僕は出来ませんでした)。

「とりあえず参考書を1周」を目標に頑張りましょう。

④ JSP/Servlet

学習時間 10時間程度
学習スタイル 参考書
項目名

Servletは若干古い技術ではあり、最近の新卒プログラマー研修なんかではやらなくなったりもしているのですが(うちの会社も昔は研修でServletを採用していましたが、今ではその時々に流行っているフレームワークに置き換わりました)、Javaで開発するならやっておいて損は全くないです。

それに、こういった少しトレンドから外れた技術に知見があると、返ってそれが武器になる事もあります。これからエンジニアを目指す人は多分やっていないので。

そして、ここでまたJavaの勉強が出来るので、Javaの理解も深めつつサーバーサイドのインプットをしていきましょう。

ちなみに、「アプレット」というセクションがあったら、それはオワコンなのでスルーでいいです。Servletと違い、アプレットはかなり高い確率で今後使われない技術なので、学習するのはコスパ悪いです。

⑤ DB/SQL

学習時間 5時間程度
学習スタイル 参考書
難易度

「MySQL」か「Postgresql」を勉強すると良いです。どちらも無料かつ高機能で、多くの現場で採用されるDBです。

この段階では勉強するDBはどちらでも良くて、SQLに慣れることを目標に頑張りましょう。

ちなみに僕はMySQLでした。

研修期間(2ヶ月)

独学で3ヶ月くらい学習をして「なんとなくJavaで開発をするイメージが掴めてきたかな」といった感触の段階で、内定を貰っていたIT企業の研修がスタートしました。会社オリジナルの教材(といっても市販のものと全然変わりません)を使って、講師が授業をしてくれるような形式でした。

ここからはざっくりいきます。

① Java

学習時間 50時間程度
学習スタイル 講義、ハンズオン
難易度

Javaの基本文法から難解なロジックテストまで学習しました。

ロジックを組む練習としては「FizzBuzz」などが有名です。Javaがある程度理解できるようになったら、是非ググってやってみてください。

② HTML/CSS

学習時間 10時間程度
学習スタイル 講義、ハンズオン
難易度

独学期間とほとんど同じ内容。

HTML/CSSは基本を理解して、あとはわからない事があった時にその都度ググって知識を太くしていくくらいでOKです。がっつり深くやる必要は(Webデザインをメインでやりたい人以外は)ないです。

③ SpringFramework

学習時間 150時間程度
学習スタイル 講義、ハンズオン
難易度

個人的には最大の鬼門でした。

フレームワークとはめちゃくちゃざっくりいうと「より効率的・合理的な開発をする為のツール」なのですが、Java言語だけでも数十の種類があり、フレームワークごとに思想や設計が違います。そして難しい。

SpringFrameworkはメジャーなフレームワークで、Javaがある程度出来るようになったら、独学で勉強している段階でもぜひ使ってみることをお勧めします。僕は理解するまで本当に時間がかかりました…。笑

最近はPlayFrameworkもモダンで勢いがあると思います。1つ理解できたら応用を効かせられるので、まずはどちらかビビッときた方をどうぞ。

④ DB / SQL

学習時間 25時間程度
学習スタイル 講義、ハンズオン
難易度

研修ではPostgresqlを使用しました。

DBというより、SQLが難しかったなと。巨大なWebシステムでは何百行ものSQL文を書く事もあります(個人的にはあまりイケてないDB設計をしたんだなとも思いますが)。

開発で必ず使うものなので、SQL文はかなり時間をかけていました。

⑤ JavaScript / JQuery

学習時間 15時間程度
学習スタイル 講義、ハンズオン
難易度

Javaが出来れば必ず出来ます。

ざっくりJavaScriptの理解が出来たらJQueryに移ってOKです。JQueryはJavascriptのフレームワークのようなものですが、素でJavascriptを使う事は多くありません。

⑥ Git

学習時間 10時間程度
学習スタイル 講義、ハンズオン
難易度

Gitとはバージョン管理システムです。

他にもSubversionやCVSなどがありますが、今から学習をするならGitで問題なしです。最低でもcommitとpushとpullは必ず理解しておく必要があります。

⑦ Linux

学習時間 15時間程度
学習スタイル 講義、ハンズオン
難易度

Linuxはどちらかというとインフラ・サーバーよりな内容で、大きな開発のプロジェクトでは専門のチームがいたりします。

が、開発チームでも現場でいじったりするので、最低限のコマンドは覚えておくと良いでしょう。

⑧ クラス図 / ユースケース図

学習時間 5時間程度
学習スタイル 講義
難易度

開発で一番大事な「設計」の段階で使われるドキュメントの事です。

こちらもエントリーのプログラマにはマストな知識ではないと思いますが、エンジニアの教養として一冊くらい読んでおくと良いです。

⑨ セキュリティ

学習時間 10時間程度
学習スタイル 講義
難易度

セキュリティは非常に奥が深く難しい所なのですが、最低限初心者でも「SQLインジェクション」「XSS」などの脆弱性攻撃とその対処法は知っておく必要があります。

⑩ ECサイト制作(チーム開発)

学習時間 60時間程度
学習スタイル チーム開発
難易度

上記で学んだことを活かし、仮想のECサイトをチームで0から作り上げました。やはり自分で考え、コーディングする事は何よりも勉強になるし楽しかったです。

待機期間(1ヶ月)

自分で好きな事を学習できる期間。色々つまみ食いしました。

とりあえず今まで挙げてきた項目を学習すれば、現場に出て「何も出来ない」なんて状況にはならないと思います。ここからはざっとキーワードだけ列挙します。

・ajax

・O/Rマッパー

・バッチ

・シェルスクリプト

・DI

・CI / CD

・Webソケット

・REST API

・NO SQL

・リーダブルコーディング

まとめ

まだまだ覚える事はありますが、取り敢えずここまでやれば、現場に出て開発をやっていける土台は作れるかなと思います。後は現場で必要となる知識をその都度吸収しつつ、自分が気になる技術やトレンドを勉強していきましょう。

上記内容(待機期間は除く)+ 現場で3ヶ月くらい仕事して、「初心者」から「初級エンジニア」になれると思います。

独学もめちゃくちゃ大事なのですが、やはり会社での研修や、何より現場で実際に大きなシステムを開発する中で爆発的にインプットが増えていくと感じます。

エンジニアは勉強した事がそのまま自分の資産になりますし、出来なかったことが出来るようになるのは嬉しいですよ。

まだまだ書き足りない事があるのですが、今回はとりあえずここまで。後日追記します!