1. エンジニア採用コラム
  2. プログラムを書く能力は必要なくなるのか (前編)

プログラムを書く能力は必要なくなるのか (前編)

こんにちは。codecheckチームの新田です。
codecheckという製品は、シンプルに説明すると、オンラインで「プログラミング試験」を作成して出題するツールです。

つまり、ある特定の分野(サーバやインフラ、セキュリティ)における「知識」よりも、与えられた課題に対して必ずプログラムを書いて動かして正解を導くという「実践力」を問うことに重点を充てています。(※)

しかしながら、導入を検討される企業様の中には

「いやいや、これからの時代はプログラムを書く能力よりも、活かす能力のほうが重要でしょ!」と、
お考えの企業様も多くいらっしゃる印象を受けています。

そこで今回は、 「プログラムを書く能力は、これから本当に必要なのか」 について、上記の背景やこれからの時代の考察なども含めて、ご紹介してみようと思います。

まず、こちらの前編の記事では「プログラミング不要説の4つの背景」についてご紹介致します。

※…勿論、いわゆる選択式でITリテラシーや情報技術の知識を問う問題を作成・出題することも可能です。

プログラミング不要説の4つの背景

そもそもなぜ、「プログラミングは不要になる」と業界で囁かれるようになったのでしょうか。 これには、これからご紹介する主に4つの背景があるのではないかと考えます。

1.フレームワークやライブラリ充実によってプログラミングが効率化された

非エンジニアの方でも「Ruby on Rails(ルビーオンレイルズ)」という言葉は多くの方が聞いたことのあるのではないかと思います。

Ruby on Railsとは、Rubyというプログラミング言語を元に開発されたWebフレームワークのことです。Webフレームワークとは、Web開発に必要な汎用的な機能をひとまとめにした機能群のことです。

このフレームワークを活用することにより、今まで何100行と書いていたコードを、簡単な機能は一行のコマンドで実装ができるようになりました。

また、フレームワークで実装されている標準化されたコードを利用することで、実装する人によるコードの違い(属人性)がなくなり、誰でもある程度同じようなコードでシステムを生成できるようになりました。

料理に例えるならば、「炒飯をつくる粉末」のようなものをイメージしてもらうと良いでしょう。

いちから食材を切って炒めるよりも、卵とご飯を炒めて粉と混ぜるだけで誰でも簡単に同じような味の美味しいチャーハンを作れるようになっているということです。

少し話はそれますが、今もなお多くの会社で利用されているPHPの人気フレームワークCake(ケーク)PHPというフレームワークでは、このコマンドをBake(ベイク)コマンドといって「勝手に焼いて料理するよ」という洒落たコマンド名になっていたります。
(エンジニアの方へ:CakePHPなんて全然もう人気じゃねーから!という論争はこの記事では論点ではないので悪しからず。m(_ _)m)

2.更に人工知能等によって、ソースコード自動生成も進んでいる

以前の記事(実務に繋がる開発力を適切に見極めるためのプログラミング問題に設けると良い3つの要素
)でも紹介しましたが、エンジニアの仕事の中で「調べる」という作業はつきものです。

普段様々なツールを扱う中で、思ったように動かない場合、解決策をみつけるためにインターネット上に公開されている沢山の解決方法を模索し、ソースコードを参照します。

それに対して、マイクロソフトがケンブリッジ大学の研究者らと協力し、「仕様通りに動くコード」を自動生成するシステム「DeepCoder※」を開発していることを発表しました。

これにより、なんだか上手く動かないシステムの穴を勝手に人工知能が埋めてくれることで、エンジニアのコードを書く、編集するという多くの作業が不要になるのではないかと期待されています。

もしこれが普及すれば、バグの発見や解決方法はAIが提示してくれるようになるので、大幅にエンジニアの作業負荷が変わることでしょう。

※…DeepCoderに関する紹介記事は以下を参照。
DeepCoder builds programs using code it finds lying around

3.機能として独立した外部のシステムを組み合わせる時代(ソフトウェアの同調性の時代)となった

IT業界で働かれている方であれば、API(エーピーアイ)やAPI公開、という言葉も良く聞き慣れた言葉なのではないかと思います。

APIとは、 アプリケーションプログラミングインターフェイスの略です。アプリケーションをプログラミングするための「入り口」のようなものです。

Webサービス間で機能やデータを利用するのためのAPIの事をWeb APIといいます。

APIの概念は少し難しいかもしれないので、またまた先ほどと同じく料理で例えましょう。「Web APIを活用する」とは、炒飯を作る上での一部の作業工程・調理器具・食材を外部に委託して活用することです。

もし本格的な美味しいチャーハンを作るには、先ほどの炒飯の粉だけでは不十分です。なぜなら、炒飯は強力な火力とスピードが命だからです。この強火を実現できるコンロと強火の中でスピーディに炒飯を炒める中華鍋を自宅で用意するのは、少しコストが高いですよね。

そこで「本格炒飯炒めAPI」を活用します。その入口をくぐると、そこには渡した具材を超強火で炒めてくれるシェフ、中華鍋、コンロが用意されており、具材を渡すだけで美味しい炒飯に仕上げて自宅に返してくれるわけです。

すみません、だいぶ話が炒飯に寄り過ぎました。

身の回りの体験では、ログイン機能が一番わかり易い例かもしれません。 皆様が普段利用しているサービスの中で、「FacebookやTwitterアカウントで登録する」という登録画面を見たことがあると思います。ボタンをクリックすると、「連携しますか?」というような認証画面が表示されて、許可をすると、そのサービス単体でメールアドレス、アイコン画像、ユーザ名等をイチイチ登録しなくても、勝手にユーザアカウントを作ることができると思います。

これは、各種SNSが公開しているWeb APIを活用することによって、サービス独自でアカウント登録作業を行わなくても、SNS登録情報をそのまま利用することができているのです。

このWeb APIの充実により、様々な外部サービスと簡単に連携ができるになり、新しいサービスは作るものではなく「組み合わせるもの」になりつつあります。

この組み合わせてソフトウェアを開発することをMashup(マッシュアップ)と呼び、ウェブ上に公開されている情報を加工、編集することで新たなサービスとすることです。

ハッカソンなど、時間の限られた中で製品を開発する際に、「XX情報は◯◯APIをマッシュアップして取得し〜」 という説明は、いわゆるこの事です。

一からプログラムを書くよりも、より本格的な機能として外部サービスと連携することが当たり前になっています。

4.アジャイル型開発の流行により、顧客課題の解決能力やコミュニケーション能力が問われるようになった

最後に、ここまでご紹介をしてきた技術の進化だけではなく「開発プロセスの変化」もプログラミング不要説に影響を与えているのではないかと思います。

従来のソフトウェア開発は「ウォーターフォール型」という開発手法でしたが、これが近年多くの現場で「アジャイル型」が導入されるようになりました。

どちらのソフトウェア開発プロセスも言葉は聞いたことがあるかと思いますので、細かい補足は省きますが、これらの二つの開発プロセスの概念の違いとしては

特徴ウォーターフォール型アジャイル型
要件定義緻密さ柔軟さ
作業プロセス工程化個人個人の相互作用
開発ドキュメント化動くソフトウェア
顧客との関係交渉・契約協調

というような要素があげられます。 アジャイル型の開発プロセスは

  • 「不確実なもの(マーケット・ビジネス環境)にどのように対応をするか」
  • 「失敗のリスクをどのように低減するか」

という課題に取り組む上で改善されてきた開発手法と言われています。

そのため、初期段階で要求を仕様として細かく定義することや、緻密に開発をしていくことから、より顧客と寄り添い、柔軟性をもって開発していくプロセスが主流になりつつあります。

そのためには「コミュニケーション能力」がエンジニアにも求められてきており、このような開発プロセスの中では、単にプログラムを書くこと、だけがエンジニアにとって必要なスキルではなくなってきているということがいえるでしょう。

プログラミングはツールに代替され、プログラミング以外の能力が求められる時代に

ご紹介させていただいたように「これまでのプログラミングを書く能力」をもっていなくてもそれらはツールに代替されるようになってきましたし、「プログラミング以外の能力」が必要になってきました。

これらの背景から、プログラミング力における必要性が徐々に軽視されつつあるのは事実であると言えるでしょう。

しかしながら、では本当に「プログラミング力は不要」になるのでしょうか。

後編の記事では「プログラミング能力は本当に必要なのか」について、具体的に考察をご紹介していきたいと思います。

関連コンテンツ

エンジニア採用の基礎知識とコード採用導入のヒント

〜採用課題把握のための6つの質問〜

「ポテンシャル採用か、即戦力採用か?」「エンジニアを採用するうえで解決すべき課題はどこにあるか?」エンジニア採用をするにあたっての基礎知識と、採用課題に合わせてコード採用を活用するためのヒントをご紹介します。自社エンジニア採用の状況把握に役立つ「6つの質問」も収録しています。
《収録内容》
  • コード採用が解決する、人事の採用課
  • 利用用途(新卒/中途)
  • 状況把握のための6つの質問 など
ダウンロード

著者情報

新田 章太

新田 章太

2012年3月に筑波大学理工学群社会工学類経営工学主専攻卒業。 現在、株式会社ギブリー取締役を務めています。 おもに、codecheckやCODEPREPといった、エンジニアの成長支援事業の統括、及び自社サービスプロダクト推進室の責任者として活動をしております。

著者情報

新田 章太

新田 章太

2012年3月に筑波大学理工学群社会工学類経営工学主専攻卒業。 現在、株式会社ギブリー取締役を務めています。 おもに、codecheckやCODEPREPといった、エンジニアの成長支援事業の統括、及び自社サービスプロダクト推進室の責任者として活動をしております。