オープンソースと解析能力


そもそも、最近はオープンソースがかなり主流になってきているが、5年位前にオープンソースがここまでははやるとは思わなかった。
企業がここまでオープンソースに協力的になっていくとは思わなかったからだ。


なぜ、MySQLのようなオープンソースでビジネスを行う会社が出てきたかというのは、今までのオープンソースのプロダクトが実際に世の中に出てきて、どのような現象が起きるかという実験の結果のたまものだと思う。
では、どのようなことが分かってきたかというと、


オープンソースにしても、それを活用し、有効利用するには、現実にはそのプロダクトを作った人と同等、もしくはそれ以上の能力が要る』

ということだと思う。
ソフトウェア業界で働いている皆さんなら、感じているだろうが、プログラミングに必要な能力は大きく分けて、

・コーディング能力
・解析能力

の二つに分けられる。
コーディング能力とは、これから実現しようとする仕様に対してプログラミングを0から行う能力であり、解析能力は現在存在するソースコードを解析して、ソースコードからその動作や仕様を読み取る能力だ。

それで、この2つの能力だが、実は、解析能力の方がつけるのが難しい。

よく、現場でぐちゃぐちゃなソースコードを書く人がいるが、これはまさに、解析能力が欠けている証拠だ。
コーディング作業とは、コーディング→解析→コーディング→解析・・・の順に進めるとメンテナンスがしやすいプログラムができる。この場合の解析とは、別の言い方をすると自分の書いたものに対する評価だ。
これが出来ないと、コーディングは出来るが、人の書いたものと融合させることは出来ないプログラマが完成する。


僕の見る限り、解析能力を持っているプログラマは、プログラマの総数に比べてかなり少ないが、これが出来るようになると、物凄いメリットがある。
一つは、オープンソースのプロダクトを次々に改造して使えること。
これは、そういうことを出来る人が少ないし、一度作ったものは他の現場でも使えるケースがほとんどなので、かなり作業時間を減らせる。
もう一つは、プログラムを書くのがかなり早くなるということだ。また、人のプログラムを見ながら作業するのも非常に早くなる。変更が出ても、解析が頭の中でできているので、結構早く変更できるのではまりにくくなる。

欠点としては(欠点ではないかもしれないが)、プログラムが非常にほかの人が書いたのと比べて小さくなってしまうこと。
結構、ビジネスを行う上でこれは致命的かもしれない。