プログラミング未経験者がWeb系へ就職するためのスキルを最短でGETする方法
こんにちは、元独立系SIer【 Fグループ 】で働いていたYaemonです。
これからプログラミングの勉強を始める未経験者の中には、
などと不安な方もいらっしゃるかと多います。管理人もプログラミング未経験からプログラミングの勉強を始めるときは不安で一杯だったことを今でも覚えています。
そこで、このページでは、
▶ Web系プログラマーに就職・転職を考えているが、プログラミング未経験でアピールできる実績がない人
に向けて、
▶ プログラミング未経験者がWeb系プログラマーに就職・転職するための知識を最短でGETする方法
について、フリーランスエンジニアとして働いている管理人が徹底解説をします。
プログラミング未経験者がWeb系へ就職するためのスキルを最短でGETする方法
結論から話すと、オススメする方法は以下の2通りです。
・プログラミングスクールを利用する 期間:2ヶ月(無料)
⇒プログラミングスクールは以下の2点からオススメです。
・モチベーションを保つことができる。
・効率的に勉強ができる。
既卒で時間がある方はエンジニアカレッジ 、社会人の方はCodeCamp がオススメです。
・独学でアプリを作る 期間:2〜3ヶ月
−N予備校のプログラミングコース 期間:1ヶ月(無料)
−アプリを自作する 期間:1〜2ヶ月
これらの方法をオススメする理由を伝えていきます。
プログラミングスクールを利用する
プログラミングスクールを利用するメリットは3点です。
▶モチベーションを保つことができる
▶初心者がつまずくところをサポートしてもらえる・挫折しない
▶効率的に勉強ができる
習慣化させてモチベーションを保つことができる
N予備校やProgateを利用して独学でアプリを開発をしていくときは、モチベーションを保つのが難しいです。壁に突き当たってやる気がなくなって挫折してしまう可能性が極めて高いです。というのも、習慣化できない作業は継続が難しいですよね。
プログラミングスクールは決まった時間の学習と、一緒に勉強する仲間がいたりするので、モチベーションを保てずに挫折することがなくなります。毎週ジャンプのワンピースを読むのは簡単なように、習慣化させると勉強が楽になります。
初心者がつまずくところをサポートしてもらえる・挫折しない
プログラミングスクールを利用するメリットは初心者が挫折してしまうポイントでサポートがある点です。例えば、プログラミング初心者はオブジェクト指向の考え方で必ずつまずきます。プログラミングスクールでは初心者がつまずくところを徹底的にサポートしてもえます。利用できるものはとことん利用したほうがよいです。
プログラミングスクールは効率的に勉強ができる
次にプログラミングスクールのメリットは効率的に勉強ができる点です。プログラミングスクールに行くからには、早くお金を稼ぎたいですよね?プログラミングの勉強ではつまずくと先へ進めず時間をムダにしてしまうことが多いですが、プログラミングスクールは最短で成果を上げる方法を提供します。
シチュエーション別・オススメのプログラミングスクールについて
エンジニアカレッジ(既卒・フリーター対象)
管理人のオススメのプログラミングスクールは、完全無料でプログラミング研修と就活サポートを受けられるエンジニアカレッジ です。対象は、既卒・フリーターの方が対象です。
受講期間は2ヶ月を1つのスパンとして受講期間が設定され、以降は就職先を斡旋してもらえます。ここは、提携企業からの援助があるため、完全無料でプログラミングの研修と就職支援を受けることができます。
ここのサービスの凄い所は、カリキュラムが本格的な点です。Linux研修コースとJava研修コースの2つがあり、有料でも行く価値があると感じています。特にオススメはJava研修コースです。
というのも、このJavaを学ぶときに、クラス、インスタンス、オブジェクトなどの未経験者が一番はまりやすいプログラミングのオブジェクト指向の概念を学ぶことができ、未経験者がつまずくところを徹底的にフォローしてもらえます。この未経験者が一番ハマりやすいところを教えてもらえるというのは羨ましいです。もうちょっと苦労してもよいのではないかと思いますが。
Javaは独学だとしんどくて挫折するので初心者には不向きだが、集中して教えてもらえるのであれば、初心者でも全然取り組めるプログラミング言語といえます。
管理人がJavaで開発をしていた話をすると、社内SE時代に、Java + Struts(フレームワーク)でシステム開発をしたが、Javaができると、他のC#、.NET、Ruby、JavaScript、Objective-Cなどオブジェクト指向の言語を扱えるようになります。
また、サイバーの子会社で働いていた友人の話ですが、Java + StrutsのWEBアプリを開発していたため、Javaができるようになると、業務系、WEB系どちらでも将来仕事につけるようになります。更に、研修の中には、JUnitを用いたテストツールの使い方もカリキュラムにあるため、本格的なスキルを身につけることができます。
一方、Linux研修コースでは、サーバーの構築作業をメインで学習します。Linuxサーバーでの構築作業ができると、サーバーの構築作業であったり、ネットワーク関連の作業に携わることができる。どちらかというと、SIer関連の案件が多いイメージですね。
一緒に講義を受講する仲間
このエンジニアカレッジの研修は、Skype研修であれば1人となるが、周りに一緒に勉強する仲間がいるため、それだけでも挫折するリスクが減るため、達成しやすいです。マラソンも1人でやるより、周りで人が走っている状況だと自分も走れるのと同じですね。
また、この下積み時代にできた友だちは将来も同じ業界で働く、刺激し合える良い関係を気づけるのも特徴です。これから未経験者が新しい道を進んでいくときに、1人だと辛いですよね。一緒にがんばる仲間がいると心強いです。
CodeCamp(社会人向け)
先ほど伝えたエンジニアカレッジは、フリーターや既卒向けのため、すでに働いている人を対象としていないです。そのため、働いている人を対象にしたプログラミングスクールでオススメするのはオンラインプログラミングスクールのCodeCamp です。効率的に成果を出すために、プログラミングの授業をリモートで受けることができます。プログラミング言語はJava、PHP、Swiftなど様々な言語を学べます。
オンラインプログラミングスクールを検討している人は、管理人がオンラインプログラミングスクールを利用してiPhoneアプリを作成した体験記事を確認して、雰囲気をつかんでもらえたらなと思います。
未経験者が挫折するもう一つの理由
超重要な点を話すと、未経験者が挫折してしまうのは適切な課題を設定できないからです。初心者は本を読んで例題をこなすだけだと中々実力がつかないです。一方、プログラマーのアルバイトに行くとレベルが高すぎることを要求されてしまい、挫折してしまうこともあります。
プログラミングスクールであれば、自分のレベルの少し上の課題が常に設定されていくので、スキルが身につきやすく、またフォローもあるのでやり遂げることができる環境は整っています。
プログラミングスクールでの学び方
最後に、ここまで読んでもらった読者さんに向けて、効率的なプログラミングスクールの使い方を伝えておきます。
プログラミングで何か作業をしていると常につまずきます。そのときに、トラブルが起こった原因と対策について考える癖を身につけることがめちゃくちゃ大事です。単純に分からないから聞くのではなく、自分で解決する努力を常に続けていくことを心がけてください。
更に超具体的なアドバイスをすると、エラーコードが出てきたときは、そのエラーコードをググるだけでも相当変わります。大抵エラーコードでググると、はてなブログの技術記事やQiitaで対応方法がまとめられています。
エンジニアカレッジ やCodeCamp では、無料相談や無料の体験講義があるため、雰囲気を知るために受けてみることをオススメします。エンジニアカレッジは遠隔地でもSkype講義で対応しているようです。
N予備校のプログラミングコースを利用して独学でアプリを作る
N予備校のプログラミングコースとは
N予備校(プログラミングコース)とは、プログラミング未経験の生徒をWeb系エンジニアとして、就職させるために作られたプログラムです。講師はドワンゴのエンジニアたちが担当しています。
このサービスは基礎的なところから応用部分まで初心者を対象にわかりやすく説明しています。この講座はプログラミングで何かを作るということだけではなく、就職後にも必要なGitの概念、Linuxの環境構築、セキュリティの知識までみっちり講座があります。
優秀な講師陣
また、講師陣も優秀な方達ばかりです。1人知人がいたので、紹介します。*ステマではないです。
コース一覧の中にある「高橋直大の競技プログラミング入門」という公開授業がありました。
高橋直大さんは、競技プログラミング業界でとても有名な方で、もともと中学時代に数学オリンピックに出場していた天才ですね。
彼の実績で印象に残っている逸話は、プログラミングコンテストの賞金で生活していたり、NASAが主催するプログラミングコンテストで、入賞を果たし、宇宙へ物資を効率よく運ぶプログラムが実際にNASAの打ち上げロケットに自身の書いたコードが含まれました。
管理人がアルゴリズムやプログラミングを学習していた時に、彼の講義を聞きにいくために、東京大学に行ったことがあります。彼にキャッチコピーをつけるとすれば、「競技プログラマー界の悟空」ですね。純粋にアルゴリズムを探求していた彼の姿は、見ていてワクワクしました。
話がそれましたが、そういった力のある講師がN予備校にはたくさんいるため、効率的にWebエンジニアとして必要な能力を高めることができます。初月無料なので、無料の間に必要なところを学んでいってほしいです。
▶︎コース一覧(抜粋)
N予備校プログラミングコースのカリキュラム
学べるカリキュラムは以下の通りです。後ろの方に行くとより実践的になります。特に、Gitに関しての話はWeb系にとっては鬼門だと思うが、そこの講座も抑えてあります。これからコースが増えてくることを考えると、他のプログラミングスクールは戦々恐々ですね。
Webプログラミング入門コース
Web ブラウザとは (Chrome, デベロッパーコンソール, alert)
はじめてのHTML (VSCode, HTML, Emmet)
さまざまなHTMLタグ (h, p, a, img, ul, tableタグ)
HTMLで作る自己紹介ページ (HTMLタグ組み合わせ, コンテンツ埋め込み)
はじめてのJavaScript (JS, ES6, エラー)
JavaScriptでの計算 (値, 算術演算子, 変数, 代入)
JavaScriptで論理を扱う (論理値, 論理積, 論理和, 否定, 比較演算子, if)
JavaScriptのループ (ループ, for)
JavaScriptのコレクション (コレクション, 配列, 添字, undefined)
JavaScriptの関数 (関数, 関数宣言, 引数, 戻り値, 関数呼び出し, 再帰)
JavaScriptのオブジェクト (オブジェクト, モデリング, プロパティ, 要件定義)
はじめてのCSS (CSS, セレクタ, background-color, border)
CSSを使ったプログラミング (transform, id, class)
Webページの企画とデザイン (企画, 要件定義, モックアップ, 16進数カラーコード)
診断機能の開発 (const, let, JSDoc, インタフェース, 正規表現, テストコード)
診断機能の組込み (div, 無名関数, アロー関数, ガード句, truthy, falsy)
ツイート機能の開発 (リバースエンジニアリング, URI, URL, URIエンコード)
Linux開発環境構築コース
LinuxというOS (VirtualBox, Vagrant, Ubuntuのインストール, OS, CUIの大切さ)
コンピューターの構成要素 (ノイマン型コンピューター, プロセス, lshw, man, ps, dfの使い方)
ファイル操作 (pwd, ls, cd, mkdir, rm, cp, mv, find, ホストマシンとの共有ディレクトリ)
標準出力 (標準入力、標準出力、標準エラー出力、パイプ、grep)
vi (vimtutor)
シェルプログラミング (シバン, echo, read, 変数, if)
通信とネットワーク (パケット, tcpdump, IPアドレス, TCP, ルーター, ping)
サーバーとクライアント (tmux, nc, telnet)
HTTP通信 (http, https, DNS, hostsファイル, ポートフォワーディング)
通信をするボットの開発 (cron, ログ収集)
GitHubでウェブサイトの公開 (GitHub, リポジトリ, fork, commit, 情報モラル)
イシュー管理とWikiによるドキュメント作成 (Issues, Wiki)
GitとGitHubと連携 (git, ssh, clone, pull)
GitHubへのpush (init, add, status, インデックス, commit, push, tag)
Gitのブランチ (branch, checkout, merge, gh-pages)
ソーシャルコーディング (コンフリクト、プルリクエスト)
Webアプリ基礎コース
Node.js (Node.js, nodebrew, Linux, REPL, コマンドライン引数, プルリク課題)
集計処理を行うプログラム (集計, 人口動態CSV, Stream, for-of, 連想配列Map, map関数)
アルゴリズムの改善 (アルゴリズム, フィボナッチ数列, 再帰, time, プロファイル, nodegrind, O記法, メモ化)
ライブラリ (ライブラリ, パッケージマネージャー, npm)
Slackのボット開発 (slack, mention, bot)
HubotとSlackアダプタ (hubot, yo)
モジュール化された処理 CRUD, オブジェクトライフサイクル, filter)
ボットインタフェースとの連携 (モジュールのつなぎ込み, trim, join)
同期I/Oと非同期I/O (同期I/O, 非同期I/O, ブロッキング)
例外処理 (try, catch, finally, throw)
HTTPサーバー (Web, TCPとUDP, Webサーバーの仕組み, Node.jsのイベントループ, リスナー)
ログ (ログ, ログレベル)
HTTPのメソッド (メソッド, GET, POST, PUT, DELETE, CRUDとの対応)
HTMLのフォーム (フォームの仕組み, form, input)
テンプレートエンジン (テンプレートエンジン, jade)
HerokuでWebサービスを公開 (Webサービスの公開, heroku, dyno, toolbelt, login, create, logs)
認証で利用者を制限する (認証, Basic認証, Authorizationヘッダ, ステータスコード)
Cookie を使った秘密の匿名掲示板 (Cookie, Set-Cookie, expire)
UI、URI、モジュールの設計 (モジュール設計, フォームのメソッド制限, リダイレクト, 302)
フォームによる投稿機能の実装 (モジュール性, textarea, 303)
認証された投稿の一覧表示機能 (パスワードの平文管理の問題, 404, テンプレートのeach-in)
データベースへの保存機能の実装 (データベース, PostgreSQL, 主キー)
トラッキングCookieの実装 (トラッキング Cookie, IDの偽装, Cookie の削除)
削除機能の実装 (データベースを利用した削除処理, 認可, サーバーサイドでの認可)
管理者機能の実装 (Web サービスの管理責任, 管理者機能の重要性)
デザインの改善 (Bootstrap, レスポンシブデザイン, セキュリティの問題があるサイトを公開しない)
脆弱性 (脆弱性, 脆弱性で生まれる損失, 個人情報保護法, OS コマンド・インジェクション)
XSS脆弱性の対策 (XSS, 適切なエスケープ処理, リグレッション)
パスワードの脆弱性の対策(ハッシュ関数, メッセージダイジェスト, 不正アクセス禁止法, パスワードジェネレーター, 辞書攻撃)
セッション固定化攻撃脆弱性の対策 (セッション, セッション固定化攻撃, ハッシュ値による正当性チェック)
より強固なセッション管理 (推測しづらいセッション識別子, 秘密鍵)
CSRF脆弱性の対策 (CSRF, ワンタイムトークン)安全なHerokuへの公開 (脆弱性に対する考え方, HTTPの廃止)
Webアプリ応用コース
Webフレームワーク (Express.js, フレームワーク導入, 簡単なAPI, セキュリティアップデート, Cookie パーサー, ミドルウェア, 外部認証, ロガー)
ExpressのAPI (app, Properties, Request, Response, Router)
GitHubを使った外部認証 (Passport, OAuth)
テスティングフレームワーク (Mocha, レッド, グリーン, リファクタリング)
継続的インテグレーション (CircleCI)
クライアントのフレームワーク (Webpack, Chrome 以外のブラウザでもES6)
DOM操作のフレームワーク (jQuery, jQueryアニメーション, this)
AJAX (jQuery.ajax, クロスドメイン, 同一生成元ポリシー, x-requested-by, CORS)
WebSocket (WebSocket, WebSocketの状態遷移, Socket.io)
RDBとSQL (DDL, DCL, CREATE, DROP, INSERT, DELETE, UPDATE, WHERE)
データモデリング (リレーショナルモデル, 正規化)
テーブルの結合 (外部結合, 内部結合, 片側外部結合, JOIN ON)
インデックス (インデックス, 複合インデックス, Bツリー)
集計とソート (SUM, COUNT, ORDER BY, GROUP BY)
「予定調整くん」の設計 (要件定義、用語集、データモデル、URL設計、モジュール設計、MVC)
認証とRouterモジュールの実装 (Mocha, supertest, passport-stub, モックテスト)
予定とユーザーの保存 (セキュリティ要件, UUID, 複合主キー)
予定とユーザーの一覧の表示 (非同期処理, Promise, then)
出欠とコメントの表示 (入れ子の連想配列, Promise.all, 子どもからデータを消す)
出欠とコメントの更新 (Promiseチェイン, リファクタリング)
予定の編集と削除 (要件の衝突, 関数の再利用)
デザインの改善 (this, グローバルオブジェクト)
セキュリティ対策と公開 (X-Frame-Options, Herokuの環境変数
N予備校のメリット・デメリット
N予備校のメリット
上部のカリキュラムを見て分かると思いますが、Web系の中でもコンテンツが非常に充実していることです。未経験者でも、初級〜中級までのプログラミングスキルを短期間で習得することができます。
また、講師が未経験者に向けて、丁寧に説明しているため初心者にわかりやすいです。不明点がでてきても質問をすることができるため安心してサービスを利用できます。
N予備校のデメリット
デメリットは通信教育にありがちな、1人で作業をしないといけない点です。マンツーマンで教えてもらうことができないため、モチベーション管理が非常に難しいです。例えば、通信教育の弊害は、質問できる環境があっても、文章にして質問しにくいですよね?
例えば、子供のときに進研ゼミで赤ペン先生に質問できるサービスがありましたが、めんどくさくて質問できないことがありますよね?ですので、どこかでつまずいてしまうと未経験者は諦めてしまうリスクがあります。
WebアプリかiPhoneアプリを開発する
N予備校で基礎的なスキルを身につけたら、次は実践です。アプリを自作する理由は、エンジニアにとって必要な実績を残すためです。また、実際に作って開発の流れを把握するとスキルがあがります。
Web系に転職するときは熱意をアピールできないと厳しいし、仮に転職できたとしても、技術が身についていない状態だと業務は厳しいです。アプリの制作期間を1〜2ヶ月の間で設定して、まずは作り終えてほしいです。
この時、できれば面接で深く語れるように、初心者は以下のポイントを意識して作ると良いです。
- 計画
—>企画からマーケティングまで予定のスケジュールを立てること。
- マーケティング(企画)
—>どこをターゲットにどういうアプリを作るのか?
なぜそのアプリを作るのか?予定のDL数は?マーケティングは?
- 機能設計 / UI設計 / 実装
—>設計と実装をしていく。技術的に詰まる時は対策すること。
管理人は、Stack over flowで英語で質問していました。
- リリース
—>絶対死守。スケジュールの遅れが発生するとき、単純に遅らせるのではなく、
代替案がないか真剣に考えること。後々、自分の首を絞めることになる。
- マーケティング
—>まずは、友人にDLしてもらう、Twitterなど。
- 反省
—>予定のDL数やマーケティングの数値比較など。
この流れで最短2ヶ月でWeb系エンジニアに転職するためのスキルをGETすれば、どこかのWEB系企業に転職できるはずです。
仕事をしながらだときついですが、管理人も通ってきた道なので頑張ってほしいです。ちなみに管理人は、電卓アプリ(Objective-C)を働きながら1ヶ月で作成しました。毎日睡眠不足できつかったが、業務系の社内SEから転職したいと思って、必死にがんばりました。精神論は好きじゃないですが、ここまで来ると気合ですね。
だが、正直言うと、この方法は実績は作れるが、めちゃくちゃキツいです。モチベーションを個人で管理しないといけないからですね。未経験者がプログラミングを勉強する中で挫折をするのは、モチベーションを管理できないです。計画をしても、結局は失敗に終わる可能性が極めて高いです。モチベーションを管理できる人はN予備校で学習するのはアリですね。
まとめ
以上、プログラミング未経験者がWEB系へ就職するためのスキルをGETした話をしてきました。スキルをGETするには、プログラミングスクール、または、N予備校を利用することをオススメします。
プログラミングスクールは次の3つのメリットがあります。
▶モチベーションを保つことができる
▶初心者がつまずくところをサポートしてもらえる・挫折しない
▶効率的に勉強ができる
N予備校のメリットは次の2つのメリットがあります。
▶講座が充実している。
▶モチベーションを管理できる人にオススメ
また、このWEB系エンジニアへの転職を検討している人に向けて、転職エージェントの効率的な使い方を記載したので参考にしてみてください。
WEBエンジニアに転職するためのエージェントの効率的な使い方
WEBエンジニアへの転職活動は、帰宅後や休日がメインとなるので費やせる時間は限られていますので、短期集中で効率的に行いたいです。
早速ですが、評判の良い転職エージェントをまとめしたので参考にしてみてください。
IT業界専門(Web系・SIer)の転職エージェントは
▶レバテックキャリア
▶マイナビエージェント×IT ★オススメ
案件数が多く異業種転職もできる大手転職エージェントは、
▶マイナビエージェント(転職全般)
▶リクルートエージェント ★オススメ
▶DODAエージェントサービス
の順にオススメです。
初めはIT専門のエージェント1社と面談をして自身の市場価値と転職の流れを知ることが大事です。その後は、案件の多いエージェントで優良案件を探すことをオススメします。
また、エージェント毎の特徴を、以下のページにまとめていますので参考にしてみてください。