バックエンド担当、フロントエンド担当、ミドルウェア担当、その他の開発者…何故そんなに必要なのか?

2021年8月30日

ソフトウェアやアプリケーション開発のスキルに対する高い需要の傾向は、あらゆる業界の企業が社員や顧客のために、より優れたソフトウェアを使って変革・最適化を推進しようとする中、今後も続くと予測されています。モバイル・アプリの普及やその利便性、ビッグデータの適用、予測分析、人工知能や機械学習の出現などにより、今後もさらに多くの開発者が必要となり、高まるニーズが終わることはないでしょう。

このような高い需要を考える時、ソフトウェア開発という職業は、魅力的で高収入が見込まれる選択肢です。一流企業は、競争社会で優位な位置を獲得するために、自社のアプリケーションを設計し配信できる、優秀な人材を呼び寄せようと躍起になっています。

ところが、現状のプログラマーの求人や開発者の採用方法には、興味深いねじれが見られます。

ここ数年、アプリケーション開発はより複雑で細分化されたものになっているため、求人情報を収集する際に、採用担当者や求人担当者には非常に専門的なスキルが求められます。さらに技術者を募集する前に、構築するアプリケーションのアーキテクチャを決定しなければならないという状況になっています。昔はこのようなことはありませんでした。

大量のリソースを必要とするアプリケーション開発

フロントエンド開発者、バックエンド開発者、データベース開発者、そして、これらすべてをこなせる (と言う噂の) フルスタック開発者など、最近はさまざまな求人情報で溢れています。この求人リストは絶えることがなく、このことからも現代のソフトウェア開発に何が起こっているのかは明らかでしょう。

ソフトウェア開発があまりにも多面的になってしまったために、ひとつのアプリケーションを作り上げるためには、それぞれの専門のプログラマーが集まって協力し合わないといけないようになっているのです。さらに、ユーザー・インターフェースも考えるとなると、フロントエンド開発者も必要となります。この場合でも、UI デザイナーの上に、コーディングを行う別のフロントエンド開発者が存在することもあります。バックエンドの開発も、そのベースに統合要件、API、データベースへのアクセス、データセキュリティなどが含まれる場合は、複数の開発者が必要となります。

このような作業を 1 人の優秀な開発者に任せることができた時代があったことを皆さんは覚えているでしょうか?昔のソフトウェア開発は、今ほど複雑ではありませんでした。いったい何が起きたのでしょうか?原因は何なのでしょうか?何故このような状況になったのかについて考えてみましょう。

  • Web:Web という性質上、"クライアント" ソフトウェアの様々なオプションと “サーバー" プログラムの多様な組み合わせが存在し、これらが互いにやり取りできるようにしなければなりません。
  • IT セキュリティ:ハッカーや窃盗団に対抗するために、あらゆるものを封鎖することで、多くのソフトウェアのテクノロジー・サイクルの衰退が加速しました。
  • スケールとパフォーマンス:15,000人のユーザーが同時接続する必要があったとしましょう。これが、問題なく行えるようにしたとします。さらに、全員が同時にデータベースにアクセスすることも可能にします。ただし、このニーズに対応するためには、ソフトウェアのアーキテクチャや配布のどこかで複雑な機能が追加されます。
  • フォーム・ファクター:パワーユーザーのワークステーション機能を、現場のタブレットやスマートフォンで利用できるようにして、レスポンシブなユーザー・エクスペリエンスを提供するためには、アプリケーション開発者が配慮すべき考慮事項が増え、より複雑となります。

上記は、ほんの一例でしかありません。しかし、これ以上に大きな問題として、今のアプリケーションを構築するために開発者が使用している数々の技術が、種類が多い上に急速に進化するため、既存のアプリケーションのコーディングを最適に長期間使用できるように設計されていないということがあります。

また、開発者の環境やコーディング言語は、アプリケーションの構築と保守の両方を含む、ビジネス全体にかかるコストを最適化するように設計されていません。例えば、新しいユーザー・エクスペリエンスやフォーム・ファクターを採用する必要があったとしましょう。

ソフトウェアの選択肢としては、このような新しい課題に対応するための新しいスクリプト言語やコーディング言語、そしてこれをオーサリングするための別のワークベンチなども存在します。結果、その数は約 800 種類も存在しうるのです。IT 部門でそのうちの10数個を操作するだけでも、大変な作業となります。

アジャイルやその他の開発手法は、自らが招いたものとは言え、この陰湿かつ自虐的なソフトウェアの呪縛から私たちを解放することはできませんでした。この業界は『人月の神話 狼人間を撃つ銀の弾はない』にあるように、プロジェクトを人月で考える時代から、永遠に(人月ではなく)小チーム月で考えねばならない『小チーム月の神話』へと少しずつ変化しているのです。

実際、アプリケーション開発には、"銀の弾" つまり万能のアプローチなど存在しません。まったく異なるシステムやアプリケーションが大量に存在し、利用されていることを考えると、無謀なことでしょう。また、技術系の求人欄に掲載されているような、さまざまな開発スキルをたった一人の開発者に求めることは非常に無理があります。

ソフトウェア開発のすべてのレイヤーに精通しているフルスタック開発者という呼び方も、ちょっとした誤解を生んでいます。フルスタック開発者は、多くの言語に関する機能的な知識を持ち、コンセプトを完成品にまで高めることはできます。

しかし、アプリケーション・チームに必要なすべてのプログラミング言語やタスクに関する専門家というわけではありません。今の時代、これらすべてを扱うのは無理な話です。データベースの概念からユーザー・インターフェース設計の原理に至るまでのすべてのスタックに関連するコンピュータの概念を学び、理解することは可能ですが、最新の言語、フレームワーク、オープンソースのパッケージ、統合、プロトコル、パッチ、エンジン、バージョン、テンプレートなど、あらゆる分野の最新情報を身に付けようとすると、結局は、肝心な経営側がソフトウェアで実際に達成しようとしていることを理解するために時間を割くことができなくなります。

ただし、それでも問題はないでしょう。なぜなら、フルスタック開発者の履歴書はあらゆる技術用語の略語で埋めつくされているため、万が一うまくいかなかったとしても、また別の場所でより高い給料を得て、やり直すことは可能でしょう。ただし、この先も読み続けてください。この現状をどう変革するのかを見ていきます。

需要が高いプログラミング・スキル

総合的なアプリケーション開発スキルは、市場ではなかなか見つけることができないスキルであり、プログラミング言語は経験や試行錯誤の中から学ぶことも多く、習得するには相当な時間を要します。ですから、企業がソフトウェア開発者を募集する際は、このようなスキルセットはそう簡単には見つからない、もしくは見つけることがほぼ不可能です。

簡単に検索してみても、ほとんどのプログラマーの求人には、複数の言語ができることが求められていることが分かります。インターネットの求人サイトでよく見られる、あらゆるタイプのプログラマーの求人に共通する「必須条件」としては、次のようなものがあります。

  • 1 つまたは複数の開発言語 (C++、PHP、HTML など) が使えること。
  • プログラミング言語 (C++、Java、JavaScript) やフレームワーク/システム (AngularJS、Git) に関する知識があること。
  • Java、JavaScript/NodeJS、Python、Ruby、Go、Scala を含む 1 つ以上のソフトウェア言語の経験が豊富なこと。
  • CSS、HTML、CMS、JavaScript、jQuery、PHP、Gulp、git、Drupal、WordPress に関して十分な知識があること。

このようなスキルは、プロジェクトの柔軟性や汎用性に関するものですが、企業が多くの言語をマスターしたプログラマーを特定して採用することは、時代遅れになりつつあります。長期間の間に異なるチームによって開発された様々なアプリケーションやシステムは、それぞれのチームが使いやすい言語で開発されており、この言語が異なる場合もあり、その多種多様なアプリケーションやシステムのメンテナンスに追われている IT 部門もいまだ多く存在します。

このように開発の専門分野が分散して存在することで、プロジェクトのリソースの割り当てやアプリケーションのメンテナンスは複雑で困難になります。また、このような形式で開発を続けていると、ビジネスの俊敏性も失われてしまいます。募集する開発者の数を減らし、候補者が 6 種類以上の言語に触れているかどうかなど気にすること無く、面接や選考ではコンセプト・デザインのスキルの経験を重視することはできないのでしょうか?アプリケーション構築時に、フロントエンド、バックエンドといった異なる能力を持った開発者を集める必要がない方法はないのでしょうか?

より生産性の高いオプション

Visual LANSA を始めとしたローコード開発プラットフォームは、ソフトウェアの作成を可能な限り自動化し、その他の部分は 1 つの強力なコア開発言語を利用することで、より迅速で簡素なアプリケーション開発が可能となります。これにより、IT スキルの求人や管理が大幅に簡素化できます。ローコード・プラットフォームは比較的新しい分野のため、基本的にこのスキルや経験を持っている人はほとんどいません。ただし、他のコーディング言語の知識があれば、その開発者はすぐに Visual LANSA を習得でき、新規プロジェクトやメンテナンスのバックログ、アプリケーションの拡張などに取り組むことができます。

ある重要なプロジェクトの更新が必要なのに、チーム内の Python や JavaScript に精通している人が現在携わっている、別の優先度の高い重要なプロジェクトが終わるまで待つ必要がなくなります。どんなプロジェクトであっても、単に開発者を割り当てるだけでよいのです。その開発者が適切なスキルをもっているか、このプロジェクトを成功させるために必要な専門用語がその開発者の履歴書にあるかなどを気にする必要はありません。

強力な開発言語が 1 つだけなので、フロントエンド、バックエンド、そしてその他すべての開発者全員がフルスタック開発者となることができ、エレガントかつ美しい、モバイル、Web、クラウド、サーバー、デスクトップのアプリケーションを構築することができます。

他の企業がコストの高いソフトウェア開発者を大量に採用して、アプリケーション・プログラミングのニーズに応じたスキルセットを獲得している間に、自分たちに一番適したローコード開発プラットフォームに投資することで、プログラミングやリソース管理を簡素化でき、アプリケーション開発やメンテナンスを迅速に行い、現存するチームを最大限に活用することができます。

より多くの企業がローコード・プラットフォームを採用して、迅速なアプリケーション開発を進めていくことで、フロントエンド、バックエンド、データベース、フルスタックの開発者の求人は、過去の遺物となるでしょう。そして将来は、企業が再度アプリケーション・プログラミングに必要な求人を募集する際は、その求人職種がただ単に「開発者」となっている日が来るかもしれません。