たまたま見つけたブログの記事で気になったものがあったので、 自分の意見を書いておきます。

気になったブログの記事

「エンジニア就職志望者が情報工学科に行くのは間違いです!学べることが違います!」

https://www.torikun.com/entry/engineer-jouhoukougaku

この記事を要約すると、

  • 大学の情報工学科のプログラミング単位取得だけでは 学習時間が足りないのでプログラミングスキルを上げるのは難しい。
  • スキルを上げるにはプログラミングスクールがオススメ

というモノです。

まぁ確かに、 大学の講義・実習だけで十分なプログラミングスキルを身に付けるのは不可能であるのは事実です。

とはいえ、『エンジニア就職志望者が情報工学科に行くのは間違い』というのは、 流石に異論があります。

ブログの著者と自分とで異なる意見になる理由を考えると、

【「エンジニア」という言葉の定義が違う】

から、だと思います。

「エンジニア」とは

上記の記事では、エンジニアには次の能力が必要だとしています。

  • プログラミングスキル
  • コミュニケーション能力
  • マネジメント能力

これらは確かに重要です。

というか、「コミュニケーション能力」や「マネジメント能力」は、 エンジニアでなくても社会で働くには必要な能力です。

つまりこの著者は、

【「エンジニア」に特化して必要な能力は「プログラミングスキル」だけ】

と主張しているように読めます。

これは、私の考えと完全に異なります。

まず、私が考える「エンジニア」像を説明します。

エンジニアとは、曖昧なゴールイメージを技術によってスマートな形で実現できる能力を持つ人。

例えば「家を建てる」というゴールイメージがあるとします。

家を建てることは情報系の「エンジニア」の仕事ではないと思いますが、 あくまで例として考えてください。

この場合、次のような様々なことを決定し、設計書を作成して建築する必要があります。

  • 建てる場所
  • 予算
  • 広さ
  • デザイン
  • 機能性
  • 耐久性
  • 拡張性
  • メンテナンス性
  • 建材
  • 日程
  • etc…

このように、 曖昧なゴールイメージを実現するために具体的な作業項目に分解し、 分解された作業の課題を洗い出し、 課題を解決し、 イメージを具現化する技術を持つのが、私が考える「エンジニア」です。

もちろん、現実には一人のエンジニアが全てを担当できる訳ではありません。

しかし、ブログの著者のような「エンジニア = プログラミングスキルのある人 」では、 絶対にありません。

またブログの記事には、次の記載があります。

例えば、大学2年生の時にはフーリエ変換という数学の公式を習います。
この技術はパソコンの仕組みを突き詰めて行くと重要になってくる有名な数式です。
微分とか積分とかいろいろ難しい公式を覚えて問題を解いていきます。
エンジニアの方ならおわかりかと思いますが、
エンジニアとして仕事をする上でこのフーリエ変換を使う人はぜんぜんいません。

確かに全てのエンジニアが微分・積分を必要とする訳ではないです。 しかし、技術の背景を知っているエンジニアと、 プログラミングしか出来ないプログラマーでは、担当できる範囲が全く違ってきます。

たとえばディープラーニングなどの技術は、 プログラミングしか出来ないプログラマーでは 絶対 に作り出すことは出来ません。 様々な知識を持つエンジニアが集結してこそ可能なものです。

もちろん大学の講義レベルの知識だけで、すぐに何かが実現出来るということはありません。 しかし、大学の講義はさまざまな技術の基礎そのものであり、 その基礎を身に付けているかどうかで、その後の応用が出来るかどうかの違いに繋がってきます。

特に基礎部分は、体系的に学んだ方がより深い理解につながります。 そして大学の情報工学部の単位は、体系的に学ぶことが出来る構成になっています。

つまり大学の情報工学部は、『「エンジニア」になるためのもっとも早道である』と言えます。

認識が異なる理由

では、ブログの著者は何故「エンジニア = プログラミングスキルのある人」という 認識なのでしょうか?

あくまで私の想像ですが、これは日本のソフトウェア開発業界の特色によるものだと思います。

その特色とは、いわゆる「ゼネコン方式」です。

大手が仕様を決め、実装を外部にアウトソーシングする。

ブログ著者にとって「エンジニア」とはアウトソーシング先であり、 「エンジニアは安い金額で実装さえ出来れば良い」という思考なのではないでしょうか?

日本には、このような思考が蔓延しているため、 エンジニアの待遇は良くならないし、 技術レベルも世界から離される一方なのではないでしょうか?

なお、ブログ著者のプロフィールを見ると、 IBM Tokyo Lab に務めているとあります。 いわゆる大手であるのは間違いないでしょう。

エンジニア就職志望者はどうあるべきか

私の考えは、「エンジニア就職志望者は様々な技術を学ぶべき」です。

「他人が作った仕様を元に、プログラムだけ組んでいれば幸せ」という人は、 ブログ著者が主張するようにプログラミングスクールなりに行けば良いと思います。

ただ、日本のゼネコン方式ソフトウェア開発を請け負う、 いわゆる SIer の給与は発注元の企業よりもかなり低いのが一般的です。 それこそ IBM の半分かそれ以下ではないでしょうか? そのことは認識しておく必要があります。

なお、エンジニア志望者が行くべきなのは、情報工学科でなくても良いと思います。

というのも、私の「エンジニア」の定義は広いので、 情報工学科では収まりきらないためです。 何を極めたいかによって、何を学ぶべきかは変ってくるでしょう。

一つだけ必須技術を上げるならば、それは 「英語」 です。

今後の「エンジニア」業界で、 日本が世界をリードすることは極一部を除いて無いでしょう。

つまり、新しい技術は海外から導入することになります。 その時、その技術の解説は英語であるのが一般的です。

英語が出来れば、いち早く技術の導入が可能になります。

まぁ、これは今に始まったことではなく、 それこそコンピュータサイエンスという言葉が一般化したころから英語が標準でした。

ただ平成の時代は、

  • 今よりは技術の進歩が激しくなく、日本語の翻訳を待っていてもまだどうにかなっていた
  • 国内で働いているだけなら、外国人を相手にする機会がほとんどなかった

などの理由から「英語は出来た方が良い」というレベルでした。

しかし現在は、

  • 技術の進歩が激しく、日本語の翻訳を待っていたら周回遅れどころか浦島太郎になる
  • ある程度新しい技術を取り入れる場合、国内の日本人だけで開発するのが難しくなった

などで、まともな「エンジニア」として働くには、英語はなくてはならない状況です。

もしもあなたがエンジニアを志す学生で、英語を苦手としているのならば、 留年してでも英語は習得しておくべきです。

世界と戦う意思のあるまともな日本の企業でエンジニアとして働くのであれば、 入社資格として英語のレベルを問われるでしょう。

逆に英語のレベルを不問とするような会社は、 世界と戦うことを諦めているか、 あなたを安く使える労働力と捉えているかのどちらかの可能性が高いです。

また、英語がまともに出来れば外資系や海外で働くことも選択肢になります。

英語習得のために大学を 1 年留年したとしても、 その後のエンジニア人生を考えれば充分おつりがくるでしょう。

英語が出来ない私だからこそ、 英語が出来ない現状がどれほどマズいことかを、 この歳になって身をもって感じています。

私はこれまで何度も英語の学習に挑戦と挫折を繰り返してきましたが、 今の状況なって本当にマズいことを実感し、 ラストチャンスとして人生で何度目かのトライをしています。

皆さんは、私のような思いをしないで済むように、英語だけは身につけてください。

もしかしたら、英語よりも中国語の方が良いかもしれませんが、 それはまだ何ともいえない状況です。