空港で暇なので何か文章でも書こうという事で。

podcastなどでも度々話をしているが、ここ1年くらい掛けてお仕事で作っていた独自言語が割と使えるようになった。 リリースまでにはまだやる事がそれなりに残っているが、2年弱くらいで作ったとは言えそうだ。 これはコレクションからUnitTestのライブラリからパーサーから全て手作りで、結構大掛かりであり、実装の面でも色々な工夫が入っているし、 そもそもに実現しているものも、自分が作らなければ類似のものは無いくらいには新規性のあるものだ(独自言語なので当たり前だが)。 こういう、結構大きくて、自分が作らなければ世の中に無いものが、たった一人で生み出せる、というのは、結構凄いことだよなぁ。

一方で、2年くらい仕事でずっと一人で何かを作り続ければ、相当なものが作れる人は、世の中にはそれなりにたくさんいるんんじゃないか。 自分と同世代のプログラマの友人達なら、大体はそれが可能な能力を持っているだろう。 プログラマなら誰でも出来るという程簡単なことではないが、LinusやMatzのような本当に一握りの特別な人だけという訳でも無いと思う。 それなりに良い企業なら、中程度の規模の企業でも、そういうプログラマを二桁くらいは抱えていても不思議では無い。

だが、そうしたプログラマがそうやってそれなりの大きさの全く新しいものを生み出す事はどれくらいあるだろうか?というと、あまり無い気がする。 そういうプログラマを2年くらい勝手に何かを作らせる、というのは、あまり行われていないように思う。 何かのプロジェクトがあって、そこで大きなアウトプットを出している、というのが大多数の働き方では無いか。 そうした多くのプロジェクトでの各プログラマのアウトプットというのは、多くの場合それほど大きく何かを変えるものではないことが多いように思う。

一方で一人のプログラマに2年くらいかけてなんか作らせると、大きく新しいものは出来る。 その多くはビジネスとしては全然成功しないだろうから、みんながいつもそういう事をしているのは良くないだろう。 けれど企業はたまにはそういう事もやった方がいいんじゃないか。

多くの現在それなりに成功しているTech企業は、自身のちゃんと利益が出るプロジェクトがあり、それから利益をえている。 だからその為に多くの人を割り当てて進めていくのは必要な事だと思う。 けれど、そういうのをただ続けていくだけでは多くの企業はやがて衰退を迎える、とも思っているんじゃないか。 ずっと同じ事をして稼ぎ続ける事が出来る、という類の業界では無いというのは、多くの人が同意してくれる事に思う。

だからある程度のリソースは、2年くらい何か新しいものを作らせてみる事に割いた方がいいように思う。 失敗する事も多いだろうけれど、そういう中には成功するものもそれなりにあるんじゃないか。 けれどそうした試みは、たぶんこのくらいはやった方が良さそうだと思う感覚よりもだいぶ過小になっている気がする。

研究としてなんか人を遊ばせて好きな事をやらせている、という組織はあるが、これはあまり上手く行ってない気がする。 あまり大きい新しいものが出来る事は無い気がするから。やるべきは研究じゃないと思うんだよな。

それよりも現場で働いてるプログラマに二年くらい何か好きなもの作らせる方がいいと思うんだよな。 全員にやらせる必要は無いと思うけど、3 人に一人くらいの割合でやらせてもいいような気がする。 こっちの方が大きいものが出来やすいように思う。

プログラマにとっても、一人のプログラマが出来る事の最大値について、もっと試す機会があった方が良いと思う。 やはりやってみないとどれくらいの事が出来るのかは分からない。 そして一人の人が数年掛けてどれくらいの事が出来るかを見る機会がそれなりに多くなれば、一人のプログラマの出来る事、という認識もだいぶ現実に即したものとなると思うが、 それは現在思われてるよりもずっと大きいと思うんだよな。

自分一人で、これが良い、と思って作るのは、究極の開発手法だと思う。もっとも生産性が高く、生産性という言葉では比較出来ない新規性もずっと高まる。 この手法には多くの欠点もあるのでメインで使うのは上手く行かない気もするが、理想的な状態ではどれだけのモノがどのくらいのペースで作れるのかを皆が知れば、普段の開発でもその差分を意識してより良い開発も行えるんじゃないか。

一人のプログラマが生み出せる最大値みたいなのを知っておくのは、起業とかにも有利に働くと思うので、業界としても利益があると思う。 実際今回自分が作ってるものは、出来てみるまで本当に一人で作れるかは良く分かってなかった。 実際にここまで作ってみて初めて「なんだ、一人で出来るじゃん」と思った感じだ。 普段から一人で趣味で好き勝手にものを作ってる自分でも、一人で2年くらい掛けて本気だすとどれだけのものが作れるか分かってないのだから、その結果は世の中の大半のTech業界の人間を驚かすようなものになるんじゃないか。

多人数で物を作るのに慣れてくると、一人の人間が作れるものを過小評価しがちに思う。 むしろ多人数で作れるように作り方を考えてしまうため、一人で作るならもっと違うやり方がいろいろ出来ることも忘れてしまっていたりする。

何より、一人のプログラマに二年くらい与えて好きに作らせると、なかなか面白いものが出来る。 チームで作ると、どうもどこかで見た事あるようなありきたりなものや、既存のものに平凡に考えつくような事を足してしまいがちで、 あまり面白いものが出来ない。 それは局所最適に陥ったcomfort zoneから抜けられていない状態とも言えるだろう。

日本にたくさんある良いTech企業が、面白いワクワクするものをバンバン作ったら、なんかそれはいい感じになるんじゃないか、という気がする。 (別に日本に限る理由も無いが)

プログラムの世界では、「なんでこういうのが無いんだろう?まぁまぁ作るのは大変だがやれば出来ると思うんだが。」というものは結構多い。 そのうちの幾つかは作ってみるとこれまで作られてこなかったもっともな理由があって作ってもいまいちだが、 そのほかの幾つかはコストが掛かるから単に誰も作ってないだけで、作ってみればとても良い、という物もある。

そういう作るのはそれなりに大変だが、やれば出来るあったら良いもの、とか、もっとプログラマに作らせてみてもいいんじゃないか。