川合 秀実さんがSecHack365の掲示板に書いた文章が、とても良かったので、許可を得てこちらに転載した。
今まで他のコースやSecHack365全体のやり方などに配慮してあえて言わないできたけど、今日はそれをあえて書いてみようと思う。 とりあえず、こういう考えの人もいるんだなー程度に思ってほしい。これが絶対の正解というわけではない。というか正解はたぶん複数ある。だから好きな正解を選べばいい。
(1)他人の意見なんか聞く必要はない SecHack365では、いろんな人からいろんな意見がもらえる。それは駆け出しのころには得難いもので、だから非常に有益なんだけど、それを百も承知の上であえて言ってみる。 すべての開発は、第一に自分のためだけに作ればよい。自分のために作るのであれば、どうして他人の意見など必要だろうか。 よく聞く「みんなに使ってもらいたい」「ダウンロード数がもっと増えてほしい」は悪魔のささやきだ。そんなものに耳を貸してはいけない。 みんなのためと称して開発すると、たいていは「自分のニーズも満たさないし、かといって他人のニーズも満たしていない」という中途半端なものになる。 それはただのごみである(だって誰も使わないのだから)。そんなものを作ってはいけない。 だからまずは徹底して自分のニーズを満たさなければいけない。世界中で他に誰も使わないかもしれないけど、でも自分は絶対に使う、使いたい、というようなものにしなければいけない。むしろそういうものこそ、あなたによく似た誰かが喜んで使うようになる。 運が良ければ、すごくたくさんの人が使ってくれるようにさえなる。 とにかく、自分のニーズを完全に満たすまで、他人のニーズに耳を貸してはいけない。それは知らないうちにブレブレになるだけだから。
(2)とにかく自分の成果物を自分で使え 完成度を上げるためには、とにかく自分の成果物を使わなければいけない。私はかつて自作OSを作っていた。そのOSでできることはできるだけそのOSでやるようにしていた。 今、ES-BASICを書いているわけだけど、この言語のためにいくつものプログラムを書いている。昨日だってブロック崩しを書いた。 そうやってとにかく使うべきなんだ。使ってみないと、使い続けないと、どこが良くてどこが悪いのかなんてわからない。 自分のニーズに気づけない。だから使うべきだ。もし使う気になれないのなら、どうしたら使う気になるのかを考えて、その機能を大急ぎで実装するのだ。 そうしないと、この最低限のループ(自分で使う、その体験をもとに改良する)が始まらない。
(3)新規性なんていらない 自分の作品を他人に見せると、新規性はどこにあるのかみたいなことをよく聞かれるだろう。しかしそんなものは知らんといえばいいのだ(笑)。 新規性があろうとなかろうと私はこれを使うのだ。新規性が一つもなくていいから、とにかく自分に対して便利でなければいけない。 新規性が100個あっても、それらがどれも役立たずなら、一体それが何の役に立つだろう。誰がそんなもの使うだろう。だから新規性なんかいらない。 新規性の探求は研究者に任せておけばいい。私は本当に役立つものができればいいのだ。 もちろんそうやってひたすらに自分に対する利便性を追求していったその先に、たまたままだ誰もやっていなかった成果が出ることはたまにある。 つまり新規性を追い求めていなかったのに、新規性を獲得してしまったということだ。これは便利な新規性だ。 そのときの破壊力は言うまでもなく尋常ではない。
(4)それなら既存の〇〇でもできますよね こういうことをいわれると、むっとするかもしれない。しかし新規性を追い求めていないのだから、こうなることは避けられないと思ってほしい。 しかしむしろこういうことを言われたら、あなたのニーズは世間のニーズとあまりずれていないという証拠でもある。 そして競合がいくつあろうとも、そんなの気にしないで、あなたは自分の作品を使って改良を続ければいい。 こんなの〇〇の劣化コピーじゃねえかとか言われても気に病まなくていい。 そういうやつに限って、誰のニーズもみたせない(=自分すら使わない)ものしか作れないあわれなやつなのだ。 そして使い続けて改良し続けて、もし万一ちょっとでも追い抜いてしまったらどうなるだろう。 そうとも、大逆転だ。〇〇こそ、新規性のない終わった作品になり、あなたは一躍リーダーなのだ。 だから、既存の○○でもできますよねみたいなことを言われても、気にしないで我が道を突き進んでほしい。 あなたはまさに、技術革新の一歩手前まで来たということなのだから。
みんながもっと成長して、職業プログラマになり、お客様のために開発して、それでお金をもらうようになると、上記の原則は修正しなければいけなくなる。 でもそれまでは、上記の原則を守っているだけで、どんどん上達する。世間の流行りの言語や、プログラミングパラダイムなどを、勉強してキャッチアップする必要すらない (と私は思っている)。
関連