文系卒のプログラミング未経験者がエンジニアになる方法
文系卒のプログラミング未経験から、IT企業に就職して1年半でプロジェクトのサブリーダーにつきましたYsと言います。
これから就職や転職するといった方向けに、以下の事を書いていきたいと思います。
文系卒でプログラミング未経験だけどエンジニアになる(就職する)ための方法
プログラミング未経験の文系卒でもエンジニアになる方法
最初に結論を言ってしまいますが、エンジニアとしての成長する可能性を感じさせられる事が出来ればエンジニアになれる(就職できる)
漠然としているので、上記の言葉を砕いて、細かくします。
- 問題解決にどう打ち込めるのかどうか
- 勉強し続ける意欲があるのかどうか
- コミュニケーション能力があるのかどうか
問題解決にどう打ち込めるかのかどうか
エンジニアにおいては、問題解決にどうやって打ち込めるかどうかが結構決め手になってきます。
通常の会社員として働いていても、問題解決等は結構あると思いますが、エンジニアの問題解決はちょっと違います。
エンジニアが行うコーディング作業(プログラムを書く作業)のおいては、エラーの解決だったり、新規の機能だったりを作成したりすることがあります。
特に「エラーの解決」という問題解決に打ち込めるのかどうかは必須の能力です。
プログラムを書いていると、プログラムの処理を間違えていたりなど自分起因で起こる原因のことも多いですが、
使用している言語やサーバーのバージョンにより使用できないものだったりなどの外部起因でエラーが出ることが多々あります。
自分起因であれば、簡単に気づく事が出来ますが、外部起因のことだと調べないと解決することは不可能です。
プログラムに段々と慣れてきて何度かエラーにぶつかってきたりすると、エラーの調べ方だったり、なんとなくエラーの解決方法が分かってきます。
しかし、未経験などの慣れていない人だと、そもそもエラーの内容がよく分からなくて、そのまま解決方法が分からず、挫折してしまう人が結構います。
ここで差が出る
ここで今未経験者が現在求めれているのは、問題をすぐさまに解決する能力があるかどうかではなく、問題に対して解決をする熱意や、問題解決におけるアプローチ方法を模索する能力があるのかどうかのを示しています。
・エラーが起きたけど解決方法が分からないな
・ここのプログラムの処理の意味がよく分からない
・設定方法を間違えてしまったけど直し方が分からない
こういった状況を例に「あなたならこういった場合どうしますか?」という事を面接で聞かれる事があります。
この場合にどういった受け答えが理想的のか。
良い例 ・ある程度調べて理解できない場合、上司や同僚に聞きます 悪い例 ・1人で分かるまで考え続けます
この場合1番良くないのが「1人で考えてやり通します!」という思考。
1人で考える事自体は大事ですが、自分で考えすぎて身動きが取れなくなる場合が結構あります。
そのせいで全然仕事が進んでなかったり、上司の人がどの様にサポートしたら良いのかも分からなくなってしまいます。(IT業界あるあるなのですが、実は結構こういう人は多いです。)
そういった事にならないために、「上司や同僚の人を頼り、問題解決をする事ができるのか」が未経験の人にはよく聞く内容になります。
そのため、「人や質問サイトなどを頼り、問題解決に取り組みます。」という答えが理想的です。
また、他の人と差別化を図るために、問題解決へのアプローチ方法を身につけておくとなお理想的です。
問題解決への理想的なアプローチ方法
上記で「ある程度調べて分からなければ上司に相談します」といった答えが理想的だと書きました。
では、具体的にどの様に調べて、上司には対してどの様に聞いたら良いのか
それは「分からない部分を明確化し、どの様に調べたのかをまとめる事」
具体的には以下の様に行います。
1. まずはエラー文や分からない部分を冒頭に持ってくる 例:〇〇というエラーが発生しています 2. 上記のエラーや分からない部分に対して、どの様な単語や調べ方をしたのかを箇条書きでまとめる 例:〇〇という単語で検索してみました 3. 自分の考えを軽く書いてみる 例:上記を調べた結果△△だと思う
僕は実際Evernoteというツールを使用して以下の様にまとめていました。
この画面を上司に見せて、アプローチ方法や仮説が合っているのかを答え合わせをします。
アプローチ方法や仮説が合っていれば、自分の考えは正しかったということで自信やスキルアップに繋がりますし、もし間違っていれば、上司から正しい知識を伝授してもらえます。
このような感じで、具体的に自分なりの問題解決をする形(上記のようなメモをする習慣)を作成しておくと、面接でも問題解決のアプローチ方法として有益な話が出来ると思います。
勉強し続ける意欲があるのかどうか
エンジニアに限りませんが、社会人になると毎日勉強ですよね。
エンジニアになると分かりますが、勉強し続ける事が必須の職業です。
普段使用している言語のバージョンアップだったり、使用したことのないプログラミング言語の案件だったり勉強しないと仕事が進まないといった事があります。
また、ユーザーの動向も変わってきますので、そのニーズに合わせた機能作成などもあります。
つまり、学び続けないと続ける事が難しい職業です。
面接等ではこういったことを含んで、「勉強し続けるやる気はありますか?」ということを聞いてきます。
この場合に、ただ「やる気があります!」と言葉で言うだけでは説得力に欠けます。
勉強していることをアピールする
自分はエンジニアとして働きたい!やる気はあります!という言葉に説得力を持たせるために勉強していることを実際にアピールしましょう。
具体的に自分が取り組んでいることを以下の様に伝えればOKです。
・基本情報技術者の資格を取得するために勉強しています(していた) ・自分で考えたWebサービスを開発しています
※ただし、上記の様な場合勉強しているという以下の様に証拠が必要です。
というのも「勉強をしている」という事をアピールした場合、面接官はその事を詳しく聞いてきます。その際に、嘘を付いていれば一発でバレます。
・基本情報技術者試験の資格を取得するために勉強をしています(していた) → 入社までには資格を習得している、ないしは既に持っている ・自分でWebサービスを開発している → PCやスマホからアクセスして見られる状態
個人的には資格のアピールはオススメしない
既に入社の前に持っていれば別ですが、これから資格を取得する人(面接をしている段階で持っていない場合)は、資格の勉強アピールはオススメしません。
IT系の資格にもよりますが、地味に難易度や受験料が高かったり、取得するための期間が長かったりなどマイナス面が大きいです。
民間企業が発行している資格に付いては数ヶ月毎に行なっている場合がありますが、基本情報技術者試験などの国家資格は年に2回しかありません。
たった年に数回しかないチャンスで挑むのはリスキーです。
どうしても資格の取得でアピールしたい場合
ITパスポートという資格を取得して勉強をしている事をアピールしましょう。
ITパスポートは基本情報技術者試験に比べて簡単な資格ですが、一応国家資格です。
この試験はほぼ毎月行われいて、受験料も5000円前後なので、手っ取り早く取得するにはもってこいの資格です。
資格の勉強しているという事であれば、この資格を取得して勉強をしているという事実を相手方に見せられる様にしましょう。
勉強している意欲を見せるのであれば実際に開発したものを見せた方がいい
開発という意欲を見せる場合は、上記のやり方が1番だと僕は思っています。
この場合、人に見せられる完成品が既にあるとかなりアピールポイントは高いですが、そうではない場合勉強をしているという証拠があればいいです。
自分のブログ、QiitaやないしはTwitterでも構わないです。就職用、発信専用のプライベートと切り分けたアカウントを作成して、自分の作成途中の作品のコードだったり、プログラムに関する事をSNSを通じて発信しましょう!
- プログラムの疑問点をTwiiterに発信する
- 自分が作成したプログラムをQiitaで発信する
これだけでも、勉強をする意欲があるというアピール材料になります。
最近、Twitterでは#ウェブカツ
や#100DaysOfCode
というハッシュタグを元に、エンジニアを目指している人たちが積極的に自分の作成しているものや、勉強している記録を発信しています。
この勉強をしている人たちと一緒に、勉強している記録を残しつつ、エンジニア界隈の人たちから有力な情報を得ることも出来るので是非やる事をオススメします。
初心者がやるオススメの勉強法は?
最近はオンライン学習が発達しているので、そちらから着手するのが良いと思います。
スマホアプリ系はまだまだ少ないですが、Web系の勉強法は沢山あります。
・Progate →HTML, CSS, jQuery, Rubyを学びWebサービスの開発を学ぶ ・ドットインストール →HTML, CSS, PHP, Laravelを学びWebサービスの開発を学ぶ ・Udemy →Swift, Javaを学びスマホアプリの開発を学ぶ
コミュニケーション能力があるのかどうか
社会人の就職技能として謎の能力「コミュニケーション能力」。この能力は一概に、人と仲良く出来る人のことを指している訳ではありません。
ここで言うコミュニーケーション能力があるかどうかの言葉の意味は以下のようなことを指しています。
・論理的に物事を説明できるのか? ・サービスについての考えを議論できるか?
論理的に物事を説明できるのか
ぶっちゃけ僕もこれに関しては出来ている確証はありませんが、エンジニアの人達は職業柄「物事を論理的に説明してもらわないと気が済まない」人がいます。
「なぜこういうコードを書いたのか?」「こういったデザインにしたのはなんで?」といった事が仕事中に多々あります。
その際に、「なんとなくです」という答えは納得されなくて、理由に基づいた論理的な説明が求められる事が多いです。
そのため、考えを明確化して説明できる人はエンジニア界隈ではものすごく重宝される存在になるのでこの能力は必須です。簡単な訓練としては、上記で書いてある「エラー内容の説明をする」といった内容を元に訓練するといいと思います。
サービスについての考えを議論できるか?
自社サービスを開発するエンジニア志望の人は面接で以下のような事を聞かれる事があります。
・弊社のサービスでどのような部分に興味を持ちましたか? ・競合他社のサービスと比べてどこが良いと思いますか?
このような質問には、「そもそも自社サービスに対して興味あるのか?」という事を意味するだけではなく、「サービスについて考え、意見を言えるのかどうか」を問われています。
自分が関わるかもしれないサービスに、興味がない人を会社としては入れたくありません。
その為、応募する会社が作成しているサービスを分析して、サービスについて意見を言う事を意識してください。
・あの画面の機能が使い易かったです。 ・あの画面においては、〇〇のような機能があった方がユーザーにとってより使いやすいと思います。
といった自分なりの意見を踏まえて意見を言うだけで印象がガラッと変わります。
サービスや開発に興味がある事をアピールしましょう!
まとめ
偉そうに書いてしまいましたが、大方の文系卒でプログラミング未経験であればこういった考え方を意識しているだけ就職率はめちゃくちゃ上がります。
問題解決方法などは実際慣れの部分も大きいと思うので、まずは興味を持ち行動している事。
そして、大切なのは、「勉強している、興味があるという事を証拠を持って相手にアピールする」ということ。上記ができれば、文系卒でもエンジニアになる事が可能です。
- 自分なりの問題解決方法を作成しておく
→課題と対処法プロセスは意識する - 勉強しているアピールを相手に提示する
→資格であればITパスポートが楽チン
→プログラミングの勉強で得た知識をSNSを通じて発信する - 論理的に物事を捉えて説明する
→上記の問題解決方法のメモなどを元に言語化する - サービスに興味を持ち、改善点等を自分の言葉でまとめる