文系の大学進んだけど、「IT系に興味あるなぁ」「Webサイト作ったりとかカッコいいなぁ」「でも難しいんだろうなぁ」とか考えている学生さん、
興味あるならぜひエンジニアやりませんか?
最初にこの記事の結論を言いますと、文系卒でも、今の事前知識0でも問題なくエンジニアできます!(これから少しの勉強は必要ですが)
なので臆せず面接に行ってください!
この記事は、文系卒でソフトウェア知識0だけどエンジニアやりたいよーっていう方の背中を後押しするものです。
あ、これはソフトウェアエンジニアの話です。ハードエンジニアはすみませんが多分ムリです。メカとか回路とか電圧とか事前知識0だと無理ゲー感あります。理由は後述します。
目次
文系卒でもソフトウェアエンジニアになれる理由
理由は簡単です。ソフトウェアエンジニアに必要なものは、「論理的思考力」と「調べる力」だけだからです。
「え、プログラミング言語は?」とお思いの方、
プログラミング言語は1ヶ月あればなんとでもなります
え、まじ・・・?
まぁまずはこれを読んでください。
【ホリエモンチャンネルVol.1】プログラミングをこの時代に一から学ぶなら | TechAcademyマガジン
これは堀江氏の言うとおりで、昔はプログラミング言語の習得は確かに難しかったんです。
しかし今はどうでしょう。PC1台あれば動画やアニメーションでこと丁寧に教えてくれます。分からないところはググればほぼ100%答えが見つかります。
めちゃくちゃ学習の敷居と難度が下がっているんです。
なので、Progateやドットインストール、Udemyなんかを利用すれば手軽に易しく新卒レベルのプログラミング言語の習得が可能です。
むしろ、Progateやっておけば理系卒以上のプログラミングスキルが身に付いているでしょうね。
Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]
あと、冒頭でハードエンジニアになるのは難しいと言った理由がこれです。ソフトウェアエンジニアはPCさえあればいくらでも勉強して、触って動作確認が可能ですが、ハードエンジニアの場合はまず触るためのメカが準備できません。なので、勉強しても机上の空論で終わる可能性が高くて、そして勉強しても触って動かせないのでモチベーションも維持しにくいんです・・・。
よって、ソフトウェアエンジニアは恵まれた環境下にあることをおわかりいただけたかと思います。
論理的思考力が必要な理由
先ほど述べましたとおり、プログラミングをすること自体は難しくありません。
プログラミング言語には決まった文法やデータ構造がありますので、その通りに記載すれば動くのです。
しかし、その文法やデータ構造を記載するうえで必要不可欠なものが論理的思考です。
「物事の筋道を立てて、論理的に考える」
プログラミングの世界では、
- コンピューターが正しく理解でき
- 明確であり、曖昧さが無く
- 筋道が順序だっている
ように記載する必要があります。
記載するうえで特に以下の3つが重要です。
・順序
・繰り返し
・条件分岐
これらを意識してプログラムを組むことになります。
少々乱暴な言い方をすると、書き方なんて重要ではないです。文法は調べれば出てきます。それより重要なのは、上記のように要件からどうやって曖昧さがない要素に分解するか、その要素がどのような順序で処理されればよいか?漏れや抜けなく全ての要素の関係性が網羅されているかなどを考える力のほうが重要です。
この力は理系のほうが強いとかはありません。文系理系関係ないので、ここを強化して他の人と差を付けてください。
論理的思考力の鍛え方は仕事での実践が一番効果的なのですが、学生の間は難しいと思うので、まずは書籍で勉強してみてくださいね。
オススメできる分野・できない分野
とは言っても、やりやすい・やりにくいはあるんでしょ?と疑問が出てくると思います。
確かにやりやすい・やりにくいはあります。
比較的やりやすい分野
Webサイト開発や、Webアプリ・スマホアプリ開発は比較的やりやすいかと思います。
なぜなら、まずWeb開発の場合はHTMLやCSSといったマークアップ言語を用いて開発するからです。プログラミング言語とは違い、マークアップ言語はタグと呼ばれる記号で要素を囲っていくだけなので、プログラミングよりは比較的とっつきやすく、何よりテキストエディタさえあれば、開発も検証もすぐにでき、目に見える形でブラウザに表示されるため、試行錯誤がとってもやり易い開発だからです。
初心者にはとっつきやすさが最重要だと私は考えますので、Webサイト開発はうってつけだと思います。
また、Webアプリ・スマホアプリ開発は比較的流行りの言語で書かれていることが多いです。Python、Ruby、swiftなど。多分C言語なんて使ってないでしょう。
これらの言語は習得がしやすいという特徴があります。プログラマーが書きやすいように多数のフレームワークが整備されています。フレームワークとは、「さまざまな機能を複雑なプログラミングをしなくてもいいように、簡単に使えるようにしたひな形」のことです。逆にC言語なんて見たら発狂すると思います。欲しい機能は自力でゴリゴリ書いていかないといけないですし、ポインタとか最初は訳分かりませんからね。
比較的やりにくい分野
組み込み系プロダクト開発は正直ちょっと難しいかもしれません。
組み込み系プロダクト開発に使われる言語は、おおよそC言語が多いです。上でも述べた通り多分C言語は独学は少々キツイと思います。ポインタってなんだ?って話から始まり、実装したい機能はPythonだったら1行で書けるのに、C言語だと自力でゴリゴリ書かなくてはいけないなんてことは日常茶飯事です。
さらに、組み込み系のソフトウェアって超複雑難解です。何十万行、何百万行ものソースコートが複雑に絡み合い、どこをいじったらどこが影響するか?なんて素人には全く理解できません。いや、熟練すらも無理なレベルです。実際、私の開発している製品がそうです。
そして組み込み系ソフトウェア開発のキツイところが、簡単に検証ができないところです。動作にはハードウェア、ファームウェアが必要なので、HTMLのように「書いては動かして消して、書いては動かして消して」が簡単にできないのです。
とっつきにくい分野なので、挫折しやすいかもしれません。C言語や組み込みプロダクトは理系(情報理系)なら必ず習う分野なので、理系なら大丈夫なんですが、そういった知識のない方には少々難しいかなと思うところです。
まとめ
文系卒でもソフトウェアエンジニアになることは可能です。
ただし、無勉強ではキツいですのでProgateなどで基礎力は身につけておきましょう。
テスト技法とか開発手法などは理系と比べるとハンデありますが、正直会社入ってから覚えれば大丈夫です。
面接で、大体の言語は書けます!って胸張ってアピールしましょう!