文系はITエンジニアになれるのか?適性について考える

 最近、よく「文系だからIT系は無理…」という言葉を耳にすることがあります。

エンジニアは理系でなければならないのか?

 プログラミングといえば、2進数を自由に操り機械語を直書きするような技術を持ったハッカー達が、さながら映画のようにキーボードを操り、目にもとまらぬ速さでコードを書いていく…。

 といったイメージは90年代くらいで打ち止めです。現代のプログラミング言語は、非常に生産性を重視して作られており、まるでプラモデルを組み立てるようにプログラムを組み立てることができます。

エンジニアに必要な能力とは?

 ひとくくりにITエンジニアといっても、インフラ、ネットワーク、データベースの専門家、ゲーム系や組み込み系など、その対象は多岐にわたります。

 例えば、ゲーム系のエンジニアは、幅広い数学知識が必要です。三角関数はもとより、高度なアルゴリズムを組むための理論等、「あまり理数系が得意でない人」には難しく感じられるかもしれません。

 最近ではunreal engineやunityなどのリッチなフレームワークも登場しているため、昔ほど高度な知識や技術は必要なくなってきているのかもしれませんが、やはり基礎的な知識がないと辛い、というのは間違いありません。

 反面、Web系やインフラ系などは、高度な数学知識は必要ありません。とはいえ、相応の能力というのは必要になります。

論理的思考力

 プログラムは、書かれた論理(コード)に従って動いています。プログラムを素早く柔軟に書くということは、論理的思考力、つまり、「何がどうなると、何に作用して、何がどうなるのか」ということを、筋道を立てて組み立てていく必要があります。

プログラミングに数学は必要ない

 一部のゲーム系エンジニアや、リッチなUIを作成するためにD3.jsやThree.jsなどに触れるフロントエンドエンジニアは、確かに数学知識は必要です。また、ディープラーニング系の分野では、アルゴリズムに触れるにあたって、数学知識はもはや必須となってきました。

 しかし、豊富なフレームワークとライブラリがオープンソースで手に入る現代においては、数学知識よりも、英語力やAPIを読み解く能力、応用力が必要になってきます。

 高度なアルゴリズム(たとえば、自動運転プログラムなど)に携わりたい!というわけでなければ、数学知識などほとんど必要ありません。

必要なら学べばいい

 業務中どうしても必要となることはもちろんあります。サーバーサイドで開発を行っていても、例えばパフォーマンスチューニングなどで高度なアルゴリズムを書かなければいけないことがあるかもしれません。

 そういった場合、我々にはインターネットという膨大な知識の海があります。必要なら、どんな知識だって手に入ります。

生かせるスキル

 リーダーシップ性や、会議、ドキュメント作成、進捗管理など、スキルを遺憾なく発揮できるのがこの業界です。もしプログラミングがどうしても苦手なら、プロジェクトマネジメント系の道も開いています。また、システム開発について学んでから、強みを生かして営業の道に進む人もいます。

 こう考えてみると、文系に極端に不利な仕事とは言えないのではないでしょうか。

恐れる必要はない

 未知の世界に踏み込むことは、勇気のいることです。しかし、もしプログラムの世界、ITの世界に大きな魅力を感じているのなら、その情熱できっと優れたエンジニアになれることでしょう。

 更に最近では、IT人材不足の影響もあってか、かなりの売り手市場となっています。未経験であれ、業界に潜り込むのは決して難しい話ではありません。もし駄目なら、別の道を探せばよいだけです。

まとめ

 プログラミングに適性はありますが、文系、理系で極端に差が出ることは、Web系や業務アプリケーション開発の世界ではあまりありません。迷われている方は、まずコードに触れたり、無料の講座などに応募してみるのが良いかもしれません。もちろん、いきなり飛び込んでみるのも手です。