RareTECH受講生ブログ

RareTECHの受講生がアウトプットに利用しているブログです。

【2021年最新版】エンジニアに求められるスキルとは何か?

こんにちは。RareTECHの講師です。
今日は、これからのエンジニアに求められるスキルということで記事を書こうと思います。 RareTECHで講師をしていて以下のような質問をしばしば受けます。こちらの記事では、この「エンジニアに求められるスキル」について2021年の今の時代に必要だと思うものを筆者なりにピックアップします。

エンジニアに必要なスキルは何ですか?

以下、本記事のテーマです。

  • IT全般における基礎概念とは

  • 説明能力とは

IT全般における基礎概念とは

「基礎概念」という言葉は、2019年にRareTECH創設者の古里が提唱した概念です(筆者調べ)。プログラミングスクールが流行し、多くのスクールが乱立する中、「プログラミングスクール卒のエンジニアは使えない」と囁かれるようになりました。なぜ、独学で学習する人たちよりもお金を払ってまで学習に意欲のある人たちが無能だと揶揄されるようになるのかいささか疑問でした。そして、この答えが「基礎概念の欠如」にあると筆者も実感しているところです。多くのプログラミングスクール卒の方は、半年や3ヶ月という限られた時間の中で必要最低限の知識を学びます。例えば、HTMLとCSSを一通り勉強した後、Ruby on RailsやLaravelといったウェブフレームワークを学習します。そして、CRUD機能を備えたウェブアプリケーションポートフォリオとして作成し、「自分はプログラミングができるようになった」と妄信し、転職活動に勤しむのです。

確かに、「プログラミングができるようになった」と感じるのは間違いではないでしょう。世の中のウェブアプリケーションの大半は、Databaseを作り、時にはテーブルをJOINをし、その結果をフレームワークのモデルが受け取り、結果を返すという至ってシンプルな仕組みで動いています。でも、果たしてエンジニアの仕事とはそんなシンプルなものでしょうか?ここに現代のプログラミングスクールの問題点がありそうです。

例えば、新規開発をする際、まずはインフラの基盤を整える必要があります。(新規開発でなくても、インフラのチューニングやversionの更新等はよくあります。)手順としては、オンプレのデータセンター、もしくはクラウドにサーバーを立て、その中で最低限プログラムが動くように環境構築をします。その際には、基本的にはUNIXの知識が必要になり、rubyをインストールするためにaptコマンドを叩いたり、その後gem等で適切なパッケージをインストールすることになります。

また、ウェブアプリケーションは単一サーバーだけでは成り立っていません。多くの場合、データベースサーバーはアプリケーションサーバーとは分離されており、3306番のポートを介して通信を行っております。その際には、相手サーバーのIPアドレスを指定し(時には、エンドポイントを指定)適切に通信が行き届くようにしなければなりません。

このようにエンジニアの仕事は、何も「プログラミングをするだけ」ではないのです。より俯瞰的な視点を持ち、システム全体をエンジニアリングする力が必要だと筆者は考えております。このような俯瞰的な知識をたったの半年で学べるのでしょうか?おそらくよっぽどの天才を除いては答えはNOでしょう。まさに今言ったように、俯瞰的なITの知識が欠けている人たちがエンジニア転職を多く志望してしまうために「プログラミングスクール卒の人は無能だ」と揶揄されるようになったのでしょう。

「基礎概念」とは、まさに今述べた「俯瞰的な知識」のことを指し、プログラミングの基本的な文法、ネットワークに関する基本的な知識、サーバー管理における基本的な知識、ウェブシステムにおける基本的な知識などを統合した言葉だと筆者は解釈しております。まさに、この「基礎概念」を習得することこそがエンジニアとしてのスタートラインに立つための第一歩なのだと筆者も実感しております。

特に近年の技術発達の進歩にはめざましいものがあります。つい先日、Googleが以前から開発していたQUICプロトコルRFCに追加されました。TCPが常識である時代は終わりを迎えつつあるかもしれません。このように昨日までの常識が通用しない中で、我々のような凡人が少しでも最新技術をキャッチアップするためには、網羅的なITの基礎を学習し、新技術を全くの新しいものとして処理するのではなく、以前あった技術の複合体、もしくは微修正版として処理していくしかないでしょう。

まさに、基礎概念の習得は必須だと筆者は主張します。

説明能力とは

次に「説明能力」について説明します。

エンジニアに求められる次なるスキルは、「説明能力」だと筆者は主張します。これほどまでにITが我々の世界に浸透し(10年前までには、PayPayのようなサービスなんて考えられもしなかった)、生活を便利にしてくれるとは誰が予想したでしょうか。このあまりにも早すぎるIT技術の進歩の中、世の中で生じている現象が「IT知識の格差」です。ここで、筆者は「エンジニアと一般の人にIT知識の差がある!」なんて言いたいわけではありません。「エンジニアとエンジニアの間でIT知識の格差」が起きているのです。そして、「経営層とエンジニアの間でIT知識の格差」が生じているのです。これはかなり深刻です。古い知識がいつまでもアップデートされていないエンジニアの人々が少なからず存在しています。経営者にも、さすがに今の最新技術をキャッチアップする余力はないでしょう。別にそのことを批判したい訳ではありません。むしろそうなって当然だとすら思っています。よって、次世代に求められるエンジニアには、彼らに対して「技術を説明する力(=説明能力)」が求められると主張します。ただ技術だけを追い求め、オタクのようにPCだけ触っているだけでは、我々を雇う経営者にその魅力が伝わりませんし、サービスを利用するお客様に技術の高さが伝わりません。そのため、我々エンジニアは「説明能力」を磨き、少しでも自分たちの技術が広く受け入れられるための地盤を作らなけばなりません。そして、よりよい技術が採用されるように「我々(エンジニア)」が働きかける必要があるのです。ただ、この話はとても抽象的であり、駆け出しエンジニアと呼ばれるような方には幾分、理解しにくいことだと思います。そのため、ここでいくつか皆さんが気をつけることをリストアップしておきます。

  • 相手に技術の話をする時、できるだけ専門用語は使わずに相手がすぐ理解できるような言葉遣いを心がける。

  • 先輩エンジニアに質問をする時、自分の悩んでいる状況を端的に説明できるようになる。

この二つに共通しているのは、技術の「言語化」だと筆者は考えております。普段の学習からその言葉を小学1年生の子供に教えらえるくらい自分の中で噛み砕き、理解することが大切でしょう。そして、この「説明能力」が皆さんの転職の際の強みとなり(面接等)、実際の開発現場においてもコミュニケーションを円滑にする武器になると筆者は信じております。

まとめ

以上、二つが2021年の今の時代にエンジニアに求められるスキルだと筆者は思います。細かなスキルセットの話ではなく抽象度の高い話だったと思いますが、この記事を読んでいる方もじわじわと実感できることを祈っております。