見出し画像

ITエンジニアにとっての計算論的思考

2011年、ウォール・ストリート・ジャーナルで「ソフトウェアが世界を飲み込む理由」という記事が発表されました。
ウォール・ストリート・ジャーナルはアメリカの経済新聞ですね。国際的な影響力を持つと言われています。

原題は「Why Software Is Eating The World」です。
この手記には、様々な産業がソフトウェアによって置き換わっている例とその理由が書かれています。

産業がソフトウェアに置き換わっている例をあげます。
・書籍 → Kindle
・電話帳 → WebサイトやLINE
・レンタルビデオ → Netflix、AmazonPrime
・オペレーター → チャットボット
・タクシー → Uber
・CD → Sportify、You Tube
・地図帳→Google Map

記事は10年前に書かれたものですが、2021年現在においてもこの流れは変わりません。AIが進化することでより加速するものと思われます。

つまり、ソフトウェアを開発を生み出すことは、社会に大きな価値をもたらし、変革を起こすわけです。

このような状況の中で、「ソフトウェアを作れること」というスキルは貴重かつ不可欠なものになっています。ITエンジニアの価値は高まる一方だと言えるでしょう。

では、この"スキル"はどのように定義すればいいでしょうか。

AWS、GCP、Azure、Salesforceといったソフトウェアを作るためのサービスがどんどん増えています。
また、RPAやNoCodeという、コードを書かなくても業務をデジタル化できるツールも豊富にあります。
このようなサービスやツール群を組み合わせることが、"ソフトウェアを作れるスキル"でしょうか。

いやいや、いくらツールを組み合わせても、コードを書く部分が無いということはないでしょう。
ということは、プログラミング言語を使いこなし、コーディングができることが、"ソフトウェアを作れるスキル"でしょうか。

ここでは定義を論じたいわけではなく、「私たちITエンジニアは何をもってコアスキルとするべきか」という視点で考えてみます。

自分にとってのITエンジニアの生きがいは、楽しく、技術を身につけ駆使し、顧客や社会に価値を提供し、利益を生み出すことです。
この中で、価値と利益に注目してみましょう。

価値を生むためには、顧客や関係者に喜ばれる必要がありますよね。
利益とはその喜びの対価なわけです。
ではそれを実現するためにはどうしたらよいか。
というと、自分たちにしかない強み、あるいは、ある領域においては他よりも優れた強みが必要となります。

一方で、高度化するソフトウェア開発サービス群は、我々のようなITエンジニアでなくとも使いこなせるものもあります。
RPAはその代表例ですし、SalesforceやAWSも、中には素人でも使えるサービスがあります。

プログラミングは素人には難しいでしょう。一定の学習が必要です。
しかし、デジタルネイティブな世代であれば、社会に入る前にその学習の一部を済ませています。

そのような中で、ITのプロフェッショナルと言われるITエンジニアが価値を出し、他と差別化して利益を出すにはどうすれば良いのでしょうか。

その答えの1つが、計算論的思考だと考えます。

計算論的思考とは、「どこまでがコンピュータができることで、どこからが人間がやるべきことなのかを判断できる思考」のことです。

例えば、ある解決したい現実問題があったとします。
その問題を見て、「これはセンサーを付けてその値を拾ってシステムが処理して、その結果を人が見て判断すれば良さそうだな」というように、コンピュータ(文中ではシステム)と人間がそれぞれ担当する部分を分けられる考え方です。

また、計算論的思考とは「コンピュータの能力を問題解決に活用するための体系的思考」でもあります。

コンピュータは、高速で正確な処理能力を持っています。
しかし、その処理能力を活かすためには、コンピュータが正しく認識できるよう、対象を形式化する必要があります。

例えば先程の例では、「実現のための登場人物は、情報を発信するデバイス、その情報を受け取るセンサ、センサから送られたデータを処理するシステム、システムで変換されたデータを見て判断する人間だ。センサの情報をシステムで処理するためには変換式が必要で、変換式を導出するにはデバイス毎に補正値を加える必要がある」というように、対象をモデル化し、分解し、アルゴリズムを導き出せるような思考ということです。

まとめると、以下のような特徴があげられます。

・抽象化・・・現実空間の曖昧な事象をモデリング
・分割・・・巨大なタスクを扱えるレベルまで分離
・再帰的・・・規則性の発見、アルゴリズム化
・試行的(発見的)・・・不確実な状況に対するヒューリスティックな推論と学習

計算論的思考という言葉は、マサチューセッツ大学のジャネットウィング教授が定義したもので、もとは「Computational Thinking」ですね。

解決すべき大きな現実空間の問題に対して、コンピュータの能力と特性を理解した上で、効果的な活用のために、事象を分離し細分化していけるような思考ということです。

これは汎用的なスキルであり、プログラミングスキルもサービス/ツールの組み合わせスキルも、この一部だと言えます。

そして、ITエンジニアは、まさに、この計算論的思考に長けた存在だと思っています。

つまり、より高次の問題解決力を持つからこそ価値が高い、逆に言うと、高い計算論的思考スキルを持つことで価値を高めなければいけないのだと思います。

この記事が気に入ったらサポートをしてみませんか?