副業でWebエンジニア志望の学生や社会人に講師をしていたときに、
受講生からよく聞かれた質問があります。

「プログラミングは、理系の人はすんなり覚えられるんですか?」
「エンジニアって、理系の人がやっぱり多いですか?」

わたしがハードやソフト両方を学んでいた理系出身だったということもあり、よく聞かれました。

それだけでなく、

「この前、プログラミングは難しいからやめておいたほうがいいんじゃない?って言われたんですよね」
「エンジニアは理系の人が多いから、文系には無理だって言われたことある」

とかそういったことも受講生から聞きました。

でも、それは全部勘違いで、無視していいですよ。

なので、今回はこれからプログラミングを学び、エンジニアになりたいという方

特に、
「エンジニアになりたいけど、文系だから無理なのかな…」
「プログラミングって難しそう…」
といった悩みを持った方向けに、

「プログラミングは理系とか文系関係ない、誰でもエンジニアにはなれる」
「エンジニアになるために必要な能力」

というテーマで書きたいと思います。

文系と理系どっちが有利とかはない

結論から言うと、誰でもプログラミングはできます。

わたしのエンジニア仲間をみても、理系と文系の比率は、文系の方が若干多いかなと。

理系以外だと、

  • 高卒で美容系出身
  • 文系大学出身で、銀行からの転職
  • 高卒でバンドマン出身でアラサーで転身
  • 現役バックパッカー
  • アパレル販売員で体を壊してアラサーで転身
  • 工場で働いていてアラサーで転身

と周りをざっと思い浮かべただけで、これだけいます。
学歴もあまり関係ないですね。

わたしも理系出身で、「計算機工学の基礎」「人工知能の基礎」「C言語」など、学んできましたが、
「PHP」や「Ruby」は授業では教えてもらえないので独学でしたし、
周りの友達見ても「プログラミング面白くない」「エンジニアにはなりたくない」という人もけっこういました。

なので、理系と文系どっちが有利とかはないです。断言します。

プログラミングは誰でもできるはずなんですが、ほとんどの人はそれに気づけていないです。

気づけていない人が多いから、

「この前、プログラミングは難しいからやめておいたほうがいいんじゃない?って親から言われたんですよね」
「エンジニアは理系の人が多いから、文系には無理だって言われたことある」

というような冒頭に話しましたことを言ってくる人がいるわけです。

自分には無理だと思ってあきらめるのは時期尚早で、
理系しかできないと思っている人が多いというのはチャンスでもあるということです。

エンジニアになるために、必要な能力

文系と理系関係なく、誰でもできる、なれる。
じゃあエンジニアになるには、どんな能力が必要なのか。

基本的には、下記5つくらいがあれば問題ないです。

5つの能力

  • 実行力(行動力)
  • 質問力(コミュニケーション能力)
  • 忍耐力(集中力)
  • 論理的思考力
  • 楽しめるかどうか(継続力)

ひとつずつ解説します。

実行力(行動力)

やりたいと思っていても、学び始めないとスタート地点には立てません。
ただ、学ぶだけでは足りないです。

ゲームを作りたいと思って、情報系の学部に進んでも作れるようにならないです。
普通の理系の大学では、ゲームの作り方は教えてくれないですからね。

当然ですが、本を読んでいるだけでもプログラミングは上達しません。
本を読んでいても面白くないので、続かないです。

  • 本やネットで基礎知識を吸収しつつ、コードを書く。
  • コードを書いては、少しアレンジする
  • 覚えたことをベースに、自分でなにか作ってみる

上記3つをやることが大切です。

日本語を話せるようになったのも、本を読んで学んだからではありません。
日本語を聞き、書いて、話して、気づいたら話せるようになったはずです。

学ぶのは当たり前で、コードを書いて、作る、という作業を続けられる人が、上達することができます

質問力(コミュニケーション能力)

プログラミング初心者にとって、つまる、壁にぶつかるというのは当たり前です。
同じ箇所で、一日中時間使って、悩むのは時間のムダです。

すでに周りにエンジニアがいるのであれば、聞いたほうが「数分、数秒」で解決できることが多いです。

エンジニアの中には、たしかにコミュ障はいます。

わたしはアラサーですが、人見知りですし、コミュニケーションにすごい長けているわけではありません。
なので、直接聞きづらいという気持ちもとても理解できます。

理解は出来ますが、聞きづらいという気持ちと、悩む時間を天びんにかけたら、質問したほうが合理的ですね。

最近だと、エンジニア専用の質問サイトなどもあるので、そういったサービスを利用するというのもアリです。
(最後にオススメの質問サイトを紹介しますので、ご参考ください。)

誰でも最初は初心者です。悩む時間を他に使いましょう。

自己解決能力(検索力)

先ほど質問力が大事とも言いましたが、
自分で解決する能力も大切です。

自分で解決できないから他人に聞くんでしょ?と言いたくなるかもしれませんが、
ネットで検索して解決できることのほうが多いです。

Googleでわからないことを検索すれば、
同じようなことに悩んだ人や、優秀なエンジニアが、解決する方法を無料で公開しています。

先人の知恵を生かすということも、重要な能力です。

フリーランスのエンジニアを目指すのであれば、会社と違って、まわりに先輩はいません。
自分で解決しなければいけません。

なので、「自己解決能力」を今から磨いていきましょう。

忍耐力(集中力)

プログラミングは、エラーばかり起こします。
ただ、エラーを起こしているのは自分の可能性がほとんどです。

スペルミス、たった一文字抜けるだけで、プログラムは動かなくなります。

そこでイライラしても、何も解決はしないので、
地道にバグを発見していくしかありません。

我慢ができるかどうか根気強くやれるかどうか、という「忍耐力」が大切です。

楽しめるかどうか

最後は、楽しめるかどうかですね。

最初は詰まることが多いですが、解決できたとき、なにか機能を実装できたときの達成感は気持ちいいものです。

作ることに楽しさを感じられれば、優秀なエンジニアになれる第一歩です。

苦痛なことを仕事にしてしまったら、つらいだけですからね。
学ぶことを楽しめる、作ることを楽しめれば、継続して技術を磨いていけるので、そういうエンジニアは強いです。

独学でもできるほど環境が整っている

最近はありがたいことにスクールに行かなくても、独学でも学べる環境が整っています。

基礎知識の学習

基礎知識を学ぶのであれば、下記3つですね。

インターンとかアルバイトで入ってもこの3つは推奨されると思います。

質問

エンジニア専用の質問サイトもご紹介します。

上記3つのどれか使えば、解決できることがほとんどです。

環境

初心者にとっては、環境構築の作業でつまってしまうことが多いです。
プログラミングを学習するための環境の準備の段階で、しんどくなってしまうのはもったいないです。

Cloud9は、面倒な環境構築もいらないので、使ってみる価値はあります。

情報収集

学習やなにかを作って学んでいるときには、日頃の情報収集も大事です。
下記3つを活用することをおすすめします。

まとめ

以上、「プログラミングは誰でもできるもので、誰でもエンジニアにはなれる理由」と「必要な能力」などをお話してまいりました。

まわりの「プログラミングは難しい」とか言葉は無視してください。

エンジニアは文系・理系・学歴が関係なく、誰でもなれますし、
効率的で自由に生きるためには、とてもコスパの良い職業です。

プログラミングスキルを身につけることで、自由な働き方ができます

わたしのまわりにも、文系出身エンジニアはたくさんいます。

  • 海外でバックパッカーしながら仕事
  • 家で子どもの面倒を見ながら仕事
  • エンジニアの仕事と他の仕事のかけもち
  • 自分の好きな場所に住んで仕事

というように自由な働き方を実践する人もたくさんいます。

こんなに自由な仕事、エンジニアくらいしかないと思います。

学んで、作って、継続して、優秀なエンジニアを目指していきましょう。