ソフトウェアプロダクトを作るということは、 現実世界のアナログな工程や事象を、デジタルな仮想世界に投射することだと私は感じています。
現実の実務でもマニュアル化などは進んでいますが、それでも多くの工程は、暗黙の了解や経験則に委ねられていることが多いと感じます。 しかし、デジタルの世界では、曖昧なものは表現しにくくなります。 (完全に不可能ではないにせよ、曖昧さをそのまま扱うには高度な工夫が必要です)
だからこそ、ソフトウェア化する際には、 現実の曖昧さを整理し、規定し、言語化することが不可欠になります。
ここで大切なのは、まず気づくことです。 作業や工程をよく観察し、いくつかの段階に分解して理解する。 そうすることで、初めてプログラムに落とし込むことができるようになります。
実際にその業務に慣れている人たちは、これらのプロセスを無意識にこなしていることが多いです。 だからこそ、客観的に観察する視点が重要です。 さらに、客観性だけでなく、ユーザー側の主観的な視点を持つこともまた欠かせません。
主観と客観、両方の視点を持ち、 それらを天秤にかけながらバランスよく整理していくことが、 現実をデジタルに落とし込む上で大切だと思います。
これまで、ソフトウェア開発の世界では、 デザイン・設計・プログラミング・評価といった専門的な手段自体に大きな価値が置かれてきました。
しかし、AIの進化によって、これらの工程は次第に一般化され、 専門性だけに依存する時代は終わりに近づいていると感じます。
スキルそのものが一般化していけば、当然、従来型の専門的スキルの価値は徐々に薄まるでしょう。
ただ、それでも変わらないものがあると私は思います。 それは、「情報」という本質的なものを扱う力です。
情報を整理し、理解し、構造化し、自動化する。 こうしたスキルこそが、今後ますます重要になっていくはずです。
これからのソフトウェアエンジニアは、 情報という抽象的な存在を捉え、適切に変換していける人であるべきだと、私は考えています。