先に下に書いた気づきは、ChatGPTみたいなAIがコードを書くようになることと関係があるかなとふと思った。
最初にAIが書けるようになるコードはソフトウェアの下位層に当たる部分、知識に基づく部分だからAIには始めやすい。僕が担当している上位層のコードを書けるようになるのはその後だろうと思う。
話は変わって、僕はどうやったらソフトウェアの上位層を担当してくれる人を増やせるかと常々思っている。なぜなら僕は下位層の仕事をしたいから。それで先日ウェブを検索していて良さそうな本を見つけた。早川書房から出版されている『観察力を磨く 名画読解』という本。方向は合っていると思う。
この三連休はとってもありがたい。休むことができる。
僕はいつもソフトウェアの上位層のコードを書いているのだが、先日同僚のソフトウェアの下位層を作っている人に話を聞いたあとに、ソフトウェア開発といっても上位層と下位層では大きな違いがあることにふと気がついた。
僕が担当する層はOSやコンピュータから遠く離れた高機能フレームワーク(ERP5)の上に乗る部分、そこではフレームワークの深い技術的知識は要るものの、最も重要なのは知識ではなくて考えること。ソフトウェア化したい対象(商品や業務)の本質を抽出してそれを自然な形に抽象化することが必要で、自然な形を作ることで矛盾がなくどこまでも拡張可能なプログラムを作れる。自然界には矛盾はなくて、矛盾は常に人間の頭の中にだけあるから。生物の分類表とか元素の周期表を発明するのに似ていると思う。こうしたら対象の本質を抽出できますよ、みたいなやり方がまだ確立していないので一々自分でよく考えるしかない。考えることは他人に教えることができないので、考えることは自分の中だけに閉じてしまう。だから、技術カンファレンスで話せるネタにならない。
ソフトウェアの下位層、OSやコンピュータに近い部分のプログラムを書くときにはたくさんの具体的な知識が必要になる、なぜなら良いやり方が既にたくさん発見されて発表されているので、そういう既知のやり方を自分も使えば作りたいものが作れるからだ。たくさんの有用なアルゴリズムや手法を知識として蓄えて、そこから適切なものを選んで、それに基づいて実装すればいい。そしてたくさんの良い手法がある中でより良い手法を新しく発見できる人はとても優秀。アルゴリズムや手法は他人に教えることができるので技術カンファレンスで話せるネタになる。
ずーっと、何も技術カンファレンスで話せるネタが僕には無いんだよなあ、つまんないなあ、と思っていたのだが、今回その理由がはっきりと分かったのでそれは良かった。僕もコンピュータが好きなので、いつかOSやコンピュータに近い部分のプログラムを書ける立場に戻りたい(泣)