エンジニアとしての専門性

先程の記事「顧客と同じ意識に立つ」で書いた、

できるだけ、顧客と同じ意識に立つ。その上で、エンジニアとしての専門性を提供出来る。そういう仕事をしたいと思います。

という文章で、「エンジニアとしての専門性」という言葉を出したので、それって何だろうかと考えてみました。

先程の記事は上流工程を意識していたのですが、エンジニアとしての専門性といって思い浮かんだのは、「MECEを作る」ということでした。
MECE。モレなくダブリなくというやつですが、上流工程の責務である「仕様を定義する」ことにおいて、仕様がMECEであることは何よりも重要なことです。

そこで作る仕様は、顧客が念頭に置いている要件はもちろんのこと、あらゆる例外ケースを網羅しなければなりません。例外ケースをすべて取り上げ、MECEにすれば、その仕様はそのままテスト仕様書にもなるのです。

顧客と同じ意識に立って、さらにエンジニアとしての視点を加えることで、はじめてMECEな仕様が出来る。これが上流工程におけるエンジニアの専門性です。

結局のところ、システムを作るというのは、何が起きても大丈夫な構造を論理的に作ることです。そのような構造を作り上げたあとで、次のステップとして、その構造をソフトウェアとして実装するのです。

仕様を定義する上流工程に対して、ソフトウェアを実装することを下流工程といいます。上流工程における専門性と、下流工程における専門性は、種類が違うのかどうか。

自然言語で定義したMECEな仕様を、より論理的な言語であるプログラミング言語で再定義してみる。上流工程で定義された仕様が本当にMECEなのか検証することが出来ます。こう考えれば、下流工程は上流工程の延長線上にあるものに過ぎず、専門性に違いはないことになります。

一方で、ソフトウェア・システムを実際に稼働させるにあたっては、様々な非機能要件を検討せねばならず、それをソフトウェアとして実現させる手段も必要です。まさに「技術」的な部分です。こう考えれば、上流工程と下流工程の専門性は異なるということになります。

まぁ、そうは言っても、やはり上流工程と下流工程の専門性は違うと思います。ただ、業務アプリケーションのプログラマとかだったら、比較的上流に分類した方が良いかもしれない。上流と下流というより、アプリケーションとインフラくらいの方が素直というか。

今後クラウドが進展していくとすると、クラウドの外にいる人とクラウドの中にいる人で、アプリケーションとインフラといった違いが出てきて、きれいに分業出来たりするのではないかと。

そうやって分けて考えれば、明らかに私はインフラの方は苦手なわけです。だから、業務をしっかり理解できて、それをMECEに組み上げられる人にはなりたいと思います。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。画像認識モデルを活用したアプリや、生成AIを業務に組み込むためのサービス「Gen2Go」の開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。